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

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
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
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
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
 
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
 

Recently uploaded (20)

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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)
 
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
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
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
 
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
 

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