Skip to content
Thái Hoàng Mai Học

hoc.thaihoangmai.work@gmail.com

All projects

06/2024 – 08/2025, Tiên Phong CDS for NovaService

Role
Project Manager and Backend Leader
Team
10 people, 20 man-months
Users
5,000+
Website
ticket.novadreams.com.vn

Business goal

Ticketing for the NovaDreams amusement parks (Nova Service Group): online tickets and combos, bus seat selection, QR ticket checks and order sync with EzTicket.

Ticketing for the NovaDreams amusement parks of Nova Service Group. Customers book tickets and combos and pick bus seats on the web, drivers check tickets by QR code, agents have their own portal, and orders sync to EzTicket and the group’s SAP.

Main modules

  • Booking web: parks, services, combos, bus seat selection, cart, invoicing, tickets by email
  • Agent portal
  • Admin: Sales, Driver, Agent and Admin roles; payment methods per customer type; trips and vehicles
  • Driver web that checks tickets by QR code
  • EzTicket order sync and data pushed to SAP

My part

Sole project manager who also wrote 86% of the Novadreams-only code for a 20-module ticketing system, from acceptance in 07/2024 to the 2025 bus-route and SAP sync extensions.

  • Plan the project in detail: budget, resources, timeline and milestones
  • Allocate resources and coordinate development and test teams with stakeholders
  • Identify and manage risk to schedule, quality and resources
  • Track progress and report results to senior management
  • Lead backend and run the Kubernetes cluster, CI/CD and backups

Result

  • 86%of the Novadreams-only code written by me (378 of 440 commits)
  • 5 areas, 20 modulesbooking, agents, admin, QR ticket checks, EzTicket and SAP sync
  • 1 ownersole project manager from plan to rollout, the single contact for client and partners

Problems faced

The ticketing system had to serve several parks and several customer groups (walk-in customers, agents, drivers) with different payment methods, then grow into bus trips and sync with the group’s EzTicket and SAP. It was also my first project holding both a technical and a management role, two jobs that easily step on each other.

How it was solved

  1. Separated the two roles: schedule and risk reported upwards, technical decisions kept within the team.
  2. Ran the system on a CMC Cloud Kubernetes cluster, with UAT and production split by namespace and a MySQL replica.
  3. Took change requests in batches, each with its own items and milestones in the rollout plan.
  4. Connected orders to EzTicket and pushed data to the group’s SAP.

Project management process

  1. 1Contract06/2024
  2. 2Plan and riskBudget, resources, milestones, risk register
  3. 3BuildBooking web, admin, QR ticket checks
  4. 4Acceptance15/07/2024
  5. 5Change requests05/2025: policies, debt, package limits
  6. 6Extension08/2025: bus trips, seat locks, SAP sync
  • Contract in 06/2024, first-phase acceptance on 15/07/2024.
  • In 2025 the work ran as change requests: policy pages, debt payment and per-account package limits (05/2025), then bus trip and seat-lock APIs and order sync with Nova Service Group (08/2025).
  • A detailed rollout plan per item; UAT and production split by namespace on one Kubernetes cluster.
  • Single contact for the client and partners; owner of the bus API documentation.

Management stack

  • Project plan
  • Risk register
  • Change request

System architecture

  1. Users
    • Booking web (NextJS)
    • Agent portal
    • Admin (React + Ant Design)
    • Driver QR web
  2. Services
    • Lumen API + JWT
    • Orders and tickets
    • CronJobs
  3. Data
    • MySQL 8 + replica
    • Redis
    • NFS
  4. Integrations
    • VNPay
    • VietQR
    • MB Bank
    • EzTicket
    • SAP
  5. Infrastructure and DevOps
    • CMC Cloud Kubernetes
    • UAT / PROD namespaces
    • Bastion host

Tech stack

Frontend
  • NextJS
  • TypeScript
  • Tailwind
  • React
  • Ant Design
Backend
  • PHP Lumen
  • JWT
Data
  • MySQL 8
  • Redis
Infrastructure
  • CMC Cloud Kubernetes
  • NFS
  • Bastion host
Payments and integrations
  • VNPay
  • VietQR
  • MB Bank
  • EzTicket
  • SAP