A rapid overview on how de built http://gogobus.it from scratch, deciding to use Symfony2, Amazon AWS, RabbitMQ and LAMP stack.
Which solutions we adopted and why, and some hacks in "show me the code" style.
3. Development started in mid February 2015
Online on April the 30th
First bookable ride on May the 14th
4. 16
May
1
Jun
25
Jun
30
Jun
Bob buys the first ticket, 24€
ride is confirmed
ride is closed
bus leaves
other 10 people buy tickets, < 24€
final price of 16€ is calculated
users can buy tickets, 16€
30° traveller buys a ticket, 24€
11. Other stuf
Supervisor
1 always-running command on server (Symfony command)
1 consumer on server
Stripe (PHP SDK)
HWIOAuthBundle (Facebook login)
GitHub
Slack integration
21. I wish I had done
use JMSDiExtraBundle
dedicated $em with entities mapping because a single log
flushes ALL entities
separate the always-running command in a bundle
use AWS SDK PHP from the beginning
better environments separation
22. I learned
Remember to code for the 10% of the most problematic logic
Divide and Conquer from the very beginning
No fear for services: they are your best friends
Create specific Excepion classes as you need
23. Next
API (FOSRestBundle, Kong)
IOS App
Decouple RabbitMQ server and consumer
Better logs handling
Refactor the always-running command
ESI
Symfony Gateway Cache, Varnish