Skip to content

pupunha-code/beatwave

Repository files navigation

BeatWave

Monorepo com frontend em Next.js, backend em NestJS, Drizzle ORM centralizado e tipos compartilhados.

Estrutura

  1. apps/web: frontend
  2. apps/api: backend
  3. packages/database: Drizzle ORM e client do banco
  4. packages/types: tipos compartilhados
  5. packages/tsconfig: bases de TypeScript

Requisitos

  1. Node.js 20 ou superior
  2. pnpm 10
  3. Docker com docker compose

Banco local

O projeto sobe um PostgreSQL local via docker compose com esta configuracao:

  1. host 127.0.0.1
  2. porta 5434
  3. database postgres
  4. usuario postgres
  5. senha root
  6. schema beatwave

URL padrao:

postgresql://postgres:root@127.0.0.1:5434/postgres?schema=beatwave

Variáveis de ambiente

Os arquivos usados hoje são estes:

  1. apps/api/.env
  2. apps/web/.env
  3. packages/database/.env

As variáveis mais importantes são:

Backend

  1. PORT
  2. DATABASE_URL
  3. BETTER_AUTH_SECRET
  4. BETTER_AUTH_URL
  5. URL_FRONTEND
  6. SPOTIFY_CLIENT_ID
  7. SPOTIFY_CLIENT_SECRET
  8. GOOGLE_CLIENT_ID
  9. GOOGLE_CLIENT_SECRET
  10. TWITTER_CLIENT_ID
  11. TWITTER_CLIENT_SECRET
  12. R2_ACCESS_KEY_ID
  13. R2_SECRET_ACCESS_KEY
  14. R2_BUCKET
  15. R2_ENDPOINT
  16. R2_REGION

Frontend

  1. NEXT_PUBLIC_API_LOCAL_URL
  2. NEXT_PUBLIC_API_PRODUCTION_URL

Database

  1. DATABASE_URL

Instalação

Na raiz do projeto:

pnpm install

Preparar banco

Gerar uma nova migracao a partir de alteracoes no schema:

pnpm db:generate

Aplicar migracoes pendentes no banco:

pnpm db:migrate

Rodar em desenvolvimento

Subir banco, aplicar migracoes e iniciar frontend + backend:

pnpm dev

O predev executa automaticamente:

  1. docker compose up -d --wait
  2. pnpm db:migrate

URLs locais:

  1. frontend: http://localhost:3000
  2. backend: http://localhost:8001
  3. auth do backend: http://localhost:8001/api/auth

Comandos úteis

Build do monorepo:

pnpm build

Lint do monorepo:

pnpm lint

Testes do monorepo:

pnpm test

Rodar apenas o frontend:

pnpm --filter @beatwave/web dev

Rodar apenas o backend:

pnpm --filter @beatwave/api dev

Abrir Drizzle Studio:

pnpm --filter @beatwave/database studio

Parar o banco local:

pnpm db:stop

Fluxo recomendado

pnpm install
pnpm dev

Quando houver mudanca no schema Drizzle:

pnpm db:generate
pnpm db:migrate

Validação rápida

Se quiser validar o projeto sem subir em modo de desenvolvimento:

pnpm lint
pnpm test
pnpm build

Releases

No releases published

Packages

 
 
 

Contributors