- Шахнов Артем — team lead, developer
- Захаров Святослав — developer
- Безверхий Олександр — developer
- Чижевський Данило — designer, developer
- Романюк Максим — developer
- Мурган Андрій — developer
Preview of the pages without technical details
Technical description of the project's functionality is in the following chapter
The main page contains:
- Movie banner
- Movie categories
- Movie list
- Recommendations based on favourite movies
The page with all movies. You can filter them by:
- Name
- Genre
- Rating
- Release year
- Country
Each movie has its own page, where you can see:
- Movie banner
- Its genres, description, and other info
- Trailer
- Actor crew
- Rating box where you can rate the movie and see other reviews
A page where you can view available sessions. You can filter them by:
- Movie name
- Date
Here you can choose and book tickets for the selected session.
Displays user data and tickets. Here, you can:
- Change your username
- Change your password
- View your tickets
The page with movies marked by the user.
It acts as a wishlist where you can save movies you want to watch later,
or simply the ones you like — your recommendations are based on this list.
Visible only to the admin.
Displays various statistics for analysis.
Visible only to the admin.
Allows adding, removing, or editing movies and sessions.
Present on every page. It includes:
- Navigation buttons
- Registration and log-in/log-out buttons
- Theme switch: dark mode (default) / light mode
Displayed when the address is invalid.
Used on most pages. Leads to the respective movie page when clicked.
Includes:
- Movie poster
- Movie name, release year, rating, genres
- Description shown when hovering over the poster
Stores data about movies.
Used by the Home Page, Movie Pages, and Movie Cards.
Admin can edit it via the Admin page.
{
"id": 1,
"title": "Назва",
"movie_type": "Жанр",
"eng_title": "Назва англійською",
"poster": "файл постеру",
"banner": "файл банеру",
"short_description": "Коротка версія опису.",
"description": "Повна, довга версія опису",
"genre": ["Жанри"],
"countries": ["Країни"],
"year": 2025,
"end_of_showtime": "1 червня",
"rating": 8,
"age_rating": "12+",
"duration": "1:41",
"release_date": "2025-04-03",
"display_languages": ["мови озвучення/оригіналу"],
"subtitle_languages": ["Англійська"],
"budget": "$15 000 000",
"premiere": "2025-01-23",
"studio": ["Студії"],
"distributor": "Дистрибутор",
"trailer": "посилання на трейлер",
"cast": [
{
"name": "Ім'я атора(-ки)",
"role": "Роль",
"photo": "файл фото актора(-ки)",
"folder": "папка з відповідними файлами"
}
],
"director": {
"name": "Ім'я режисера(-ки)",
"photo": "файл фото режисера(-ки)"
},
"ratings": [],
"generalRating": 9
}Stores session data.
Used by Sessions Page and Booking Page.
Admin can modify it via the Admin page.
{
"id": 1,
"movie_id": 1,
"hall": 1,
"date": "2025-05-06",
"time": "09:00",
"price": 150,
"available_seats": [1, 15]
}Stores user data:
- ID
- Name
- Password
- Role (user/admin)
- Favourite movies
- Tickets
Used by the Profile Page, Favourites Page, Booking Page, and Log-in modal.
{
"id": 1,
"username": "admin",
"email": "admin@gmail.com",
"//password": "Password is 12345678",
"password": "$2b$10$apo7HQCyBOkfpJxUmDirFOfTftSTuv82oVqG/Y8PaA8rPhimeeLtm",
"role": "admin",
"favoriteMovies": [1, 2],
"tickets": [
{
"sessionId": 14,
"chosenSeats": [1, 2]
}
]
}-
In the first terminal:
npm install
-
In the second terminal:
node ./server/jsonServer.js
-
Back in the first terminal:
npm run dev