Skip to content

Este repositório contém o código-fonte do backend para a aplicação Feira Solidária, um sistema de compartilhamento de alimentos e produtos. O objetivo é conectar doadores a pessoas que precisam, de forma simples e solidária.

Notifications You must be signed in to change notification settings

fcooantonio/feira-solidaria-backend

Repository files navigation

Feira Solidária – Backend

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.


Sumário


Equipe

Frontend: Repositório do Frontend


Tecnologias Principais

  • 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

Arquitetura e Estrutura do Projeto

/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

Setup do Ambiente

1. Clonar o Repositório

git clone https://github.com/fcooantonio/feira-solidaria-backend.git
cd feira-solidaria-backend

2. Instalar Dependências

Recomendamos utilizar Node v24.5.0 LTS (via nvm) para evitar incompatibilidades.

nvm install 24.5.0
nvm use 24.5.0

npm install

3. Configurar Variáveis de Ambiente

Crie 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"

4. Executar as Migrations

npx prisma migrate dev --name init

5. Dados de Exemplo (Seed)

O 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 seed

O que é criado

Usuários (senha: 123)

Nome E-mail
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 dev antes 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).

6. Iniciar o Servidor

npm run dev

O servidor roda em http://localhost:3000 (ou a porta definida em PORT).


Funcionalidades da API

  • 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

Comandos Úteis

  • npm run dev: Inicia o servidor com nodemon
  • npx prisma studio: Interface visual para o banco de dados
  • npx prisma migrate dev: Aplica migrações
  • npx prisma generate: Atualiza o cliente Prisma

Guia de Commits Semânticos

Para manter o histórico limpo e organizado, utilizamos commits semânticos. Consulte o Guia de Commits Semânticos.


Cuidados no Desenvolvimento Colaborativo

  • 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)

Referências

About

Este repositório contém o código-fonte do backend para a aplicação Feira Solidária, um sistema de compartilhamento de alimentos e produtos. O objetivo é conectar doadores a pessoas que precisam, de forma simples e solidária.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5