Skip to content
Snippets Groups Projects
README.md 2.17 KiB
Newer Older
Tomáš Havlíček's avatar
Tomáš Havlíček committed
# PB138 - Film Database Group Project

***

## Name
Film Database
Tomáš Havlíček's avatar
Tomáš Havlíček committed

## Description
Filmová databáze obsahuje seznam filmů. Každý film má název, originální název, popisek, režiséra a kategorii. Filmy je možné vyhledat, procházet podle kategorie a nebo se z detailu dostat na filmy režiséra.
Tomáš Havlíček's avatar
Tomáš Havlíček committed

Film database containing movies. Each movie has name, original name, description, director and category. Movie search available, browsing categories and getting to director page through detail.
Tomáš Havlíček's avatar
Tomáš Havlíček committed

## Stack
Tomáš Havlíček's avatar
Tomáš Havlíček committed

Backend:
- NestJS

SSR:
- NextJS
Tomáš Havlíček's avatar
Tomáš Havlíček committed

Database technologies (ORM):
- Prisma
Tomáš Havlíček's avatar
Tomáš Havlíček committed

Frontend technologies:
Tomáš Havlíček's avatar
Tomáš Havlíček committed

Source compiling:
Tomáš Havlíček's avatar
Tomáš Havlíček committed

Infrastructure:
- dockercompose
Tomáš Havlíček's avatar
Tomáš Havlíček committed
- Ant
- Mantis
Tomáš Havlíček's avatar
Tomáš Havlíček committed

## Usage
### Docker
Firstly, run Docker daemon.

Navigate into the project root directory `pb138-film-database-group-project`.

Create your `.env` file here if you haven't done it yet. Example is in the `.env.example` file.

Then in the root directory run `docker-compose up -d` to build, (re)create, start, and attach to containers for a service (optional flag `-d` runs containers in the background).

When you are finished, run `docker-compose down` to stop and remove containers, networks and images created by `up`.

### Adminer
With Adminer we can manage our PostgreSQL database.

To login to Adminer in your browser you need to specify:
* System: `PostgreSQL`
* Server: `postgres` (docker-compose database service name)
* Username: same as `DB_USER` in your .env file
* Password: same as `DB_PASSWORD` in your .env file
* Database: same as `DB_NAME` in your .env file


## REST API

| requirement |endpoint | method | criteria |
| ------------- | ------------- | ------------- | ------------- |
| Search for a movie | /movies  | get | returns array of movies as a result of search
| Show a single movie | /movie/:id  | get | return movie 
| Show popular movies | /movie/preview  | get | returns array of few movies (popular) to preview
Tomáš Havlíček's avatar
Tomáš Havlíček committed
| Show a single director  | /director/:id | get | returns director
| Show categories to browse | /categories | get | returns all categories
| Show a single category | /category/:id | get | returns category with movies that belong to it
## TODO
Tomáš Havlíček's avatar
Tomáš Havlíček committed

More TBA as features are implemented.