Este projeto tem como objetivo desenvolver o back-end para a disciplina Certificadora de Competência Identitária do curso de Análise e Desenvolvimento de Sistemas da UTFPR-CP.
A proposta central é implementar um sistema de gestão de estoque para o projeto de extensão Bons Fluidos, uma iniciativa da mesma instituição que busca apoiar meninas de outras entidades com a doação de produtos de higiene feminina.
- Giovana Araújo Hoffmann
- Mariana de Oliveira
O projeto segue uma arquitetura modular em camadas, conforme a estrutura abaixo:
src
├── controllers # Lógica de aplicação e manipulação de requisições
├── db # Configurações de banco de dados
├── middlewares # Funções intermediárias como autenticação e validação
├── models # Modelos de dados e esquemas
├── routes # Definição de rotas e seus endpoints
├── scripts # Scripts auxiliares para tarefas externas
└── app.js # Configuração principal da aplicação
-
Autenticação
- Dois tipos de usuários:
admin_master
eadmin
. - Sistema só permite a existência de um usuário
admin_master
no banco. - Registro de movimentações, cadastro de produtos e participantes permitido para ambos.
- Criação e exclusão de usuários permitido apenas para o usuário
admin_master
.
- Dois tipos de usuários:
-
Cadastro e Edição
- Produtos: Cadastro e edição de produtos disponíveis no estoque.
- Participantes: Registro e edição de doadores (anônimos ou identificados) e receptores.
- Usuários: Registro e edição de usuários (admins ou admin_master).
-
Registro de Movimentações
- Registro detalhado de movimentações no estoque:
- Tipo: Entrada ou saída.
- Quantidade.
- Informações do doador ou receptor.
- Usuário responsável pelo registro.
- Ajuste automático do estoque com base nas movimentações.
- Registro detalhado de movimentações no estoque:
-
Node.js: Ambiente de execução para JavaScript no lado do servidor.
Versão: v20.16.0
Link: Node.js -
Express.js: Framework web para criação de APIs RESTful.
Versão: express@4.21.1
Link: Express.js -
Sequelize: ORM para modelagem de dados e interação com o banco de dados.
Versão: sequelize@6.37.5
Link: Sequelize -
Docker: Plataforma de conteinerização para criar, implantar e executar aplicações em ambientes isolados.
Versão: 27.3.1
Link: Docker -
docker-compose: Orquestração de múltiplos contêineres Docker.
Versão: 1.29.2
Link: Docker Compose
-
PostgreSQL: Banco de dados relacional utilizado no projeto.
Versão: 16.6
Link: PostgreSQL -
PgAdmin4: Interface gráfica para gerenciamento e administração do banco de dados PostgreSQL.
Versão: 8.14
Link: PgAdmin4
-
bcrypt: Biblioteca para hashing de senhas.
Versão: bcrypt@5.1.0
Link: bcrypt -
jsonwebtoken (JWT): Biblioteca para autenticação baseada em tokens.
Versão: jsonwebtoken@9.0.2
Link: jsonwebtoken -
dotenv: Biblioteca para gerenciamento de variáveis de ambiente.
Versão: dotenv@16.1.4
Link: dotenv -
nodemon: Ferramenta para reiniciar automaticamente o servidor durante o desenvolvimento.
Versão: nodemon@3.0.1
Link: nodemon
-
Clone este repositório:
git clone https://github.com/Matari73/AS65A-Grupo-4-BackEnd
-
Configure as variáveis de ambiente: Crie um arquivo
.env
na raiz do projeto com os campos exemplificados no.env-example
-
Faça a Build da aplicação:
docker-compose up -d --build
-
Inicie o servidor:
npm run dev
Os testes podem ser realizados usando a interface do front-end do sistema, desenvolvida pelo Pedro de Oliveira Machado e pelo Sérgio Alexandre Alvarenga de Almeida. Para acessar o repositório do front-end e seguir as instruções de configuração, acesse: AS65A-Grupo-4-FrontEnd.
O projeto possui um arquivo seed.js
que insere um usuário do tipo admin_master
no banco de dados com as seguintes credenciais:
- Nome:
admin_master
- Senha:
sua_senha_segura_master
Essas credenciais devem ser utilizadas para realizar o login na aplicação.
O arquivo seed.js
também insere produtos, participantes e movimentações iniciais. Para realizar movimentações, é necessário que os produtos e participantes envolvidos sejam cadastrados previamente no sistema.