- Node.js 18+ (Download)
- pnpm (Instalação)
- Git (Download)
- Docker e Docker Compose (Instalação)
# Verificar versões
node --version # >= 18.0.0
pnpm --version # >= 8.0.0
git --version # Qualquer versão recente
docker --version # >= 20.0.0
docker-compose --version # >= 2.0.0git clone <repository-url>
cd Varion# Execute o script de configuração
./scripts/setup-env.sh
# Ou configure manualmente
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env# Build e start de todos os serviços
docker-compose up --build
# Em modo detached (background)
docker-compose up --build -d
# Ver logs em tempo real
docker-compose logs -f- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- Documentação: http://localhost:3001/api-docs
- Database: localhost:5432
# Instalar dependências do workspace
pnpm install
# Ou instalar individualmente
cd backend && pnpm install
cd ../frontend && pnpm install# Instalar PostgreSQL
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib
# macOS
brew install postgresql
# Iniciar serviço
sudo systemctl start postgresql # Linux
brew services start postgresql # macOS
# Criar banco e usuário
sudo -u postgres psql
CREATE DATABASE varion_dev;
CREATE USER varion WITH PASSWORD 'varion_password';
GRANT ALL PRIVILEGES ON DATABASE varion_dev TO varion;
\q# Executar apenas o banco
docker-compose up db -d
# Verificar se está rodando
docker-compose ps# Copiar arquivo exemplo
cp backend/.env.example backend/.env
# Editar conforme necessário
nano backend/.envExemplo de configuração:
# Database
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=varion
DB_PASSWORD=varion_password
DB_DATABASE=varion_dev
# Application
PORT=3001
NODE_ENV=development
# Pool de conexões
DB_POOL_MAX=10
DB_POOL_MIN=2# Copiar arquivo exemplo
cp frontend/.env.example frontend/.env.local
# Editar conforme necessário
nano frontend/.env.localExemplo de configuração:
# API URLs
NEXT_PUBLIC_API_URL=http://localhost:3001
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Development
NODE_ENV=developmentcd backend
# Executar migrations
pnpm run migrate
# Verificar status
pnpm run migrate:showcd backend
pnpm start:devcd frontend
pnpm dev{
"compilerOptions": {
"target": "ES2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"outDir": "./dist",
"rootDir": "./src"
}
}{
"compilerOptions": {
"target": "ES2022",
"lib": ["dom", "dom.iterable", "ES6"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"module": "esnext",
"moduleResolution": "bundler",
"jsx": "preserve",
"plugins": [{"name": "next"}]
}
}module.exports = {
root: true,
extends: ['@repo/eslint-config'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2022,
sourceType: 'module',
},
}services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-varion_dev}
POSTGRES_USER: ${POSTGRES_USER:-varion}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-varion_password}
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
backend:
build: ./backend
environment:
DB_HOST: db
DB_PORT: 5432
depends_on:
- db
ports:
- "3001:3001"
frontend:
build: ./frontend
environment:
NEXT_PUBLIC_API_URL: http://localhost:3001
depends_on:
- backend
ports:
- "3000:3000"
volumes:
postgres_data:cd backend
# ✅ Dependências já instaladas
# jest, @types/jest, supertest, @types/supertest, better-sqlite3
# ✅ Jest configurado (jest.config.js já existe)
# Configuração completa com TypeScript, cobertura e SQLite em memória
# ✅ Executar testes
pnpm test # Todos os testes (517 testes)
pnpm test:coverage # Com cobertura (98.58%)
pnpm test:watch # Modo watch para desenvolvimento
pnpm test:verbose # Detalhado com logs
# ✅ Visualizar cobertura
open coverage/lcov-report/index.htmlbackend/src/
├── __tests__/
│ ├── basic.test.ts # ✅ Testes básicos
│ ├── integration.test.ts # ✅ Testes de integração
│ ├── integration/
│ │ ├── states.integration.test.ts # ✅ 436 linhas
│ │ └── todo.integration.test.ts # ✅ Completo
│ ├── examples/ # ✅ Templates
│ ├── setup/ # ✅ Configuração
│ └── mocks/ # ✅ Mocks
└── modules/ # ✅ Testes por módulo
├── projects/*.test.ts # ✅ 7 arquivos
├── states/*.test.ts # ✅ 5 arquivos
├── todo/*.test.ts # ✅ 3 arquivos
└── comment/*.test.ts # ✅ 3 arquivos
cd frontend
# 🟡 Planejado: Instalar dependências de teste
pnpm add -D jest @testing-library/react @testing-library/jest-dom
# 🟡 Planejado: Configurar Jest
echo 'const nextJest = require("next/jest");
const createJestConfig = nextJest({ dir: "./" });
module.exports = createJestConfig({
testEnvironment: "jsdom",
setupFilesAfterEnv: ["<rootDir>/jest.setup.js"]
});' > jest.config.js
# 🟡 Status: Configuração básica existe, implementação pendente# 🟡 Planejado: Configuração Playwright
cd frontend
pnpm add -D @playwright/test
# 🟡 Configuração futura
npx playwright install{
"scripts": {
"dev": "concurrently \"pnpm --filter backend start:dev\" \"pnpm --filter frontend dev\"",
"build": "pnpm --filter backend build && pnpm --filter frontend build",
"test": "pnpm --filter backend test && pnpm --filter frontend test",
"lint": "pnpm --filter backend lint && pnpm --filter frontend lint",
"type-check": "pnpm --filter backend type-check && pnpm --filter frontend type-check"
}
}# Resetar banco de dados
./scripts/reset-db.sh
# Gerar nova migration
./scripts/generate-migration.sh "AddNewTable"
# Backup do banco
./scripts/backup-db.sh
# Restaurar backup
./scripts/restore-db.sh backup-file.sql# Verificar se PostgreSQL está rodando
sudo systemctl status postgresql # Linux
brew services list | grep postgres # macOS
# Verificar conectividade
psql -h localhost -U varion -d varion_dev# Encontrar processo usando a porta
lsof -i :3000 # ou :3001, :5432
sudo kill -9 <PID>
# Usar portas alternativas
PORT=3002 pnpm start:dev# Limpar cache do pnpm
pnpm store prune
# Reinstalar dependências
rm -rf node_modules pnpm-lock.yaml
pnpm install# Dar permissões de execução
chmod +x scripts/*.sh
# Problemas de volume
sudo chown -R $USER:$USER .# Logs de todos os serviços
docker-compose logs
# Logs de serviço específico
docker-compose logs backend
# Seguir logs em tempo real
docker-compose logs -f frontend# Modo debug
DEBUG=* pnpm start:dev
# Logs específicos
DEBUG=express:* pnpm start:devSe você encontrar problemas durante a instalação:
- Verifique os pré-requisitos - Versões corretas instaladas
- Consulte os logs - Informações de erro detalhadas
- Limpe o cache - pnpm store prune e reinstale
- Verifique as portas - Certifique-se de que estão livres
- Consulte a documentação - README específicos de cada módulo