Giter Club home page Giter Club logo

moviedatabase's Introduction

MovieDatabase

Movie Database is a project for the lecture software architectures laboratory at the University of Applied Sciences in Karlsruhe.

Getting Started

Installing Dependencies

To be able to execute the Angular application you need to do the following steps:

  1. To install Angular on your local system, you need an active LTS or maintenance LTS version of Node.js. and Node Package Manager which is installed with Node.js.
  2. To install the Angular CLI, open a terminal window and run the following command: npm install -g @angular/cli.
  3. Open the workspace folder in a terminal and run the following command: npm install.

If you need further information please have a look at Angular's guide Setting up the local environment and workspace.

Providing Values for Secrets

You need to add your API key for the The Movie Database API in the .env file. Please rename template.env to .env and provide your own API key accordingly.

The values of the secrets can be accessed as follows process.env["ENVIRONMENT_VARIABLE_KEY"].

Run the Development Server

You can start the developoment server running the following command: ng serve.

Contribute

Adding new secrets

If you want to add a new secret, please add the new environment variable in the following files:

  • environment.ts
  • environment.prod.ts
  • template.env
  • .env

If you restart your development server now, the environment variable will be accessible.

Conventional Commits

The app uses Conventional Commits to have consistent commit messages. Husky is used to enable the use of versionized git hooks. In this context the hook commit-msg is used to validate if the commit messages fullfill the convetional commits specification.

Please make you familiar with Conventional Commits.

Technologies

Angular

This app uses Angular version 14 as framework for web development. If you want to know how to build and run the app you can have a look at the Angular CLI.

Angular Material

The app is built with the UI components of Angular Material. At the moment the built-in theme pink bluegrey is configured.

Bootstrap

The app uses Bootstrap to use some components which aren't provided in Angular Material.

Tailwind CSS

The app uses Tailwind CSS for easier handling of CSS.

Movie Database API

This app uses the API of the The Movie Database. This API is the source for all movies, series and actors.

Requirements

Functional Requirements + possible API Datasources

  • The user must be able to search for movies and series by its title.
    • API: /search/multi for searching movies, tv show and people (responds: title, image path, genres, ...)
    • API: /search/tv for search tv shows (responds: title, image path, genres, ...)
    • API: /search/movie for search movies (responds: title, image path, genres, ...)
  • The user must be able to filter his search results for the movies and series by the release year, the region and the genres.
    • API: /search/multi can't filter for the year and for the genres
    • API: /search/tv can't filter for the genres and the region
    • API: /search/movie can't filter for the genres
    • API: /discover/movie has all required filters but can't take the title for search
    • API: /discover/tv has all required filters but can't take the title for search
  • The user must be able to view the following details of a movie:
    • Title
      • API: part of search result
    • Year
      • API: part of search result
    • Genres
      • API: /movie/{id}
    • User Rating / IMDB Rating
      • API: part of search result (TMDB reviews)
      • API: /movie/{id}/external_ids -> query IMDB (for IMDB reviews)
    • Length of the Movie
      • API: /movie/{id}
    • Description of the Plot
      • API: /movie/{id}
    • Release Date
      • API: part of search result
    • Budget
      • API: /movie/{id}
    • Revenue
      • API: /movie/{id}
    • Director, Writer, ...
      • API: /movie/{id}?append_to_response=credits or /movie/{id]/credits
    • The Platforms on which the movie is available in your current country
      • API: /movie/{id}/watch/providers
    • Cast
      • API: same as Director, Writer, ...
    • Poster / Thumbnail
      • API: part of search result + query image.tmdb.org
  • The user must be able to view the following details of a series:
    • Title
      • API: part of search result
    • Year
      • API: part of search result
    • Genres
      • API: /tv/{id}
    • User Rating / IMDB Rating
      • API: part of search result (TMDB reviews)
      • API: /tv/{id}/external_ids -> query IMDB (for IMDB reviews)
    • Length of a typical episode
      • API: /tv/{id} average of first and last episode or calculate average of all episodes and seasons
    • Description of the Plot
      • API: /tv/{id}
    • Release Date
      • API: /tv/{id}
    • Director, Writer, Creators, ...
      • API: /tv/{id}?append_to_response=credits or /tv/{id]/credits
    • The Platforms on which the movie is available in your current country
      • API: /tv/{id}/watch/providers
    • Seasons including their release year, their number of episodes and the description
      • API: /tv/{id} (for all seasons except the description)
      • API: /tv/{id}/season/ (for the description of one season)
    • Cast
      • API: same as Director, Writer, ...
    • Poster / Thumbnail
      • API: part of search result + query image.tmdb.org
  • The user must be able to search for actors by their names.
    • API: /search/multi for searching movies, tv show and people
    • API: /search/person
  • The user must be able to view the following details for an actor:
    • Movies and series in which the actor had screen time
      • API: /person/{id}/movie_credits
      • API: /person/{id}/tv_credits
    • Name
      • API: part of search result
    • Biography
      • API: /person/{id}
    • Profile Picture
      • API: part of search result + query image.tmdb.org
  • The user must be able to shown the current film or movie trends from today and the week:
    • API: /trending/{media_type}/{time_window}

Optional Requirements

  • The User must be able to see the movies and series with the best ratings:
    • API: /movie/top_rated
  • The user must be able to add a movie or a series to his own watchlist.
    • API: POST /list + POST /list/{id}(add_item)
  • The user must be able to view the movies or series in his watchlist.
    • API: /list/{id}
  • The user must be able to remove movies or series from his watchlist.
    • API: POST /list/{id}/remove_item

© 2022 - 2023 Patrick, Daniel, Ansgar

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.