legacy · php, zend framework, mysql
PHP and MySQL: a Zend Framework platform that's still live.
For many years I was in the core team of a restaurant guide for Germany and the back office its restaurants use. The platform belongs to a restaurant-tech provider and runs on PHP, Zend Framework and MySQL. I'm not taking on new PHP projects.
- Stack
- PHP, Zend Framework, MySQL
- Platform
- A restaurant guide and a back office for restaurants
- My part
- Many years in the core team
- Status
- Still live
- Next to it
- Node.js and NestJS services on the same database
- New PHP projects
- Not at the moment
What the platform does
- For guests: a restaurant guide for Germany, with restaurant pages, reviews, photos, menus, events, and pages for every city and region.
- For restaurants: a back office with table reservations, vouchers and event tickets, a menu builder, a website builder with the restaurant’s own domain, a white-label app with push messages, guest feedback, statistics and a monthly statement.
- For apps and partners: an API for the mobile apps and the widgets on restaurant websites.
Keeping an old system alive
What kept the platform running all these years was a long line of small steps: upgrades to new PHP and MySQL versions, framework updates, a move to the cloud, and slow queries made fast again. It never needed a rewrite.
New services next to the old platform
The provider’s newer products are separate services on the same MySQL database. The reservation app talks to a Node.js backend, and the WhatsApp AI assistant is a NestJS backend. A reservation made on WhatsApp ends up in the same place as every other one.
That’s the route I’d suggest for any old system that still does its job: leave it where it is, and build what’s new beside it, on the same data.
Questions
Do you take on PHP projects?
Not at the moment, neither new builds nor existing PHP apps. I build new backends with NestJS and Postgres.
Can a new service work with our existing MySQL database?
Yes. I build the new service in NestJS and connect it to the database you already have. That's how the WhatsApp assistant works with this platform. The PHP code stays with your team.
MySQL or Postgres?
Postgres for anything new, because it also handles queues and vector search. An existing MySQL database stays where it is, and new services connect to it.