Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 13 additions & 16 deletions .env.dev.example
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
# ENVIRONMENT
NODE_ENV=development
NODE_PORT=5122
LOG_LEVEL=debug
DOTENV_CONFIG_QUIET=true
RATE_LIMIT_ENABLED=true


# ALLOWED ORIGINS
ALLOWED_ORIGINS="https://eventdev.org,http://app:5173,http://postgres-db:5432,http://supertokens-auth:3567,http://redis-cache:6379"
WEBSITE_DOMAIN="http://localhost:3000"


# DATABASE
POSTGRES_DB=gt_dev
POSTGRES_USER=devevent
POSTGRES_PASSWORD=SENHA_SEGURA_DEV

DATABASE_ENGINE=postgres
DATABASE_URL="postgresql://devevent:SENHA_SEGURA_DEV@localhost:5439/gt_dev?schema=public"
DATABASE_PORT=5439
DATABASE_URL="postgresql://devevent:SENHA_SEGURA_DEV@postgres-db:5432/gt_dev?schema=public"
DATABASE_PORT=5432

PRISMA_STUDIO_PORT=5555
PRISMA_HIDE_UPDATE_MESSAGE=true


# SUPERTOKENS
SUPERTOKENS_PORT=3567
SUPERTOKENS_CONNECTION_URI="http://supertokens-auth:3567"

SMTP_HOST="smtp.gmail.com"
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER="eventdevcommunities@gmail.com"
SMTP_PASS="Senha de App (Ex: abcd efgh ijkl rmno)"
SMTP_FROM_NAME="EventDev (Não Responda)"
SMTP_FROM_EMAIL="eventdevcommunities+noreply@gmail.com"
SMTP_REPLY_TO="no-reply@eventdev.org"

MERCADO_PAGO_ACCESS_TOKEN="TEST-00000000-0000-0000-0000-000000000000"
# REDIS
REDIS_HOST=redis-cache
REDIS_PORT=6379
60 changes: 34 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,20 @@ O **EventDev Server** é a API backend para a plataforma EventDev, construída c
- **Cache/Rate Limit**: Redis
- **Compilação**: SWC (Speedy Web Compiler) para desenvolvimento rápido.

## Ferramentas necessárias

