Finnkino Cinema
A movie ticket booking website built with ReactJS, Redux and Material UI.
See the live demo -> Finnkino Cinema (the API might be expired when you visit the website).
Use this account for testing:
- π¨π»βπ»Username: tule07
π Password: 123456Tu
Tech stack
Core
- ReactJS: JavaScript library for building user interfaces.
- Redux: client state management with Thunk middleware.
- React Hook Form | Formik: form state management and validation with Yup.
UI & Styling
- Material UI: React-based UI component library.
- SCSS/Sass: CSS pre-processor for styling the website.
Features
πΈπ»For users:
Fully responsive design on devices (laptop, tablet and mobile).
Page | Features |
---|---|
Home | - show theaters, movies and showtime schedules |
Movie details | - show movie details |
Authentication (login + signup) | - validate login and signup forms |
Ticket booking | - build grid-shaped seat layout with different types of seat - map each seat row in alphabetical order - allow to select a maximum of 5 seats - cannot select sold seats |
Profile | - allow to change user information - show transaction history |
π©π»βπΌFor administrators:
Page | Features |
---|---|
User management | - display the table of users (both clients and administrators) - search user by name - create, update and delete user. Validate user information forms. |
Movie management | - display the table of movies - search movie by name - create, update and delete movie. Validate movie information forms - create movie showtime schedules. Validate showtime schedule information forms |
Project structure
Main source structure
root
βββ src
βββ api # Axios client configuration and request setup
βββ assets # Shared multimedia files
βββ components # Shared components
βββ constants # Shared constants
βββ containers # Pages
β βββ AdminTemplate # Admin pages
β β βββ index.js # Admin template
β β βββ components # Shared components for admin template
β β βββ UserDashBoard
β β βββ MovieDashBoard
β βββ AuthTemplate # Authentication pages
β β βββ index.js # Authentication template
β β βββ components # Shared components for authentication template
β β βββ LoginPage
β β βββ RegisterPage
β βββ HomeTemplate # Home pages
β β βββ index.js # Home template
β β βββ components # Shared components for home template
β β βββ HomePage
β β βββ MovieDetailsPage
β β βββ ProfilePage
β β βββ TicketBookingPage
β βββ NotFoundPage # 404 not found page
βββ guard # Protect private routes
βββ hooks # Shared hooks
βββ i18n # Translation feature configuration
βββ routes # Routing setup
βββ store # Redux configuration and reducer setup
βββ validators # Schema validators for user inputs
βββ App.js
βββ index.js
Routing setup
Installation and run
Check out the website -> Finnkino Cinema or run locally by running the following commands:
Clone the project
git clone https://github.com/scoobytux/finnkino-cinema.git
cd finnkino-cinema
Install dependencies
npm install
Run the development server
npm start
Open http://localhost:3000 with your favorite browser to see the project
Some project's views on devices
- On MacBook/Laptop
- On Mobile
Contributors
Thanks go to these wonderful people
Phuong Vu (Chloe) |
Tu Le (Liam) |
Credits and references
Resource | Description |
---|---|
CyberSoft Academy | API provider |
Finnkino | A cool Finnish website for booking online movie tickets we got inspiration from |