Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/antoniosertic23/cinereserve-the-movie-seat-scheduler
CineReserve is a web application I initiated to practice my skills in modern JavaScript after completing courses, aiming to independently develop a moderately complex project. From conceptualization to implementation, I crafted this project from scratch, envisioning a user-friendly interface for reserving movie seats.
https://github.com/antoniosertic23/cinereserve-the-movie-seat-scheduler
async-await cinereserve css3 firebase firebase-auth firebase-realtime-database html5 javascript javascript-api javascript-dom json model-view-controller movie-seat-booking mvc mvc-javascript omdbapi seat-booking user-authentication vanilla-javascript
Last synced: about 2 months ago
JSON representation
CineReserve is a web application I initiated to practice my skills in modern JavaScript after completing courses, aiming to independently develop a moderately complex project. From conceptualization to implementation, I crafted this project from scratch, envisioning a user-friendly interface for reserving movie seats.
- Host: GitHub
- URL: https://github.com/antoniosertic23/cinereserve-the-movie-seat-scheduler
- Owner: AntonioSertic23
- Created: 2024-04-01T17:20:18.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-29T18:15:17.000Z (8 months ago)
- Last Synced: 2024-04-29T20:27:09.886Z (8 months ago)
- Topics: async-await, cinereserve, css3, firebase, firebase-auth, firebase-realtime-database, html5, javascript, javascript-api, javascript-dom, json, model-view-controller, movie-seat-booking, mvc, mvc-javascript, omdbapi, seat-booking, user-authentication, vanilla-javascript
- Language: JavaScript
- Homepage:
- Size: 9.99 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CineReserve - Movie Seat Scheduler
![CineReserve](./src/img/CineReserve-project.png)
## Description
CineReserve is a web application designed to manage movie theaters, allowing users to reserve seats for various movies. This project aims to provide a user-friendly interface for both administrators and regular users to interact with the system efficiently.
## Features
- **User Authentication**: Supports user login and signup functionalities.
- **Theater Management**: Admins can add, edit, and delete theater information, including seating arrangements.
- **Movie Management**: Admins can add, edit, and delete movie details associated with each theater.
- **Seat Reservation**: Users can book seats for movies showing in the theaters.## Technologies Used
[![My Skills](https://skillicons.dev/icons?i=html,css,js,firebase)](https://skillicons.dev)
- **Frontend**: HTML, CSS, JavaScript
- **Backend**: Firebase Realtime Database for data storage
- **Authentication**: Firebase Authentication for user authentication## Project Structure
- **src/**
- **css/**: Contains CSS files for styling.
- `login.css`: Styles for the login/signup page.
- `modal.css`: Styles for modal components.
- `spinner.css`: Styles for the spinner component.
- `style.css`: General styles for the application.
- `theatre-display.css`: Styles specific to the theater display page.
- **js/**
- **controllers/**: Contains JavaScript files for controlling different aspects of the application.
- `theaterController.js`: Controls theater-related functionality.
- `userController.js`: Controls user-related functionality.
- **models/**: Contains JavaScript files defining data models used in the application.
- `theaterModel.js`: Defines the theater data model.
- `userModel.js`: Defines the user data model.
- **views/**: Contains JavaScript files for rendering different views in the application.
- **modals/**: Contains JavaScript files for modal components used in the application.
- `addMovieModal.js`: Modal for adding a movie to a theater.
- `addTheaterModal.js`: Modal for adding a new theater.
- `bookSeatsModal.js`: Modal for booking seats in a theater.
- `changeMovieModal.js`: Modal for changing the movie in a theater.
- `deleteTheaterModal.js`: Modal for deleting a theater.
- `editTheaterModal.js`: Modal for editing theater details.
- `errorModal.js`: JavaScript file for handling error modals.
- `modal.js`: Base modal class providing common functionality.
- `theaterView.js`: JavaScript file for rendering theater-related views.
- `config.js`: Configuration file for Firebase and API keys.
- `firebase.js`: Contains Firebase initialization code.
- `helpers.js`: Helper functions used throughout the application.
- **img/**: Contains image assets used in the application.
- **data.json**: JSON file containing sample data for the application.
- **index.html**: Main HTML file for the application.
- **login.html**: HTML file for the login/signup page.## Application Architecture
The application follows the Model-View-Controller (MVC) pattern, which separates the codebase into three main components:
- **Models**: Represent the data and its logic. Located in `js/models/`, they define the structure and behavior of different data entities, such as theaters and users.
- **Views**: Responsible for displaying the data to users and handling user input. Found in `js/views/`, views render the interface elements and interact with users.
- **Controllers**: Act as intermediaries between models and views. Located in `js/controllers/`, controllers manage user actions, update data in models, and update views accordingly.
By using MVC, the codebase remains organized and modular, facilitating easier understanding, maintenance, and scalability. Each component has a specific responsibility, promoting code reusability and making it easier to add new features or make changes without affecting other parts of the application.
## How to Run the Project
1. Clone the repository to your local machine.
2. Navigate to the project directory.
3. Set up your [Firebase database](https://console.firebase.google.com) by creating a new Firebase project and filling in the `FIREBASE_CONFIG` object in the `config.js` file with your Firebase project configuration.
4. Obtain an API key from [OMDB API](https://www.omdbapi.com/) and add it to the `API_KEY` constant in the `config.js` file.
5. When a user is created, add their user ID as the `ADMIN_ID` constant in the `config.js` file to grant them admin privileges.
6. Import `data.json` into your Firebase Realtime Database to populate initial data if desired.
7. Open `index.html` in a web browser to access the main application.## Getting Started
- **User Authentication**:
- New users can easily sign up for an account or log in with existing credentials.
- **Admin Actions**:
- Administrators gain access to theater management features after logging in.
- **User Actions**:
- Regular users have the ability to browse theaters, check movie schedules, and reserve seats for screenings.