SlideShare a Scribd company logo
1 of 62
Download to read offline
Fork CMS
  Developers!
hashtag: #forkmeetup
wifi: VergaderNet, wachtwoord:
           ventilatie
I’m Dieter @dieterve
This is Davy
@bauffman
In depth
Content
‣   Applications
‣   Backend
‣   Frontend
‣   API
‣   Modules
Content
‣   Applications
‣   Backend
‣   Frontend
‣   API
‣   Modules
Content
‣   Applications
‣   Backend
‣   Frontend
‣   API
‣   Modules
Content
‣   Applications
‣   Backend
‣   Frontend
‣   API
‣   Modules
Content
‣   Applications
‣   Backend
‣   Frontend
‣   API
‣   Modules
applications - backend - frontend - api - modules




Frontend   Backend                      API


            Library
applications - backend - frontend - api - modules




Applications
‣   1 for each purpose
‣   Clean separation between apps
‣   Possible overlap (causing overhead)
applications - backend - frontend - api - modules




Structure
‣   Core
‣   Modules (some required)
‣   Based on MVC
‣   Limited template logic
applications - backend - frontend - api - modules




Core
‣   Routing
‣   Templates
‣   Authentication
‣   Forms
‣   ...
applications - backend - frontend - api - modules




Modules
 actions
 ajax
 cronjobs (backend only)
 engine
 installer (backend only)
 js
 layout
    templates
    widgets
 widgets
applications - backend - frontend - api - modules




Library
‣    Global configuration
‣    External classes
    ‣ Google analytics

    ‣ Facebook

    ‣ Akismet

‣   Spoon Library
applications - backend - frontend - api - modules




Spoon Library
‣   PHP5 library
‣   Basic components
‣   UTF-8 support
‣   Unit tested
‣   Open source (github)
applications - backend - frontend - api - modules




Error handling
‣   SPOON_DEBUG true / false
‣   Exceptions
‣   PHP errors / warnings / ...
applications - backend - frontend - api - modules
applications - backend - frontend - api - modules




Backend
‣    Content management
‣    Authentication
    ‣ Only logged in users

‣    Module driven
    ‣ Semi clean url’s (GET)
applications - backend - frontend - api - modules




Core
‣   Router
    ‣ Loads module based on URL

    ‣ http://<site>/private/en/module/

      controller?param=value
‣   Authentication
    ‣ Action level
applications - backend - frontend - api - modules




Core
‣    Basic layout
    ‣ Datagrids

    ‣ Forms

    ‣ Tabs

    ‣ Filters
applications - backend - frontend - api - modules
applications - backend - frontend - api - modules
applications - backend - frontend - api - modules




Base classes
‣    Base for actions
‣    Less monkey jobs
    ‣ Success/error reporting

    ‣ Autoloading js/css

    ‣ Choosing template

    ‣ ...
applications - backend - frontend - api - modules




Reporting
applications - backend - frontend - api - modules




Autoloading JS / CSS
‣   <module>.js
‣   <action>.js
‣   <action>.css
applications - backend - frontend - api - modules




Specific base classes
‣    index / add / edit
‣    BackendBaseActionAdd
    ‣ create and display form

‣   BackendBaseActionIndex
    ‣ create and display datagrid

‣   All you have to do is add data
applications - backend - frontend - api - modules




Backend navigation
‣    Per module (by installer)
‣    Flexible
‣    Not limited to module context
    ‣ settings
applications - backend - frontend - api - modules




Autoloader
‣   BackendAnalyticsContent
‣   BackendAnalyticsModel
‣   BackendAnalyticsHelper
applications - backend - frontend - api - modules




Directory structure
 actions
 ajax
 cronjobs
 engine
 installer
 js
 layout
    templates
    widgets
 widgets
applications - backend - frontend - api - modules




Action
‣   Controller
‣   Interface for the user
‣   Index / add / edit / delete / ...
‣   Extends from base class(es)
‣   Navigation links to action
applications - backend - frontend - api - modules




Layout / template
‣   View
‣   Action template
‣   <action>.tpl
‣   SpoonTemplate syntax
applications - backend - frontend - api - modules




Engine
‣    Model
    ‣ Class with static methods

    ‣ Handles database interaction

‣   Helper
    ‣ Can be anything
applications - backend - frontend - api - modules




Ajax
‣   Controller
‣   Own base class
‣   Authentication
‣   Json output
applications - backend - frontend - api - modules




Cronjob
‣   Controller
‣   Own base class
‣   No authentication
‣   Collisions
‣   Command line or HTTP
applications - backend - frontend - api - modules




Installer
‣   Set rights
‣   Set navigation structure
‣   Set extra’s (create pages, ...)
‣   install.sql
‣   locale.xml
applications - backend - frontend - api - modules




Frontend
‣    The website
‣    Visitors
    ‣ Guests

    ‣ Registered visitors

