CineBook is a full-stack cinema booking web application built as a CMPG 311 group project at North-West University.
This repository represents combined team work by the project group. It is presented in my portfolio to show my involvement in project coordination, integration support, database/backend support, documentation, and collaborative software development.
This was an academic group project completed for CMPG 311. The goal was to design and implement a database-backed booking system while applying software engineering, database design, and full-stack development concepts.
The system allows users to browse movies, view show schedules, select seats, make bookings, and complete a simulated payment flow. It also includes role-based dashboards for customers, cinema managers, and administrators.
CineBook was completed as a CMPG 311 group project at North-West University. This repository represents combined team work, with different members contributing to the database design, backend routes, frontend pages, UI components, authentication, booking flow, documentation, and integration.
I include this project in my portfolio as evidence of collaborative software engineering experience, database-backed application development, and exposure to full-stack project integration.
The .github/CODEOWNERS file was used as a project review and ownership guard during integration. It should not be read as individual authorship of the entire system.
- Movie browsing and movie detail pages.
- Show schedule viewing.
- Seat selection for bookings.
- Customer booking flow.
- Simulated payment flow with ticket confirmation handling.
- JWT-based authentication.
- Role-based access for customers, cinema managers, administrators, and system administrators.
- Admin dashboard for users, movies, shows, bookings, and revenue.
- Manager dashboard for theatre-scoped shows, bookings, occupancy, and revenue.
- MySQL database files for the React/Node web app.
- Oracle SQL files for the academic database phase.
CineBook/
├── backend/ Express.js API, authentication, routes, email service
├── frontend/ React + Vite user interface
├── database/
│ ├── mysql/ MySQL schema and seed data for the web app
│ └── oracle/ Oracle SQL Developer submission files
└── .github/ Team ownership and pull request templates
| Layer | Technologies |
|---|---|
| Frontend | React, Vite, Tailwind CSS, React Router, Axios |
| Backend | Node.js, Express.js |
| Database | MySQL, Oracle SQL |
| Authentication | JWT, bcrypt |
| Email / Notifications | Nodemailer, SMTP configuration |
| Security / Middleware | Helmet, CORS, Express rate limiting |
| Tools | npm, Git, GitHub |
The database models the main relationships needed for a cinema booking system:
Usersstores customers, managers, administrators, and system administrators.Moviestores movie information.Theatre,Screen, andSeatmodel the cinema layout.ShowSchedulelinks movies to screens and show times.Bookingstores customer bookings.BookingSeatconnects bookings to selected seats.Paymentstores payment information linked to bookings.
The project includes both MySQL files for the web app and Oracle files for the academic database submission.
- Node.js 18+
- npm 9+
- MySQL 8+
mysql -u root -p < database/mysql/schema.sql
mysql -u root -p cinebook_db < database/mysql/seed.sqlcd backend
npm install
copy env.example .env
npm run devBackend URL:
http://localhost:5000
cd frontend
npm install
npm run devFrontend URL:
http://localhost:5173
The seed data includes local development accounts for testing.
| Role | Password | |
|---|---|---|
| Administrator | admin@cinebook.co.za | Admin123 |
| Cinema Manager | manager.sandton@cinebook.co.za | Test123 |
| Customer | customer@test.co.za | Test123 |
These are sample local development credentials, not production credentials.
Screenshots will be added after the interface is reviewed and tested.
| Screen | Status |
|---|---|
| Home page | To be added |
| Movie details | To be added |
| Seat booking | To be added |
| Customer profile | To be added |
| Admin dashboard | To be added |
| Manager dashboard | To be added |
- How frontend, backend, and database layers work together in a full-stack system.
- How role-based access changes application flow and dashboard behaviour.
- How database design supports booking, seat, schedule, and payment workflows.
- How important communication, file ownership, and integration planning are in group projects.
- How to document a group project clearly for future review.
- Coordinating work across multiple team members.
- Keeping database files aligned between Oracle academic submission files and MySQL web app files.
- Managing authentication, roles, and protected routes.
- Integrating booking, payment, and email confirmation logic.
- Preserving team contributions while cleaning the repository for portfolio presentation.
- Add screenshots and a short demo walkthrough.
- Review duplicate frontend files before removing anything.
- Clarify which database files are active and which are academic/reference files.
- Add stronger validation and error handling.
- Add automated tests for core API routes.
- Improve mobile responsiveness and UI polish.
- Add a deployment guide if the project is hosted.
This repository is currently being polished for portfolio presentation while preserving the original group-project work. Some duplicate frontend files and overlapping database scripts are being reviewed before removal to avoid deleting any team work that may still be referenced.
This project was built for learning purposes as part of a university group project. It is presented as a student software engineering and database systems project, not as a commercial production system.