Passo‑a‑passo para preparar o ambiente em seu computador (Windows 10/11): configurar PostgreSQL 17, Node 20, clonar o repositório, instalar, migrar, popular e rodar backend e frontend.
- PostgreSQL 17 e pgAdmin 4 já instalados (como informado).
- Git instalado.
- Node.js 20 LTS (se não tiver, ver Seção 4 para instalar).
- Acesso de rede para
npm i(se a rede tiver proxy, veja Troubleshooting).
Queremos conseguir rodar psql --version em qualquer terminal.
- Abra Iniciar → Editar as variáveis de ambiente do sistema.
- Clique em Variáveis de Ambiente….
- Em Variáveis de usuário selecione Path → Editar → Novo.
- Adicione:
C:\Program Files\PostgreSQL\17\bin - OK → OK → OK. Feche e abra um novo PowerShell ou Git Bash.
Teste:
psql --versionAbra um PowerShell novo (não precisa ser Admin) e rode:
$pgBin = 'C:\Program Files\PostgreSQL\17\bin'
[Environment]::SetEnvironmentVariable('Path', $env:Path + ';' + $pgBin, 'User')Feche e abra outro PowerShell/Git Bash e teste psql --version.
Get-Service postgresql* # deve listar: postgresql-x64-17
# Se estiver Stopped:
Start-Service postgresql-x64-17psql -U postgres -h 127.0.0.1 -d postgres -W -c "CREATE DATABASE mvc_livraria;"Use a senha do usuário
postgresdefinida na instalação.
Alternativa via pgAdmin 4:
- Conecte ao servidor → clique direito em Databases → Create → Database… → Database:
mvc_livraria→ Save.
Use Git Bash ou PowerShell:
mkdir -p ~/Documents/MVC-DEV && cd ~/Documents/MVC-DEV
git clone https://github.com/cai0duque/Mini-ERP-Livraria
cd Mini-ERP-Livraria- Instale Node 20 LTS.
- Abra um novo terminal e verifique:
node -v # deve ser >= 20.x
npm -vnvm install 20.16.0
nvm use 20.16.0
node -v- Extraia o zip do Node 20 para, por ex.:
C:\Users\SEU_USUARIO\Documents\node20. - Coloque essa pasta no PATH do usuário (GUI ou
setx).
Motivo: Prisma 6, bcrypt 6 e Express 5 exigem Node >= 18 (recomendado 20 LTS).
Entre na pasta do backend e crie o arquivo de ambiente:
cd backend
# crie/edite .env (na pasta backend/)Conteúdo de backend/.env (ajuste a senha):
DATABASE_URL="postgresql://postgres:SUA_SENHA@localhost:5432/mvc_livraria?schema=public"
PORT=3333
CORS_ORIGIN=http://localhost:3000Valide se a variável está acessível:
node -e "require('dotenv').config(); console.log(process.env.DATABASE_URL)"Instalação e Prisma:
npm ci # se a rede bloquear, use: npm i
npx prisma generate
npx prisma migrate dev
npx prisma db seed # opcional (se existir seed)Subir a API:
npm run dev # API em http://localhost:3333Teste rápido:
curl http://localhost:3333/api/healthEm outro terminal:
cd ~/Documents/MVC-DEV/Mini-ERP-Livraria/frontend
# copiar sample e editar (se necessário)
# Se o repo tiver .env.local.sample, use:
# cp .env.local.sample .env.local
# Caso contrário, crie direto:
printf "NEXT_PUBLIC_API_URL=http://localhost:3333/api\n" > .env.local
npm i
npm run dev # http://localhost:3000/adminNo navegador, acessar: http://localhost:3000/admin.
- ``** não reconhecido** → PATH não inclui
C:\Program Files\PostgreSQL\17\bin(Seção 1). - `` → serviço parado:
Start-Service postgresql-x64-17. - Senha incorreta → teste login no pgAdmin; se necessário redefina a senha do usuário
postgrespor lá. - ``** (Prisma)** →
.envdeve estar em backend/ e carregado. - ``** timeouts** (rede da faculdade/proxy):
npm config set fetch-timeout 600000 npm config set fetch-retry-maxtimeout 600000 # Se houver proxy institucional: # npm config set proxy http://USUARIO:SENHA@proxy:PORTA # npm config set https-proxy http://USUARIO:SENHA@proxy:PORTA
- Versão do Node incompatível → garantir
node -v≥ 20. - Porta ocupada → backend usa 3333, frontend 3000. Feche processos em conflito.
- CORS → se abrir o admin de outra origem, ajuste
CORS_ORIGINno.envdo backend.
- Criar banco do zero (psql):
psql -U postgres -h 127.0.0.1 -d postgres -W -c "DROP DATABASE IF EXISTS mvc_livraria; CREATE DATABASE mvc_livraria;"
- Backend completo (instalar → prisma → rodar):
cd backend && npm i && npx prisma generate && npx prisma migrate dev && npx prisma db seed && npm run dev
- Frontend rápido:
cd frontend && npm i && npm run dev
node -v→ 20.xpsql --version→ psql (PostgreSQL) 17- Banco
mvc_livrariaexiste (pgAdmin/\lno psql) backend/.envcorreto e carregando 3 variáveisGET http://localhost:3333/api/healthresponde{ ok: true, ... }- Admin em
http://localhost:3000/adminlista entidades e permite CRUD/compra.