Este repositório contém o código‑fonte do backend da aplicação Feira Solidária, um sistema de compartilhamento de alimentos e produtos que conecta doadores a pessoas que precisam, de forma simples e solidária.
A API é RESTful, construída com Node.js, Express e Prisma ORM, utilizando PostgreSQL como banco de dados. Ela gerencia usuários, itens para doação e regras de negócio, oferecendo uma interface segura para o frontend em React.
- Feira Solidária – Backend
- Breno — breno-wesley
- Francisco Antonio — fcooantonio
- Isis — isislavor
- João Afonso — westjoao12
- João Guilherme — jguii
- Sarah — sarahCavalcantev
- Sabrinne — sabrinnesousa
Frontend: Repositório do Frontend
- Node.js — Ambiente de execução do JavaScript no servidor
- Express — Framework para a API REST
- Prisma ORM — Modelagem e acesso ao banco de dados
- PostgreSQL — Banco de dados relacional
- JWT (JSON Web Tokens) — Autenticação e proteção de rotas
- Bcrypt — Hash de senhas
/prisma # Esquema e migrações do banco de dados
/src
/controllers # Lógica das rotas (handlers)
/routes # Definições de rotas HTTP
/middlewares # Autenticação, validação etc.
/services # Regras de negócio
/utils # Funções auxiliares
/config # Configurações de conexão e ambiente
git clone https://github.com/fcooantonio/feira-solidaria-backend.git
cd feira-solidaria-backendRecomendamos utilizar Node v24.5.0 LTS (via nvm) para evitar incompatibilidades.
nvm install 24.5.0
nvm use 24.5.0
npm installCrie um arquivo .env na raiz do projeto (nunca commitar). Exemplo:
DATABASE_URL="postgresql://USUARIO:SENHA@HOST:PORTA/NOME_DO_BANCO?schema=public"
JWT_SECRET="CHAVE_SECRETA_AQUI"
PORT="NUMERO_DA_PORTA"npx prisma migrate dev --name initO projeto inclui um script de seed (Lorem Picsum) para popular o banco com dados de desenvolvimento:
- Usuários (4) com senha 123 e avatar automático por inicial
- Categorias (12)
- Produtos (12) — um por categoria, com imagens do Lorem Picsum (
https://picsum.photos/id/<id>/800/600) - Sem doações criadas
Executar o seed
npm run seedO que é criado
Usuários (senha: 123)
| Nome | |
|---|---|
| Ana Souza | [email protected] |
| Bruno Lima | [email protected] |
| Carla Dias | [email protected] |
| Diego Melo | [email protected] |
Categorias (12) Alimentos não perecíveis, Hortifruti, Laticínios, Padaria, Bebidas, Higiene pessoal, Limpeza, Infantil, Roupas, Calçados, Livros, Utensílios domésticos.
Produtos (12) Ex.: Arroz 5kg, Cesta de legumes, Leite integral, Pães caseiros, Suco de uva, Kit higiene, Produtos de limpeza, Fraldas M, Casaco de inverno, Tênis esportivo, Livros infantojuvenis, Conjunto de panelas.
Dicas
- Repetir o seed: o script limpa as tabelas antes de inserir (ordem segura:
Doacao → Produto → Categoria → Usuario). - Conflitos de schema: após alterar o Prisma Schema, rode
npx prisma migrate devantes do seed. - Não use o seed em produção: ele é voltado a desenvolvimento/testes locais.
- Imagens: os IDs do Picsum são fixos para evitar variação a cada execução (troque IDs para alterar as imagens).
npm run devO servidor roda em http://localhost:3000 (ou a porta definida em PORT).
- CRUD de itens doados
- Cadastro e autenticação de usuários
- Filtros por categoria, bairro e palavra‑chave
- Visualização de contato do doador (após login)
- Autenticação com JWT
npm run dev: Inicia o servidor com nodemonnpx prisma studio: Interface visual para o banco de dadosnpx prisma migrate dev: Aplica migraçõesnpx prisma generate: Atualiza o cliente Prisma
Para manter o histórico limpo e organizado, utilizamos commits semânticos. Consulte o Guia de Commits Semânticos.
- Padronização do Node.js: utilizar Node v24.5.0
- Commits claros: mensagens descritivas e consistentes
- Pull Requests: preferir PRs com revisão antes do merge
- Evitar conflitos: atualize seu repositório local antes de começar (
git pull)