Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Endroid Symfony Application

1,270 views

Published on

Standard project for building web applications, built on symfony-standard and extended with stable and actively maintained libraries, out-of-the-box components and a demo environment showing a fully working sample project.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Endroid Symfony Application

  1. 1. endroid/symfony-application
  2. 2. ● A standard for building applications ● Built on symfony-standard ● Additional out-of-the-box functionality What is it? What it is not ● It is not a CMS ● It does not use CMF or ODM
  3. 3. Goals ● Speed up development process ○ application should work out-of-the-box ○ provide default optional functionality ● Improve maintainability ○ minimize self-built code ○ build on stable and actively maintained libraries ● Stimulate code reuse ○ building blocks are decoupled ○ add new features to demo ● Manage expectations ○ demo environment and light documentation
  4. 4. ● Build something that works (1.0.0) ○ make concessions ○ accept that it not perfect ○ fulfill only basic needs ● Polish and extend (1.x) ○ fix bugs and write tests ○ improve performance and quality ○ turn high quality reusable code into vendor ■ afterwards to avoid cumbersome work How to get there
  5. 5. 0.1 - Symfony Standard Edition 0.2 - Admin 0.3 - User management 0.4 - Menus and internal links 0.5 - Entities and behaviors 0.6 - Multilanguage 0.7 - Search 0.8 - Out-of-the-box functionality 0.9 - Other tools and libraries 1.0 - Demo environment Roadmap to 1.0
  6. 6. 0.1 - Symfony Standard Edition ● Symfony Standard Edition 2.3 ○ LTS : supported until May 2016 ● Remove Acme* ● Configuration changes ○ Enable ESI ○ Enable APC ○ Enable CSS and JS compression ● Result ○ 404 - No route found for “GET /” ○ Ready to go!
  7. 7. 0.2 - Admin ● SonataDoctrineORMAdminBundle ○ loads of features ○ adhere to standard functionality ○ extend through configuration ● Symfony CRUD ○ more freedom ○ much less out-of-the-box functionality
  8. 8. 0.3 - User management ● FOSUserBundle ○ basic user management ● SonataUserBundle ○ integrate user management in sonata ● EndroidUserBundle ○ define custom entities ○ not a vendor ● Plain text passwords are plain silly ○ ElnurBlowfishPasswordEncoderBundle
  9. 9. 0.4 - Routing and menus ● SEO URLs via sluggable behavior ○ no landing pages or alternative URLs yet ● No direct mapping of entities to routes ● Route collector / provider mechanism ○ bundles implement route provider ○ collector aggregates routes ■ enables internal linking and menu building ● KnpMenuBundle ○ builds the menus from menu items ● Works but needs improvement
  10. 10. 0.5 - Entities and behaviors ● Interfaces ○ publishable, sluggable, sortable, timestampable, translatable, traversable etc. ● Listeners to effectuate behaviors ● Sonata Admin extensions ● ORM Filters (switch on/off) ● Combining behaviors ○ multiple inheritance is impossible ○ traits can be used to implement multiple behaviors ■ disadvantage: requires PHP 5.4 ■ PHP 5.3 => just copy trait code over and over
  11. 11. 0.6 - Multilanguage ● I18nRoutingBundle ○ choose between domain or /<lang> as base ○ alternative routes per locale: /search, /zoeken ○ language switch (via _locale parameter) ● Entity uses translatable behavior ○ TranslatableInterface / TranslationInterface ○ you decide which fields are translatable ● Translatable admin extension ○ linked via configuration ● Language switch ○ entities need extra template logic at the moment
  12. 12. 0.7 - Search ● ElasticSearch ○ Built on Lucene ○ Functionally comparable to Solr ■ Faceting (categorized filtering) ■ Spatial search (distance based) ■ Sharding (multiple nodes) ○ Somewhat more lightweight ○ Better integration in Symfony than Solr (atm) ○ Clean separation of entity and search configuration
  13. 13. 0.8 - Out-of-the-box functionality ● Admin + users + media ● Front end layout - Twitter Bootstrap 3.0 ● Main + footer menu ● Home page ● Text pages ● News detail + overview + pagination ● Contact form ● Search + results ● Sitemap ● Fixtures for creating dummy content
  14. 14. 0.9 - Other tools and libraries ● NetvliesFormBundle ● PHPExcel / PHPWord ● KnpSnappyBundle (PDF generation) ● TinymceBundle ● LadybugBundle (debugging) ● KnpPaginatorBundle ● DoctrineFixturesBundle ● DoctrineMigrationsBundle
  15. 15. 1.0 - Demo environment ● Demonstrates all mentioned functionality ● Deployment ○ code update and data reset every night ● Open to public ○ including admin area ○ free testing audience ○ stimulates (re)use and contributions ● Whereabouts ○ symfony-application.endroid.nl ○ admin: /admin/dashboard (admin / admin) ○ source: github.com/endroid/symfony-application.git
  16. 16. ● Access control ● MzMailChimpBundle ● Admin dashboard ● Redirects / landing pages ● FpOpenIdBundle ● Automated tests ● Support for ODM 1.x - Further development
  17. 17. Good news everyone! symfony-application.endroid.nl symfony-application.endroid.nl/admin/login We have a working demo!

×