API Node.js que atua como camada de cache para a SWAPI (Star Wars API), utilizando Redis para armazenamento temporário de respostas. Inclui configurações Docker para desenvolvimento e produção, TypeScript e testes automatizados.
- 🚀 Proxy para todos os endpoints da SWAPI
- ⚡ Cache Redis com TTL de 1 hora
- 🐳 Configuração Docker para desenvolvimento e produção
- ✅ Testes unitários e de integração
- 🔍 Tipagem estática com TypeScript
- 🔄 Auto-reload em desenvolvimento
- Node.js v18+
- Docker e Docker Compose
- Redis (opcional para desenvolvimento local)
- Clone o repositório:
git clone https://github.com/seu-usuario/starwars-api.git
cd starwars-api- Instale as dependências:
npm install- Crie o arquivo
.env:
cp .env.example .envPreencha as variáveis de ambiente conforme necessário.
docker-compose upA API estará disponível em: http://localhost:3000
docker build -t starwars-api .
docker run -p 3000:3000 starwars-apinpm run dev# Todos os testes
npm test
# Testes unitários
npm test -- unit
# Testes de integração
npm test -- integration
# Modo watch
npm run test:watchA API replica todos os recursos da SWAPI:
GET /api/:resource/:id
Parâmetros:
resource: Tipo de recurso (people, films, planets, etc)id: ID do recurso
Exemplo:
GET /api/people/1Resposta:
{
"name": "Luke Skywalker",
"height": "172",
"mass": "77",
...(dados da SWAPI)
}- Primeira requisição: Busca na SWAPI e armazena no Redis
- Requisições subsequentes: Retorna dados do cache
- Cache expira após 3600 segundos (1 hora)
- Dockerfile.dev: Configuração de desenvolvimento com hot-reload
- Dockerfile: Build otimizado para produção
- Redis: Serviço separado no compose
.
├── src/
│ ├── controllers/ # Lógica dos endpoints
│ ├── routes/ # Configuração de rotas
│ ├── utils/ # Conexão com Redis
│ └── app.ts # Configuração do Express
├── test/ # Testes automatizados
├── docker-compose.yml # Ambiente de desenvolvimento
└── Dockerfile* # Configurações de container
- Faça um fork do projeto
- Crie uma branch (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Faça push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Nota: Garanta que o serviço Redis esteja rodando antes de iniciar a aplicação. Em ambiente Docker, isso é gerenciado automaticamente pelo compose.
Este README inclui:
- Instruções claras de instalação e uso
- Detalhes da arquitetura
- Políticas de cache
- Configuração de ambiente
- Guia de contribuição
- Documentação da API
Você pode personalizar com:
- Badges de status CI/CD
- Exemplos adicionais de requests
- Diagramas de arquitetura
- Informações de monitoramento