Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

RaizesDoNordeste_backend

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Raízes do Nordeste API

API REST desenvolvida em Delphi utilizando o framework Horse para gerenciamento de pedidos, produtos, estoque e pagamentos em uma rede de restaurantes.


Tecnologias utilizadas

  • Delphi 12 Community Edition
  • Horse Framework
  • FireDAC
  • PostgreSQL
  • JWT (Autenticação)
  • BOSS (Gerenciador de pacotes)
  • Swagger (GBSwagger)

Requisitos

Antes de executar o projeto, é necessário ter instalado:

  • Delphi 12 Community Edition
  • PostgreSQL (versão 14+ recomendada)
  • Git
  • BOSS (Gerenciador de dependências)

Estrutura do projeto

pascal
src/
 ????????? controllers
 ????????? services
 ????????? dao
 ????????? models
 ????????? routes
 ????????? utils
 ????????? database
 ????????? constantes
 ????????? Swagger
db/
 ????????? migrations
libs/
 ????????? (DLLs do PostgreSQL)
docs/
 ????????? (prints dos diagramas)
tests/ 
 ????????? (collection insomnia das requisi????es)

Arquivos de apoio

A collection do Insomnia está disponível em:

tests/RaizesDoNordeste_Insomnia_Collection.json

Os diagramas do projeto estão disponíveis em:

docs/diagramas_raizes_do_nordeste.drawio

As migrations estão disponíveis em:

db/migrations


Instalação

1. Clonar o repositório

bash
git clone https://github.com/ThiagoBarcell/RaizesDoNordeste_backend.git

Instalar dependências (BOSS)

Este projeto utiliza o BOSS como gerenciador de pacotes para Delphi.

Como instalar as dependências

  1. Abra o Prompt de Comando (CMD) ou PowerShell
  2. Navegue até a pasta raiz do projeto:
bash
cd caminho/do/projeto

Exemplo:

bash
cd D:\Projetos\Delphi\RaizesDoNordeste
  1. Execute o comando:
bash
boss install

Este comando irá baixar automaticamente todas as dependências necessárias do projeto, como:

  • Horse Framework
  • Horse JWT
  • Horse Logger
  • GBSwagger

Observação

O arquivo BOSS.exe já se encontra na pasta do projeto. Caso deseje instalar globalmente ou obter mais informações, acesse:

https://github.com/HashLoad/boss


Importante

O comando boss install deve ser executado dentro da pasta raiz do projeto.


Configuração do banco de dados

3. Criar banco

No PostgreSQL:

pascal
RaizesDoNordesteDB

4. Executar migrations

Execute os arquivos da pasta:

pascal
db/migrations

Na ordem:

pascal
V01_...
V02_...
V03_...
V04_...
V05_...

Configuração do ambiente

5. Criar arquivo .env

Na raiz do projeto:

pascal
API_PORT=9000

DB_HOST=localhost
DB_PORT=5432
DB_NAME=RaizesDoNordesteDB
DB_USER=postgres
DB_PASSWORD=sua_senha

JWT_SECRET=HORSE_API_TOP

APP_ENV=development

Configuração das DLLs do PostgreSQL

As DLLs devem estar na pasta:

pascal
libs/

O projeto já está configurado para carregá-las automaticamente via:

pascal
SetDllDirectory(...)

Executando o projeto

Abra o projeto no Delphi e execute:

pascal
Proj_RaizesDoNordesteAPI.dpr

Saída esperada:

pascal
Servidor: 9000

Porta padrão

A API roda em:

pascal
http://localhost:9000

Autenticação

A API utiliza autenticação JWT.

Fluxo:

  1. POST /signup
  2. POST /login
  3. Utilizar o token nas demais rotas:
pascal
Authorization: Bearer SEU_TOKEN

Usuário administrador padrão

Após executar as seeds, o sistema possui um usuário administrador para testes:

E-mail: ADMIN Senha: 1

Esse usuário possui perfil ADMIN e pode acessar rotas administrativas, como cadastro de produtos e movimentação de estoque.


Documentação Swagger

Acesse:

pascal
http://localhost:9000/swagger

Endpoints principais

Auth

  • POST /signup
  • POST /login

Produtos

  • GET /produtos
  • POST /produtos
  • PUT /produtos

Pedidos

  • GET /pedidos
  • POST /pedidos
  • PATCH /pedidos/{id}/status

Estoque

  • GET /estoque
  • POST /estoque/movimentar

Fidelidade

  • GET /fidelidade
  • POST /fidelidade/consentimento
  • POST /fidelidade/resgatar

Pagamentos

  • POST /pagamentos

Fluxo do sistema

pascal
Cadastro ??? Login ??? Criar Produto ??? Ajustar Estoque ??? Criar Pedido ??? Pagamento Mock ??? Fidelidade ??? Atualizar Status ??? Entrega

Controle de estoque

  • Entrada
  • Saída
  • Ajuste
  • Baixa automática por pedido

Logs de auditoria

O sistema registra:

  • criação de pedidos
  • alterações de status
  • movimentações de estoque
  • pagamentos

Pagamento (Mock)

Simulação de pagamento via endpoint:

pascal
POST /pagamentos

Programa de Fidelidade

O sistema possui um programa de fidelidade com controle de consentimento do usuário, atendendo aos cuidados mínimos relacionados à LGPD.

Funcionalidades implementadas:

  • consulta de saldo de pontos
  • aceite/remoção de consentimento
  • resgate de pontos
  • crédito automático de pontos após pagamento aprovado
  • histórico de movimentações de pontos

A regra adotada foi:

1 real pago = 1 ponto


Testes

Recomenda-se utilizar ferramentas como:

  • Insomnia
  • Postman

Para testar os endpoints da API utilizando o token JWT gerado no login.


Observações importantes

  • Separação em camadas (Controller / Service / DAO)
  • Controle de transição de status de pedidos
  • Validações de negócio implementadas
  • Perfis de Usuário (Roles) O sistema foi modelado com suporte aos seguintes perfis de acesso: Role Descrição ADMIN Administração geral do sistema CLIENTE Usuário final responsável pelos pedidos ATENDENTE Funcionário do balcão COZINHA Responsável pela preparação dos pedidos

Autor

Thiago Afonso Barcelos RU: 4673653


Considerações finais

Este projeto atende aos requisitos propostos no trabalho, incluindo:

  • API REST completa
  • Autenticação JWT
  • Controle de estoque
  • Pagamento mock
  • Logs de auditoria
  • Documentação Swagger
  • Estrutura organizada e escalável