$30 off During Our Annual Pro Sale. View Details »

Building cllctr

Building cllctr

Building a web app seems easy, especially in php. Put everything in the index.php, upload it on a shared host with ftp and you are good to go. There are other ways, though. Use composer, write tests and develop with Vagrant. Have a build tool, use Continuous Deployment and ansible to set up the staging/production servers. All this is shown using the real project cllctr!

Sebastian

April 17, 2015
Tweet

More Decks by Sebastian

Other Decks in Programming

Transcript

  1. Building cllctr
    ViennaPHP, 2015
    @Sgoettschkes

    View Slide

  2. A confession

    View Slide

  3. I am addicted to
    learning!

    View Slide

  4. http://pixabay.com/get/6a30de7e80f92ac2e080/1428949744/colored-163805_1280.jpg

    View Slide

  5. Execute!
    http://pixabay.com/get/07c852119f06b5ba8362/1428949931/suit-673697_1280.jpg

    View Slide

  6. A normal day
    ● Add new feature
    ● Improve existing feature
    ● Hunt a bug
    ● Fix this bug
    ● Meetings
    ● Foosball
    ● ...

    View Slide

  7. When do you...
    ● … think about new ways to do things?
    ● … improve old solutions?
    ● … test new tools?
    ● … learn?

    View Slide

  8. When do you...
    ● … think about new ways to do things?
    ● … improve old solutions?
    ● … test new tools?
    ● … improve?

    View Slide

  9. cllctr

    View Slide

  10. cllctr

    View Slide

  11. cllctr

    View Slide

  12. The stack
    ● PHP & Javascript & CSS & HTML
    ● MongoDB & redis
    ● Nginx & php-fpm
    ● Linux (Debian)

    View Slide

  13. PHP
    symfony/symfony

    View Slide

  14. PHP
    doctrine/mongodb-odm
    (MongoDB)

    View Slide

  15. PHP
    snc/redis-bundle

    View Slide

  16. PHP
    plumphp/plum

    View Slide

  17. PHP
    league/commonmark

    View Slide

  18. PHP
    phing/phing

    View Slide

  19. PHP
    phpunit/phpunit

    View Slide

  20. PHP
    phploc, phplint, phpmd, php-cs-fixer, ...

    View Slide

  21. Javascript
    npm
    (package manager for frontend packages)

    View Slide

  22. Javascript
    grunt
    (“phing for nodejs”)

    View Slide

  23. Javascript
    jQuery + modernizr
    (not ideal, but a good start)

    View Slide

  24. Javascript
    uglifyjs, imagemin
    (not ideal, but a good start)

    View Slide

  25. Css
    Sass

    View Slide

  26. Css
    Zurb Foundation
    (like Bootstrap)

    View Slide

  27. MongoDB
    Schema-less document store

    View Slide

  28. redis
    In-Memory Key/Value Store

    View Slide

  29. Nginx + php-fpm
    or Apache + mod-php

    View Slide

  30. Debian
    Stable, well-known, “easy”

    View Slide

  31. “DevOps”
    Vagrant
    (shareable dev environment)

    View Slide

  32. “DevOps”
    ansible
    (Server provisioning for developers)

    View Slide

  33. “DevOps”
    CodeShip
    (Continous Deployment as a Service)

    View Slide

  34. “DevOps”
    GitHub

    View Slide

  35. Operations
    DigitalOcean
    Monitory
    Dead Mans Snitch
    WebPageTest

    View Slide

  36. Mindset
    Clean Code

    View Slide

  37. Mindset
    Testing

    View Slide

  38. Mindset
    Improving

    View Slide

  39. Mindset
    Fuck it, ship it!
    (Done is better than perfect)

    View Slide

  40. Mindset
    One step
    … to local development env
    … to build
    … to deploy

    View Slide

  41. Mindset
    Have fun!

    View Slide

  42. Look at the code:
    https://github.com/agileaddicts/cllctr
    https://github.com/agileaddicts/ansible-playbooks

    View Slide

  43. Read more:
    http://sgoettschkes.me/p/developing-cllctr.html

    View Slide

  44. Thanks!

    View Slide