ZombieLand

Product OwnerLead Back-end

Amusement park booking platform — 4 repositories, Stripe payments, QR code tickets, and a centralized logging microservice.

React 19Express 5Prisma 6PostgreSQL 17StripeDockerElasticsearchJWT
ZombieLand preview

Context

Final project for the CDA certification (RNCP Level 6). Built in a team of 4 over ~1 month.

A fictional French amusement park needed to digitize its manual ticketing system to reduce operational load and improve user experience.

My role

Product Owner · Lead Back-end

I managed the team daily — standups, sprint planning, prioritization — while designing and building the entire back-end architecture. I also set up Redux Toolkit for the team and built the full admin back-office.

What I built

Design

conception
  • Architecture of a 4-repository system (API, frontend, logging service, upload service)
  • Database schema modeled with Merise (MCD, MLD, MPD)
  • Sequence diagrams for key flows — auth, payment, QR scan (PlantUML)
  • Agile methodology — 4 sprints, daily standups, sprint planning, prioritization
  • Led a team of 4 to deliver all features within the deadline

Frontend

  • Redux Toolkit setup for the team
  • Admin back-office for full park management

Backend

  • Prisma ORM setup — schema design, migrations, seeding
  • JWT auth — access + refresh tokens, HTTP-only cookies, automatic token rotation
  • QR code generation per confirmed order (signed JWT, scannable at entry)
  • Email flows — registration confirmation and password reset (Nodemailer)
  • Base controller with reusable CRUD routes, rate limiting, input sanitization, centralized error handling
  • Global test setup for integration tests — real PostgreSQL instance, full HTTP lifecycle

Microservices

  • Upload service — AdonisJS 6 + Lucid ORM + Japa tests, handles all activity image management
  • Logging service — Express + Elasticsearch 8.15 + Kibana, receives Winston transports, persists NDJSON daily files, indexed and visualized in Kibana behind Traefik Basic Auth

DevOps

  • Multi-stage Alpine Docker builds on all 4 services
  • Deployed on VPS via Dokploy — git push triggers auto-deploy
  • Unit + integration tests (Node.js built-in runner, Vitest 3.2 + Testing Library)
  • Husky hooks — pre-commit: lint + unit, pre-push: integration + frontend

Deployment

Deployed on VPS via Dokploy — git push triggers auto-deploy on all 4 services simultaneously. Multi-stage Dockerfiles (Alpine, non-root users) on every service. Kibana exposed via HTTPS through Traefik with Basic Auth (htpasswd, dynamic config).

CDA title obtained — confirmed April 2026. Project validated by jury. Demonstrates team leadership, full back-end architecture design, and delivery under deadline with a team of 4.