Zinema is a movie theater management system, including a backend API (Node.js/Express) and a frontend SPA (Vue.js). The project supports features such as ticket booking, showtime management, movie and food management, user roles (customer, staff, admin), with a modern interface and RESTful API.
- Intructor: Bui Vo Quoc Bao
- Student 1: Nguyễn Minh Nhựt - B2205896
- Student 2: Huỳnh Tấn Đạt - B2203438
- Class: CT313H-M02
- Semester: 3, Academic Year 2024-2025
Zinema/
├── backend-api/ # Backend Node.js/Express, RESTful API, data management
└── frontend-spa/ # Frontend Vue.js, user interface
src/controllers/: Business logic for features (auth, booking, movie, showtime, food, cinema)src/services/: Service layer, data operationssrc/routes/: API route definitionssrc/middlewares/: Authentication, upload, validation middlewaressrc/database/: Database connection and configuration (Knex.js)seeds/: Sample data for the databasepublic/: Poster images, food images, uploadsdoc/openapiSpec.json: OpenAPI API documentation
src/components/: UI components (AuthForm, MovieCard, SeatPicker, etc.)src/composables/: Tanstacksrc/views/: Main pages (Home, Booking, Admin, Profile, etc.)src/services/: API calls to backendsrc/stores/: State management (Pinia/Vuex)src/router/: Page routingpublic/: Images, favicon, logo
git clone https://github.com/AndrewNguyenITVN/Zinema.git
cd Zinemacd backend-api
cp env.example .env
npm install
# Initialize database (if needed)
# npx knex migrate:latest
# npx knex seed:run
npm startcd ../frontend-spa
npm install
npm run dev- Frontend:
http://localhost:5173 - Backend API:
http://localhost:3000
- Backend: Node.js, Express, Knex.js, JWT, Multer, OpenAPI
- Frontend: Vue.js 3, Pinia, Vue Router, Vite, Tanstack
- Database: PostgreSQL (configurable)
- Others: RESTful API, JWT Auth, File Upload, Pagination
- OpenAPI Spec: See the
doc/folder in the backend. - See each folder's
README.mdfor more details (if available).