Worklog for task "Migrate the website to a new engine"
Legacy baseline launched locally
Managed to get the old pivkarta.ru running locally — Docker really helped preserve reproducibility even years later. At the same time, it became very clear how large a historical layer has accumulated in the current architecture.
Some characteristic baseline components:
- build image:
mhart/alpine-node:10— Node.js 10; - Docker Compose
3.7; prismagraphql/prisma:1.15.3(Prisma 1) as a separate service between the application and the DB;- MySQL
5.7; - separate
frontandapicontainers from a common oldprisma-cms; - separate
pivkarta.ru-2frontend; - phpMyAdmin;
- custom Caddy proxy;
- MailHog;
- separate
rtcmultyconnection; - Coturn with STUN/TURN infrastructure.
That is, this is no longer just a task of updating a few npm packages: we have a solid, real-world brownfield with layers of solutions from different years and a large amount of infrastructure, some of which may turn out to be necessary, and some — historical baggage.
For the HAIH experiment, this is especially useful. We will not mechanically migrate this zoo to modern versions. The old project becomes a source of requirements and behavioral baseline, rather than a specification for the new architecture. For each layer, we need to figure out: what real capability does it provide now, is it needed by pivkarta.ru today, and what minimal verifiable solution satisfies this requirement.
The first planned new vertical slice remains simple: keep the existing MySQL as a legacy persistence boundary and go through React → Apollo/codegen → GraphQL/Pothos → Knex → existing MySQL. This will allow starting to displace the old system with working verticals, without starting with a risky data migration and without carrying over Prisma 1 just because it is present in the legacy.
Related HAIH experiment: haih.site and task «Develop and launch the website». Current pivkarta.ru task: /tasks/cmqqxckd3003zp50up0dmzbld.