Giter Club home page Giter Club logo

cinema_demo's Introduction

Cinema Demo

Table of contents

About

The contents of this repository is the frontend service for a cinema/movie-theater webpage. The project is not connected to any actual cinema, it is just a personal project. The associated backend is in a separate repostiory located at cinema-server-backend.

Built with

TypeScript React Vite NodeJS NPM JWT

How to run

To run the application locally you need to have node and npm installed, it is also required to have the url of the backend associaited with the project inside a .env file in the root of the project to provide the VITE_BACKEND_BASE_URL property used.

If all the requirements are met simple run the commands

npm install
npm run dev

The project will start running on localhost:5173.

cinema_demo's People

Contributors

scandiumsg avatar

Watchers

 avatar

cinema_demo's Issues

Enhancement: Change purchase modal when using small devices

The purchaseModal/SeatSelector does not function that well when using a small device. The TicketSelector is too big, and the Seating map becomes too small in comparison.

At smaller device size the ticketSelector should be integrated into a smaller, more compact, footer of the modal, the seat map can then scale to full width.

Make SVG template for movie theater

The movie theater seat selection should be done as a interactive svg where a user can pick an empty seat.

Make a template for these theater svgs

Rework: upcomingScreeningList position on screeningPage

Make the upcoming screening list position appear right below the image when on small screens, but keep to the left of the poster when on larger screen.

Movie summary, rating, runtime etc should just be pushed further down.

Enhancement: Implement TicketType

Implement the ticket type endpoint and class.

Should retrieve active ticket types and display that as ticket options in the purchaseModal.

Should display which type of ticket a ticket is on the purchaseHistory ticketCard

Fix header position

Change the header to not follow the page.

Should be quickly done with changing position, but other elements might need to be adjusted when header is non-static.

Refactor: Unify MovieCard and ScreeningCard

MovieCard and ScreeningCard was separated into their own components just to have different navigation.

These components should be reusable. Make movieCard suitable to handle its use in the ScreeningCard aswell.

Screening booking page

Make screening booking page.

Linked to from upcoming movies and the movie details page (when clicking on a specifc shown screening).

Remake ScreeningItem component

Make the ScreeningItem component a nicer designed component.

The initial idea is to have it be more rectangular, with some more information. It could also contain information about the number of available seats for the screening etc.

Style the purchaseModal

  • Ensure even whitespace on all sides of the model.
  • Make background blurred when modal is active

Document header

Change the document header to something related to the project

Profilepage

Make a profile page view, that is linked to from the accountIcon, that displays some relevant information about the user.

Feature: Site frontpage

Make a frontpage for the site, should be in the landing page component.

Suggested content:

  • Highlighted movie (mini screening section, movie defined by admin/backend)
  • Latest movies
    • Need to add release time/date to backend data aswell.
  • Top rated movies

Feature: Create screenings

Make a admin-only (access controlled) page that allow for creation of screenings for a specific move and theater, on a provided date.

Feature: Add contact bar on bottom of screen

Add a contact component bar that should be displayed below all other content.

Should contain info/link to a "About" page, which explaines the site is just for demonstration purposes.
Could possible contain a link to the github repo aswell.

Enhancement: Header display for small screens

Fix the header to show all required elements and scale to smaller screens.

Current behaviour is scaling down to a minimum size then overflowing.

Suggested solution: Conditional render som hamburger menu instead of the interactable elements directly when screen width below a certain value.

Fix frontend data fetching

Have made smaller DTOs in the backend, and more endpoints to get the other data.

This results in significantly smaller join tables, so should have noticable impact on performance. However it does require more api calls.

Update the frontend to handle these new api calls and put its data into the old data objects again

Display screening

Add a page/component that displays all details about a screening.

Feature: Movie filters

Add some filter options for the MovieOverviewPage

Depending on implementation the filters for Screening might be reused.

Specific endpoint for refetch

Use the specific ticket endpoint to update the screening.Tickets value on screening for the PurchaseModal.

Should be both quicker and less resource intensive for the backend to just prepare tickets instead of the full Screening with theater, seats, etc...

Page that displays screenings about to start

A list of screenings, preferably shown as cards or something, that shows the next screening to start.

Should not just sort by date, but actually take into accoutn current time. No point showing screenings that occured 50 years ago!

Might require a dedicated endpoint. Input of time and retrieve X number of screenings that occur closest to but not before the provided time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.