‣   Page driven (http://<site>/page)
applications - backend - frontend - api - modules




Frontend
‣    2 types of controllers
    ‣ Action: 1 per page (route dependant)

    ‣ Widget: * per page

‣   Defined in pages module
‣   All about pages
applications - backend - frontend - api - modules




Pages
‣    1 page = 1 template
‣    1 template = * blocks
‣    Block
    ‣ Action

    ‣ Widget
1
Blocks in
de
template...   2



              3


              4       5

                      6
                  7
applications - backend - frontend - api - modules




Pages
applications - backend - frontend - api - modules




Core
‣    Routing
    ‣ action to execute

    ‣ widget(s) to execute

    ‣ based on the current page
applications - backend - frontend - api - modules




Minify
‣   SPOON_DEBUG = false
‣   minified.css
‣   Custom js / css = auto
applications - backend - frontend - api - modules




API
‣   XML
‣   JSON
‣   Authentication possible
‣
    /api/1.0/?
    method=<module>.<function>&param=value..
applications - backend - frontend - api - modules




API
‣   BackendBlogAPI
‣   Public functions
‣   Parameter validation
applications - backend - frontend - api - modules




Search
‣   Index pool
‣   Fields defined per module
‣   Callback per module
applications - backend - frontend - api - modules




Add to index
applications - backend - frontend - api - modules




Callback
applications - backend - frontend - api - modules




Tags
‣   Create textbox



‣   Save after validation
applications - backend - frontend - api - modules




Tags
applications - backend - frontend - api - modules




Tags
applications - backend - frontend - api - modules




Meta
‣   Again 1 pool
‣   SEO
‣   Almost every module needs it
applications - backend - frontend - api - modules
applications - backend - frontend - api - modules
applications - backend - frontend - api - modules




Meta
‣   Create form


‣   Validate


‣   Save
applications - backend - frontend - api - modules




Locale
‣   Multi language
‣   Maintainable by backend user
‣   Split between applications
applications - backend - frontend - api - modules




Locale - backend
‣   Split between modules
‣   Fallback to core
applications - backend - frontend - api - modules




Locale - frontend
‣   1 pool
Questions?
www.fork-cms.com

 info@fork-cms.com
twitter.com/fork_cms

More Related Content

Viewers also liked (8)

Fork CMS Iphone app
Fork CMS Iphone appFork CMS Iphone app
Fork CMS Iphone app
 
กุญแจประจาหลัก (Clef)
กุญแจประจาหลัก (Clef)กุญแจประจาหลัก (Clef)
กุญแจประจาหลัก (Clef)
 
Fork Overview
Fork OverviewFork Overview
Fork Overview
 
Trends voor lokale websites
Trends voor lokale websitesTrends voor lokale websites
Trends voor lokale websites
 
Fork 4 Frontenders
Fork 4 FrontendersFork 4 Frontenders
Fork 4 Frontenders
 
Fork Meetup - introduction
Fork Meetup - introductionFork Meetup - introduction
Fork Meetup - introduction
 
The middle ages
The middle agesThe middle ages
The middle ages
 
ใบความรู้ร้องเพลง
ใบความรู้ร้องเพลงใบความรู้ร้องเพลง
ใบความรู้ร้องเพลง
 

Similar to Fork CMS: Discussing Applications, Backend, Frontend, API and Modules

Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile AppsGet your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile AppsAckee
 
UI5con 2017 - UI5 Components - More Performance...
UI5con 2017 - UI5 Components - More Performance...UI5con 2017 - UI5 Components - More Performance...
UI5con 2017 - UI5 Components - More Performance...Peter Muessig
 
Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Jonas Bandi
 
Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patternsAlbert Brand
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with CodeceptionJeremy Coates
 
Introduction to Palm's Mojo SDK
Introduction to Palm's Mojo SDKIntroduction to Palm's Mojo SDK
Introduction to Palm's Mojo SDKBrendan Lim
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'sAntônio Roberto Silva
 
Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Yuji Takayama
 
Building Web Applications with Zend Framework
Building Web Applications with Zend FrameworkBuilding Web Applications with Zend Framework
Building Web Applications with Zend FrameworkPhil Brown
 
Introduction to YII framework
Introduction to YII frameworkIntroduction to YII framework
Introduction to YII frameworkNaincy Gupta
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework BasicMario Romano
 
Build Database Applications for SharePoint
Build Database Applications for SharePointBuild Database Applications for SharePoint
Build Database Applications for SharePointIron Speed
 
Build Database Applications for SharePoint!
Build Database Applications for SharePoint!Build Database Applications for SharePoint!
Build Database Applications for SharePoint!Iron Speed
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platformNelson Kopliku
 
企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践Jacky Chi
 
Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011leo lapworth
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous deliveryEatDog
 
Google app-engine-with-python
Google app-engine-with-pythonGoogle app-engine-with-python
Google app-engine-with-pythonDeepak Garg
 

Similar to Fork CMS: Discussing Applications, Backend, Frontend, API and Modules (20)

Fork CMS
Fork CMSFork CMS
Fork CMS
 
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile AppsGet your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
 
UI5con 2017 - UI5 Components - More Performance...
UI5con 2017 - UI5 Components - More Performance...UI5con 2017 - UI5 Components - More Performance...
UI5con 2017 - UI5 Components - More Performance...
 
Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!
 
Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patterns
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
 
Introduction to Palm's Mojo SDK
Introduction to Palm's Mojo SDKIntroduction to Palm's Mojo SDK
Introduction to Palm's Mojo SDK
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
 
Micro frontend
Micro frontendMicro frontend
Micro frontend
 
Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012
 
Building Web Applications with Zend Framework
Building Web Applications with Zend FrameworkBuilding Web Applications with Zend Framework
Building Web Applications with Zend Framework
 
Introduction to YII framework
Introduction to YII frameworkIntroduction to YII framework
Introduction to YII framework
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework Basic
 
Build Database Applications for SharePoint
Build Database Applications for SharePointBuild Database Applications for SharePoint
Build Database Applications for SharePoint
 
Build Database Applications for SharePoint!
Build Database Applications for SharePoint!Build Database Applications for SharePoint!
Build Database Applications for SharePoint!
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platform
 
企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践
 
Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
Google app-engine-with-python
Google app-engine-with-pythonGoogle app-engine-with-python
Google app-engine-with-python
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 

Fork CMS: Discussing Applications, Backend, Frontend, API and Modules