CineVerse is a modern, full-stack web application designed for movie enthusiasts. It allows users to explore movies, manage bookings, and interact with a dynamic movie database. This project serves as the final assignment for the Web Technologies and Services course.
- Runtime: Node.js
- Framework: Express.js (v5)
- Database: PostgreSQL
- ORM/Query Builder: Knex.js
- Authentication: JWT (JSON Web Tokens), bcryptjs
- Validation: Zod
- API Documentation: Swagger UI Express
- File Handling: Multer (for avatar/image uploads)
- Framework: Vue.js 3 (Composition API)
- Build Tool: Vite
- State Management: Pinia
- Data Fetching: TanStack Query (Vue Query)
- Styling: Bootstrap 5, FontAwesome
- Routing: Vue Router
- HTTP Client: Axios
Before you begin, ensure you have the following installed on your machine:
- Node.js (v18 or higher recommended)
- PostgreSQL (running instance)
- npm or yarn
git clone https://github.com/yourusername/CineVerse.git
cd CineVerse-masterNavigate to the backend directory and install dependencies:
cd backend-api
npm installConfiguration:
Create a .env file in the backend-api directory based on your environment needs. Example variables typically include:
PORT=3000
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=yourpassword
DB_NAME=cineverse_db
JWT_SECRET=your_jwt_secret_keyDatabase Migration: Run migrations to set up the database schema (ensure your Postgres server is running):
# Verify knex commands in package.json or run directly if installed globally
npx knex migrate:latest
npx knex seed:run # If seeds are availableStart the Server:
npm run dev
# Server generally runs at http://localhost:3000Open a new terminal, navigate to the frontend directory, and install dependencies:
cd frontend-spa
npm installStart the Application:
npm run dev
# Application usually runs at http://localhost:5173Once the backend server is running, you can access the full API documentation via Swagger UI:
- URL:
http://localhost:3000/api-docs(Default path, may vary based onserver.jsconfig)
- User Authentication: Secure registration and login using JWT.
- Movie Management: Browse, search, and view movie details.
- Responsive UI: Built with Bootstrap 5 for mobile and desktop compatibility.
- Optimized Data Fetching: Utilizes Vue Query for caching and efficient server state management.
- Interactive Components: Dynamic user interface powered by Vue 3.
This project is for educational purposes.