O ArenaHub é uma plataforma B2B (SaaS) premium projetada para revolucionar a gestão de arenas esportivas (Padel, Beach Tennis, Futebol). Este repositório contém o Core de Serviços Backend.
Trata-se de uma API RESTful de altíssima performance construída em Node.js. Ela foi arquitetada especificamente para lidar com alta concorrência (múltiplas reservas simultâneas) garantindo uma segurança robusta baseada no modelo Multi-Tenant (múltiplas arenas operando no mesmo banco de dados com total isolamento).
Diferente de agendas genéricas, este backend atende demandas profundas do nicho:
- Matchmaking (Partidas Abertas): Consultas para encontrar jogos com vagas, otimizando horários ociosos da arena.
- Nivelamento de Atletas: Estrutura no banco de dados para atrelar Níveis Técnicos a jogadores.
- Integração de Consumo (PDV): Tabelas que relacionam vendas de bar e aluguéis diretamente ao ticket da reserva.
- Engine e Framework: Node.js, NestJS (Arquitetura limpa e opinativa)
- Adaptador HTTP: Fastify (Escolhido para máximo throughput)
- Banco de Dados e ORM: PostgreSQL + Prisma (Type-safety ponta a ponta)
- Segurança: JWT (
@nestjs/jwt,passport-jwt) e Bcrypt - Documentação: Swagger/OpenAPI (Geração automática)
A segurança de dados isolados é o pilar desta API.
Toda requisição que interage com dados exige autenticação. O arenaId é extraído diretamente do token JWT decodificado no servidor, e não do payload enviado pelo usuário. Essa credencial é injetada via where: { arenaId } em absolutamente todas as operações no Prisma, impossibilitando vazamento horizontal de dados entre clientes.
O backend do ArenaHub está completamente configurado para rodar em containers, garantindo paridade total entre a máquina de desenvolvimento e a produção.
- Docker e Docker Compose instalados.
Na raiz deste repositório, rode:
docker-compose up -dIsso fará o build do NestJS e subirá os containers (API e PostgreSQL local). A API ficará acessível em http://localhost:3000.
Como os containers são novos, o banco de dados estará vazio. Sincronize o esquema do Prisma e injete os dados básicos rodando comandos dentro do container da API:
# Aplica as migrations criando as tabelas
docker exec -it arenahub-api npx prisma migrate dev --name init
# Opcional: Roda o script de Seed para criar usuário de testes
docker exec -it arenahub-api npx prisma db seedSe preferir não usar Docker e testar via Node local (com o PostgreSQL rodando fora):
- Instale as dependências:
npm install
- Configure as variáveis em um arquivo
.env(use.env.examplecomo guia):DATABASE_URL="postgresql://user:password@localhost:5432/arenahub?schema=public" JWT_SECRET="sua_chave_segura"
- Sincronize o Prisma e rode:
npx prisma migrate dev npm run start:dev
A API é 100% auto-documentada. Com o servidor rodando, acesse a rota do Swagger:
👉 http://localhost:3000/api/docs
Você poderá ver todos os endpoints disponíveis, DTOs e realizar testes de requisição simulando o ambiente com um Token Bearer.
Recomendamos ambientes como Railway ou Render para o backend:
- Conecte o repositório à plataforma.
- Defina os scripts de build:
npm run build - Comando de inicialização:
npm run start:prod - Não se esqueça de adicionar a variável
DATABASE_URLapontando para seu Postgres em produção (ex: Neon).