Skip to content

Repository files navigation

Movies API

API para consultas de dados analíticos sobre filmes. O projeto tem como objetivo demonstrar conceitos básicos de caching para performance em aplicações back-end.

Como fonte de dados, o projeto usa uma versão modificada do dataset "Movie Dataset for Analytics & Visualization", que contém dados sintéticos de filmes fictícios lançados entre 1950 e 2025.

A estrutura do projeto segue uma arquiterura modular proveniente do Framework NestJS, disposta em camadas. Cada camada encapsula diferentes responsabilidades como servir requisições HTTP (controllers), regras de negócio (services), e acesso a dados (repositories). A integração com o Redis é implementada como um módulo separado, preservando responsabilidade única por módulo e facilitando testes e manutenção.

Tecnologias Utilizadas

Banco de Dados

Aplicação

API

Dependências

Certifique-se de instalar todas as dependências para sua plataforma. As versões das ferramentas com as quais a aplicação foi testada estão listadas abaixo:

  • Node.js 24.x ou superior
  • SQLite 3.x ou superior
  • Redis Open Source 8.x ou superior

Pré-Requisitos

Antes de rodar o projeto, é preciso executar alguns passos para preparar o ambiente de desenvolvimento.

1. Instalar as dependências da aplicação

npm install

2. Instalar a CLI do NestJS

npm install --global @nestjs/cli

3. Importar a base de dados

Pelo tamanho do dataset, nem o CSV original nem o arquivo SQLite estão versionados neste repositório; portanto é necessário baixar o arquivo CSV do dataset e importá‑lo para uma nova base SQLite.

Após o download, coloque o arquivo na pasta ./db/ e execute o script apropriado para sua plataforma/shell para criar a base de dados:

Windows (com Windows PowerShell)
npm run seed-db:powershell

Windows (com PowerShell 7+)
npm run seed-db:pwsh

Linux, MacOS, etc. (com Bash)
npm run seed-db:bash

Rodando a Aplicação

Para rodar a aplicação em modo de desenvolvimento:

npm run start:dev

Este modo reinicia automaticamente a aplicação quando o código-fonte for alterado. Para encerrar, pressione Ctrl + C no terminal.

Caso todos os passos descritos nos Pré-Requisitos tenham sido seguidos corretamente, a aplicação deve gerar uma saída semelhante à exibida abaixo no console durante sua inicialização:

[TIMESTAMP] Starting compilation in watch mode...

[TIMESTAMP] Found 0 errors. Watching for file changes.

[Nest] <PID>  - <TIMESTAMP>     LOG [NestFactory] Starting Nest application...
[Nest] <PID>  - <TIMESTAMP>     LOG [InstanceLoader] AppModule dependencies initialized +12ms
[Nest] <PID>  - <TIMESTAMP>     LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] <PID>  - <TIMESTAMP>     LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +10ms
[Nest] <PID>  - <TIMESTAMP>     LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] <PID>  - <TIMESTAMP>     LOG [InstanceLoader] MoviesModule dependencies initialized +0ms
[Nest] <PID>  - <TIMESTAMP>     LOG [RoutesResolver] MoviesController {/api/movies}: +7ms
[Nest] <PID>  - <TIMESTAMP>     LOG [RouterExplorer] Mapped {/api/movies, GET} route +3ms
[Nest] <PID>  - <TIMESTAMP>     LOG [NestApplication] Nest application successfully started +1ms
[Nest] <PID>  - <TIMESTAMP>     LOG [Environment] DATASOURCE=./db/movies.sqlite3
[Nest] <PID>  - <TIMESTAMP>     LOG [Server] HTTP server listening on port 3000
[Nest] <PID>  - <TIMESTAMP>     LOG [Server] API Reference (OpenAPI): http://localhost:3000/docs

Com o servidor rodando, é possível acessar uma interface com a documentação da API em seu navegador através da URL: http://localhost:3000/docs

About

API de dados analíticos sobre filmes. Demonstra conceitos básicos de caching em aplicações back-end.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages