Case study
Event Booking App
Event management application with booking system and user-role management.
Case study by Keltoum Malouki

Overview
Event Booking App is a full-stack web application built by Keltoum Malouki, a Full Stack Web Developer based in Casablanca, Morocco, to manage events and their bookings with strict role management and security. It combines a NestJS API, a Next.js and TypeScript interface and a PostgreSQL database, packaged with Docker and checked by a GitHub Actions CI pipeline.
The problem
Organizations that run trainings, workshops and conferences often handle registrations by hand, with spreadsheets and email threads. Event Booking App centralizes events and bookings in one place and replaces those manual steps with an automated and secure workflow.
My role
I worked on the project as a full-stack developer, from design to delivery:
- modelling the domain with UML use-case and class diagrams;
- organizing the backlog into epics and user stories (authentication, event management, booking system, interface and PDF tickets), tracked in Jira;
- building the NestJS API and the Next.js interface;
- writing unit and end-to-end tests;
- containerizing the stack with Docker Compose and setting up the GitHub Actions pipeline.
Key features
For participants
- Browse published events.
- Book a seat on an event, as long as it is not full.
- View and cancel their bookings.
- Download a PDF ticket with a QR code once a booking is confirmed.
For administrators
- Create events as drafts, then edit, publish or cancel them.
- Confirm, refuse or cancel pending bookings.
- View bookings by event and by participant.
- Follow indicators such as the fill rate and booking statuses.
Tech stack & architecture
| Layer | Technologies |
|---|---|
| Front end | Next.js, TypeScript, React Hook Form, Zod |
| Back end | NestJS, TypeScript, TypeORM, JWT, class-validator |
| Database | PostgreSQL |
| Testing | Jest, React Testing Library |
| DevOps | Docker, Docker Compose, GitHub Actions |
| Project management | Git, GitHub, Jira |
The repository is split into a backend application (NestJS) and a frontend application (Next.js), orchestrated with Docker Compose alongside a PostgreSQL container. The API is organized into feature modules — authentication, users, events and bookings — each with its own controller, service, DTOs and entities. PDF tickets are generated on the server with PDFKit, and each ticket carries a QR code that references its booking.
Approach: security and quality
Security is built into the API rather than added at the end:
- JWT authentication and password hashing with bcrypt;
- role-based access control (RBAC) that separates administrators from participants;
- input validation on every request through DTOs and class-validator;
- a configured CORS policy, with secrets kept in environment variables.
Booking rules are enforced on the server: only published events can be booked, the API checks the event's capacity against confirmed bookings, and a participant cannot book the same event twice.
Pushes and pull requests trigger a GitHub Actions pipeline that lints, tests and builds the back end and the front end separately. The back-end end-to-end tests run against a PostgreSQL service container, and Docker images are built once all the other jobs pass. Commits follow the Conventional Commits style and reference Jira tickets.
Links
- Source code: github.com/Keltoummalouki/event-booking-app
- More case studies: All projects
- Need a similar application? Work with me