- [**node.js**](https://nodejs.org/en/download)
- [**docker**](https://www.docker.com/get-started/)
- [**pnpm**](https://pnpm.io/pt/installation)

## Scripts Principais

### Desenvolvimento

- `pnpm start-dev`: Inicia o servidor em modo de desenvolvimento (com hot-reload e SWC).
- `pnpm start-debug`: Inicia em modo debug.
```bash
pnpm install # to install dependencies
pnpm run dev # to start the development server
```

### Testes

Expand Down Expand Up @@ -64,46 +72,46 @@ Abaixo estão os comandos essenciais organizados por ferramenta e caso de uso.

O `Makefile` é a interface principal para gerenciar a infraestrutura Docker.

| Comando | Caso de Uso | Descrição |
| :--- | :--- | :--- |
| `make dev-up` | **Início do Dia** | Sobe todo o ambiente de desenvolvimento (API + Banco + Redis + Auth). Inclui script de inicialização (`init-dev.sql`) para criar os bancos separadamente. |
| `make dev-down` | **Fim do Dia** | Para e remove todos os containers e volumes de desenvolvimento. |
| `make dev-logs` | **Monitoramento** | Exibe os logs da API em tempo real. |
| `make dev-shell` | **Debug Avançado** | Abre um terminal `sh` dentro do container da API. |
| `make test-deps-up` | **Testes Locais** | Sobe apenas as dependências (DB/Redis) para rodar testes locais (`pnpm test`). |
| `make verify-all` | **CI/CD** | Executa a verificação completa (lint, testes, build) dentro do container. |
| `make db-studio` | **Gestão de Dados** | Abre o Prisma Studio para visualizar/editar dados do banco. |
| Comando | Caso de Uso | Descrição |
| :------------------ | :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `make dev-up` | **Início do Dia** | Sobe todo o ambiente de desenvolvimento (API + Banco + Redis + Auth). Inclui script de inicialização (`init-dev.sql`) para criar os bancos separadamente. |
| `make dev-down` | **Fim do Dia** | Para e remove todos os containers e volumes de desenvolvimento. |
| `make dev-logs` | **Monitoramento** | Exibe os logs da API em tempo real. |
| `make dev-shell` | **Debug Avançado** | Abre um terminal `sh` dentro do container da API. |
| `make test-deps-up` | **Testes Locais** | Sobe apenas as dependências (DB/Redis) para rodar testes locais (`pnpm test`). |
| `make verify-all` | **CI/CD** | Executa a verificação completa (lint, testes, build) dentro do container. |
| `make db-studio` | **Gestão de Dados** | Abre o Prisma Studio para visualizar/editar dados do banco. |

### PNPM (Ciclo de Desenvolvimento)

Comandos para o dia a dia de codificação.

| Comando | Caso de Uso | Descrição |
| :--- | :--- | :--- |
| `pnpm start-dev` | **Codificação** | Roda a API localmente com hot-reload (SWC). |
| `pnpm lint` | **Qualidade** | Verifica e corrige problemas de estilo de código. |
| `pnpm test-all` | **Validação** | Roda testes unitários e E2E em sequência. |
| `pnpm verify-all` | **CI/CD** | Roda lint, testes e build para garantir integridade total. |
| `pnpm build` | **Deploy** | Compila o projeto para a pasta `dist` (produção). |
| Comando | Caso de Uso | Descrição |
| :---------------- | :-------------- | :--------------------------------------------------------- |
| `pnpm start-dev` | **Codificação** | Roda a API localmente com hot-reload (SWC). |
| `pnpm lint` | **Qualidade** | Verifica e corrige problemas de estilo de código. |
| `pnpm test-all` | **Validação** | Roda testes unitários e E2E em sequência. |
| `pnpm verify-all` | **CI/CD** | Roda lint, testes e build para garantir integridade total. |
| `pnpm build` | **Deploy** | Compila o projeto para a pasta `dist` (produção). |

### Docker (Infraestrutura)

Comandos diretos do Docker Compose (geralmente abstraídos pelo Makefile).

| Comando | Caso de Uso | Descrição |
| :--- | :--- | :--- |
| `docker compose -f docker-compose.dev.yml build` | **Atualização** | Reconstrói as imagens de desenvolvimento (útil após mudar `package.json`). |
| `docker compose -f docker-compose.prod.yml build` | **Simulação Prod** | Constrói a imagem otimizada de produção. |
| Comando | Caso de Uso | Descrição |
| :------------------------------------------------ | :----------------- | :------------------------------------------------------------------------- |
| `docker compose -f docker-compose.dev.yml build` | **Atualização** | Reconstrói as imagens de desenvolvimento (útil após mudar `package.json`). |
| `docker compose -f docker-compose.prod.yml build` | **Simulação Prod** | Constrói a imagem otimizada de produção. |

### Nest CLI (Scaffolding)

Comandos para gerar código boilerplate.

| Comando | Caso de Uso | Descrição |
| :--- | :--- | :--- |
| Comando | Caso de Uso | Descrição |
| :---------------------------- | :--------------- | :------------------------------------------------------------- |
| `nest g resource module/nome` | **Nova Feature** | Cria um novo módulo completo (Controller, Service, DTOs, etc). |
| `nest g module module/nome` | **Estrutura** | Cria apenas o módulo. |
| `nest g service module/nome` | **Lógica** | Cria apenas o service. |
| `nest g module module/nome` | **Estrutura** | Cria apenas o módulo. |
| `nest g service module/nome` | **Lógica** | Cria apenas o service. |

## Roadmap e Checklist

Expand Down
11 changes: 7 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"license": "MIT",
"type": "module",
"engines": {
"node": ">=20.19.3",
"pnpm": ">=10.23.0"
"node": "22.x",
"pnpm": "10.x"
},
"imports": {
"#*": "./dist/*",
Expand All @@ -31,7 +31,7 @@
"start-prod": "node --import @swc-node/register/esm-register dist/main.js",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --max-warnings=0",
"format": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"docs-generate": "npx prisma generate --no-hints >/dev/null 2>&1 && npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script 2>&1 | grep -E '^(--|CREATE|ALTER|DROP)' > docs/schema.sql && echo 'Schemas gerados! Para gerar openapi.json execute: pnpm start-dev'",
"docs-generate": "node scripts/generate-docs.js",
"generate-http": "node --import @swc-node/register/esm-register docs/rest-client/tools/generate-http.ts",
"simulate-webhook": "node --import @swc-node/register/esm-register tools/simulate-webhook.ts",
"test": "jest --runInBand --detectOpenHandles",
Expand All @@ -46,7 +46,10 @@
"prepare-test-db": "node --import @swc-node/register/esm-register test/setup/prepare-test-db.ts",
"migrate-prod": "prisma migrate deploy",
"seed": "prisma db seed",
"verify-all": "pnpm lint && pnpm test-all && pnpm build"
"verify-all": "pnpm lint && pnpm test-all && pnpm build",
"env:setup": "node scripts/setup-env.js",
"dev": "pnpm run env:setup && docker compose --env-file .env -f docker-compose.dev.yml up --build -d",
"dev:down": "docker compose -f docker-compose.dev.yml down -v"
},
"dependencies": {
"@dotenvx/dotenvx": "^1.51.1",
Expand Down
5 changes: 5 additions & 0 deletions scripts/generate-docs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { execSync } from 'child_process';

execSync('npx prisma generate --no-hints >/dev/null 2>&1');
execSync('npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script 2>&1 | grep -E "^(--|CREATE|ALTER|DROP)" > docs/schema.sql');
console.log('Schemas gerados! Para gerar openapi.json execute: pnpm start-dev');
8 changes: 8 additions & 0 deletions scripts/setup-env.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import fs from 'fs';

if (!fs.existsSync('.env')) {
fs.copyFileSync('.env.dev.example', '.env');
console.log('.env file created successfully!');
} else {
console.log('.env file already exists.');
}