Coder Social home page Coder Social logo

milanto3 / cinema-web-app-praksa-vega-it Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 15.34 MB

Internship project for a cinema ticket reservation.

C# 50.21% HTML 0.62% JavaScript 40.00% CSS 9.17%
asp-net-core-web-api entity-framework-core onion-architecture react

cinema-web-app-praksa-vega-it's Introduction

Delta Internship - Cinema App - Requirements

Cinema App is a web application for displaying the current cinema repertoire and making ticket reservations.

There are two types of users: Customers and Admins

Requirements

User requirements

  • As a user, I can log in using my email or username and password.
    • Users have name, date of birth, email, and role (Admin or Customer).
  • As a user, I can log out.
  • As a user, I can click on a logo to jump to the homepage (Cinema Repertoire). done
  • As a user, I can see a footer with copyright information on every page. done
  • As a user, I can change my password.
  • As a user, if I forget my password I can request a new one from the login page.
    • Current user's password is invalidated. The user can't log in to the application.
    • User gets an email with a link for setting the new password.

Customer requirements

  • As a customer, I can create an account or use the application as a guest user.
    • After account creation, an email is sent to the new customer with a link for account verification.
    • Customers can't log in and use the application if their account is not verified.
  • As a customer, I can see the cinema repertoire on the homepage.
    • I can filter movie screenings by day (date). Today's screenings are always shown by default.
    • Each movie is shown only once for the selected day and it displays all available screenings for that day.
    • I can see and filter movie screenings for the next 7 days only.
    • I can filter movie screenings by genre. This works in union with the day filter.
    • I can sort movie screenings chronologically and alphabetically. This works in union with the day and the genre filters.
    • Movie screenings that have passed are disabled for reservation.
    • After choosing the desired screening, I am redirected to the reservation page.
  • As a customer, I can reserve tickets through the reservation page.
    • I can see screening details.
    • I can see a graphic representation of seats. Seats are colored differently if available, occupied, or selected.
    • I can select available seats I want to reserve.
    • Each seat has a unique tag for identification (similar to chessboard squares).
    • I can enter the number of tickets I want to buy and see the total price. The total price gets recalculated on every change in the number of tickets.
    • If I am an unauthenticated customer, I have to enter my email address as well. Otherwise, the email address from my account is used.
    • If I am an authenticated customer, I get a 5% discount on the total price.
    • When choosing to make a reservation, I get prompted to confirm the action.
    • Each reservation gets a unique code for identification.
    • After making a reservation, the customer is informed if the reservation was successful or not.
    • Email with reservation details is sent to the customer if the reservation was successful.
  • As an authenticated customer, I can see my current and past reservations.
    • Reservations are divided into current and past based on the date and time of the movie screening.
    • For every reservation, I can see the poster image, movie name, date and time, number of tickets, chosen seats, and total price.
    • I can cancel any of my current reservations.

Admin requirements

  • As an admin, I can do everything that a customer can do.
  • As an admin, I can manage Genres, Movies, Movie Screenings, and Customers uniformly.
    • I can view them all in a list.
    • I can view a list of all letters. Selecting a letter from this list filters the entities to only those whose name starts with that letter.
    • I can select multiple letters. The result is a union of all selected letters.
    • I can search for the entities using their names. This works in union with the first letter filter.
    • All result views are paginated on the server.
  • As an admin, I can add, edit, and delete Genres.
    • Genres have unique names.
    • When deleting a genre, the admin gets prompted to confirm the deletion.
  • As an admin, I can add, edit, and delete Movies.
    • Movies have poster image, name, original name, and duration.
    • Every movie is categorized into one or more genres.
    • When deleting a movie, the admin gets prompted to confirm the deletion.
  • As an admin, I can add, edit, and delete Movie Screenings.
    • Every movie can have one or more screenings.
    • Movie Screenings have date, time, and ticket price.
    • When adding a movie screening, the number of available seats has to be defined. Number of seats is set as a number of rows and columns.
    • When deleting a movie screening, the admin gets prompted to confirm the deletion.
  • As an admin, I can block customers from accessing the application.
    • Blocked customers can't log in to the application.
  • As an admin, I can reset customers' passwords.
    • Current customer's password is invalidated. The customer can't log in to the application.
    • Customer gets an email with a link for setting the new password.

Additional requirements

  • As an authenticated customer, I can rate my past reservations
    • I can choose a rating from 1 to 5 stars.
    • Each movie has an average rating that is calculated from all rated reservations of that movie.
    • Movie rating is displayed using stars within movie screenings on the homepage, and past and current reservations.

cinema-web-app-praksa-vega-it's People

Contributors

milanto3 avatar nikolab-vegait avatar

Watchers

 avatar

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.