Projeto desenvolvido como teste técnico para a vaga de Desenvolvedor(a) Python na empresa Platform Builders.
API REST assíncrona em Python com FastAPI para cadastro e consulta de filmes,
com dados complementares obtidos da API externa OMDb.
Inclui frontend simples em HTML/JS para facilitar a interação e testes.
Desenvolver uma API com três endpoints para:
- Cadastrar filmes pelo título, buscando dados adicionais (ano, diretor, sinopse, nota IMDb) na OMDb
- Consultar filmes por ID
- Listar todos os filmes cadastrados
- FastAPI (async, fácil e rápido para APIs)
- httpx (cliente HTTP async para buscar OMDb)
- SQLAlchemy (ORM para banco SQLite)
- Jinja2 (renderização de templates HTML)
- JavaScript + HTML para frontend simples
- Python 3.9+
- OMDb API key (gratuita): crie a sua em: https://www.omdbapi.com/apikey.aspx
- Clone o repositório:
git clone https://github.com/henriquerodrigues-dev/omdb-movies-api-platform-builders
cd omdb-movies-api-platform-builders
- Crie e ative seu ambiente virtual:
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
Instale dependências:
pip install -r requirements.txt
- Crie o arquivo .env na raiz do projeto com o conteúdo:
OMDB_API_KEY=your_api_key_here
(Substitua o valor 'your_api_key_here' pela sua chave OMDb obtida no site)
- Rode a aplicação:
uvicorn app.main:app --reload
A API estará disponível em: http://localhost:8000 ou http://localhost:8000/docs
Abra no navegador a página principal:
http://localhost:8000/
Lá você pode:
-
🎬 Cadastrar um filme pelo título (ex: Spider-Man)
-
📃 Listar todos os filmes cadastrados
-
🔍 Buscar um filme por ID
-
🗑️ Deletar um filme da lista com um clique na lixeira ao lado do título
Também tem botão para ir direto para o Swagger, onde pode testar os endpoints facilmente.
Método | Endpoint | Descrição |
---|---|---|
POST | /api/movies |
Cadastra filme pelo título (busca dados OMDb) |
GET | /api/movies |
Lista todos os filmes cadastrados |
GET | /api/movies/{id} |
Busca filme pelo ID |
DELETE | /api/movies/{id} |
Remove um filme do banco de dados por ID 🗑️ |
├── app/
│ ├── crud.py # Lógica dos endpoints e chamadas OMDb
│ ├── database.py # Configuração do banco SQLite e sessão
│ ├── main.py # Ponto de entrada da aplicação FastAPI
│ ├── models.py # Modelos ORM SQLAlchemy (Filme)
│ ├── omdb.py # Cliente e funções para API OMDb
│ └── schemes.py # Schemas Pydantic para validação de dados
├── screenshots/ # Imagens para o README e documentação
├── static/
│ └── script.js # JavaScript do frontend
├── templates/
│ └── index.html # Página principal frontend
├── .env # Variáveis de ambiente (não versionado)
├── .gitignore # Arquivos e pastas ignorados pelo Git
├── requirements.txt # Dependências do projeto
└── README.md # Documentação do projeto
Feito por Henrique Rodrigues