Uma API REST moderna para gerenciamento de RPGs de mesa, desenvolvida com NestJS e TypeScript.
Ready, Dice, Roll! é uma aplicação backend que fornece APIs completas para gerenciamento de campanhas de RPG, personagens, sessões e muito mais. Ideal para mestres e jogadores que querem organizar suas aventuras de forma digital.
- 🎯 Gerenciamento de Campanhas: Crie e gerencie campanhas com múltiplos jogadores
- 👥 Sistema de Usuários: Autenticação e autorização com JWT
- 🧙♂️ Personagens: CRUD completo para personagens com fichas personalizáveis
- 📅 Sessões: Agendamento e controle de sessões de jogo
- 🎲 Sistema de Dados: Rolagem de dados integrada com histórico
- 📝 Anotações: Sistema de notas para mestres e jogadores
- 🔐 Segurança: Autenticação JWT e controle de acesso baseado em roles
- Backend: NestJS 11.x
- Linguagem: TypeScript
- Banco de Dados: PostgreSQL
- ORM: TypeORM
- Autenticação: JWT (Passport.js)
- Validação: Class Validator
- Documentação: Swagger/OpenAPI
- Testes: Jest
- Linting: ESLint + Prettier
- Node.js 20.x ou superior
- npm ou yarn
- Docker e Docker Compose
- Git
- Clone o repositório
git clone https://github.com/s0lturn3/ready-dice-roll-api.git
cd ready-dice-roll-api- Instale as dependências
npm install
# ou
yarn install- Configure as variáveis de ambiente
cp .env.example .envEdite o arquivo .env com suas configurações:
# Database
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=sua_senha
DB_DATABASE=ready_dice_roll
# JWT
JWT_SECRET=seu_jwt_secret_super_seguro
JWT_EXPIRES_IN=7d
# Application
PORT=3000
NODE_ENV=development- Inicie o banco de dados com Docker
docker-compose up -d db- Executar seeds (opcional)
npm run seed# Inicia o banco de dados
docker-compose up -d db
# Inicia a aplicação
npm run start:dev
# Ou inicia tudo de uma vez
docker-compose up -dnpm run build
npm run start:prod# Inicia toda a stack (app + db)
docker-compose up -d
# Visualizar logs
docker-compose logs -f
# Parar serviços
docker-compose downA API estará disponível em http://localhost:3000/api
Após executar a aplicação, acesse:
- Swagger UI:
http://localhost:3000/api/docs - Redoc:
http://localhost:3000/api/redoc
# Testes unitários
npm run test
# Testes e2e
npm run test:e2e
# Coverage
npm run test:cov
# Testes em modo watch
npm run test:watch# Desenvolvimento
npm run start:dev # Inicia em modo desenvolvimento
npm run start:debug # Inicia em modo debug
# Build
npm run build # Build de produção
npm run start:prod # Inicia versão de produção
# Docker
docker-compose up -d # Inicia toda a stack
docker-compose up -d db # Inicia apenas o banco
docker-compose down # Para todos os serviços
docker-compose logs -f # Visualiza logs
# Database
npm run migration:generate # Gera nova migration
npm run migration:run # Executa migrations
npm run migration:revert # Reverte última migration
npm run seed # Executa seeds
# Qualidade de código
npm run lint # ESLint
npm run lint:fix # ESLint com correção automática
npm run format # Prettiersrc/
├── auth/ # Módulo de autenticação
├── users/ # Módulo de usuários
├── campaigns/ # Módulo de campanhas
├── characters/ # Módulo de personagens
├── sessions/ # Módulo de sessões
├── dice/ # Módulo de sistema de dados
├── notes/ # Módulo de anotações
├── common/ # Utilitários e decorators
│ ├── decorators/
│ ├── guards/
│ ├── interceptors/
│ └── pipes/
├── config/ # Configurações
├── database/ # Migrations e seeds
│ ├── migrations/
│ └── seeds/
└── main.ts # Entrada da aplicação
A API utiliza JWT para autenticação. Para acessar endpoints protegidos:
- Login
POST /auth/login
{
"email": "[email protected]",
"password": "senha123"
}- Use o token retornado no header
Authorization: Bearer seu_jwt_token_aquiPOST /auth/login- LoginPOST /auth/register- RegistroPOST /auth/refresh- Refresh token
GET /users/profile- Perfil do usuárioPUT /users/profile- Atualizar perfil
GET /campaigns- Listar campanhasPOST /campaigns- Criar campanhaGET /campaigns/:id- Detalhes da campanhaPUT /campaigns/:id- Atualizar campanhaDELETE /campaigns/:id- Deletar campanha
GET /characters- Listar personagensPOST /characters- Criar personagemGET /characters/:id- Detalhes do personagemPUT /characters/:id- Atualizar personagemDELETE /characters/:id- Deletar personagem
Contribuições são sempre bem-vindas! Para contribuir:
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feat/nova-feature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feat/nova-feature) - Abra um Pull Request para a branch
dev
Utilizamos Conventional Commits:
feat:Nova funcionalidadefix:Correção de bugdocs:Documentaçãostyle:Formataçãorefactor:Refatoraçãotest:Testeschore:Manutenção
Encontrou um bug? Abra uma issue com:
- Descrição clara do problema
- Passos para reproduzir
- Comportamento esperado vs atual
- Screenshots (se aplicável)
- Ambiente (OS, Node.js version, etc.)
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Sistema de notificações em tempo real
- Integração com Discord
- Sistema de mapas interativos
- Suporte a múltiplos sistemas de RPG
- App mobile
- Modo offline
- Solturne - Desenvolvedor Principal - @s0lturne
- Comunidade NestJS
- Meu amigo que me inspirou a iniciar o projeto
- Jogadores de RPG que inspiraram este projeto
- Contribuidores do projeto
Ready, Dice, Roll! - Tornando suas aventuras de RPG mais organizadas e divertidas! 🎲✨