Uma aplicação backend robusta e escalável para o aplicativo Hero. Construída com foco em segurança, performance e facilidade de manutenção. Este projeto fornece a infraestrutura de dados e APIs necessárias para alimentar a aplicação front-end.
Este projeto utiliza as seguintes tecnologias:
- Framework: NestJS
- Banco de Dados: PostgreSQL
- ORM: TypeORM
- Autenticação: JWT
- Documentação: Swagger
- Container: Docker
- Linguagem: TypeScript
- Proteção de ataque de Força bruta
Pré-requisitos:
- Docker e Docker Compose instalados e funcionando.
- Node 18+
- npm v9+
- Clone o repositório:
git clone https://github.com/leoo1992/hero-app-back
cd hero-app-back- Instale as dependências:
npm install- Execute o servidor:
npm run start:dev- Construindo e Executando com Docker Compose:
docker-compose up -d --build- O .env está exposto
hero-app-back/
├── src/
├── Insomnia.yaml
├── README.md
├── docker-compose.yml
├── .env
├── .prettierrc
├── .README.md
├── eslint.config.mjs
├── jest.config.js
├── nest-cli.json
├── package-lock.json
├── package.json
├── tsconfig.build.json
└── tsconfig.json
src/
├── controllers/ // Controladores das rotas da API
├── decorators/ // Decoradores de codigos
├── dtos/ // DTO's
├── entities/ // Entidades
├── guards/ // Guards
├── modules/ // Modelos de dados
├── seeds/ // Alimentação inicial do banco (ADMIN)
├── services/ // Logica de negocios
├── stategies/ // Estrategias utilizadas
├── tests/ // testes realizados
- ✅ Autenticação JWT segura
- ✅ CRUD completo para heróis
- ✅ Sistema de batalhas entre heróis
- ✅ Relatórios e estatísticas
- ✅ Documentação de API com Swagger
- ✅ Testes automatizados
- ✅ Migrações de banco de dados
A documentação completa da API está disponível via Swagger UI após iniciar o servidor:
http://localhost:3000/api-docs
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /auth/login |
Autenticação de usuário |
| GET | /heroes |
Listar todos os heróis |
| POST | /heroes |
Criar um novo herói |
| GET | /heroes/:id |
Obter detalhes de um herói |
| PUT | /heroes/:id |
Atualizar um herói |
| DELETE | /heroes/:id |
Excluir um herói |
| POST | /battles |
Registrar uma nova batalha |
| GET | /reports/hero-stats |
Obter estatísticas de heróis |
A aplicação utiliza @Roles() para proteger rotas com base no papel do usuário. Exemplo: @Roles('ADMIN', 'HERO') @Get() findAll() { // ... }
Desenvolvido por Leonardo Santos.