One compose file, seven services
nginx, PHP, Vue SSR, MySQL, Redis, Memcached, and the queue now come up from one file. A fresh checkout is three commands.
Updates about work, the stack, and the site. Longer posts when a topic needs more space.
nginx, PHP, Vue SSR, MySQL, Redis, Memcached, and the queue now come up from one file. A fresh checkout is three commands.
The document is English, Russian, or German. Not all three. Language change is a new URL, not a second dictionary in the heap.
Login, register, logout, and the current user live under /api. The token is httpOnly auth_token. It never lands in localStorage or in the JSON body.
The stack already had two memory stores. Each one now has one job. HTML lives in Memcached. Queues, sessions, and rebuild locks live in Redis.
JS and CSS with a content hash get a long max-age. The document that points at those hashes revalidates after every deploy.
A long job cannot delay a cron tick. A deploy restarts the worker so new jobs never run on old classes.
Surfaces, text, buttons, and links read CSS variables. The theme switch flips one attribute on the root. Component colors are gone.
News, notes, and cases store three HTML bodies in JSON. The grid needs titles and excerpts. It does not need the article.
LaraBoom finds Path classes by attributes. There is no host routes folder to keep in sync. JSON stays under /api.