https://github.com/francislauriano/sge_flask
Sistema de gerenciamento de pedidos de uma loja online desenvolvido em Python com microframework Flask.
https://github.com/francislauriano/sge_flask
blueprint fernet-cryptography flask jwt marshmallow postgresql python sqlalchemy-orm
Last synced: 2 months ago
JSON representation
Sistema de gerenciamento de pedidos de uma loja online desenvolvido em Python com microframework Flask.
- Host: GitHub
- URL: https://github.com/francislauriano/sge_flask
- Owner: FrancisLauriano
- Created: 2024-10-28T06:41:25.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-06T01:04:22.000Z (over 1 year ago)
- Last Synced: 2025-02-09T09:25:11.489Z (over 1 year ago)
- Topics: blueprint, fernet-cryptography, flask, jwt, marshmallow, postgresql, python, sqlalchemy-orm
- Language: Python
- Homepage:
- Size: 35.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
SGE - Sistema de Gerenciamento Empresarial
> Status do Projeto: :heavy_check_mark: (concluido) | :warning: (em desenvolvimento) | :x: (não iniciada)
### Tópicos
:small_blue_diamond: [Descrição do Projeto](#descrição-do-projeto-writing_hand) :heavy_check_mark:
:small_blue_diamond: [Objetivos do Projeto](#objetivos-do-projeto-dart) :heavy_check_mark:
:small_blue_diamond: [Funcionalidades](#funcionalidades-video_game) :heavy_check_mark:
:small_blue_diamond: [Arquitetura](#arquitetura-triangular_ruler-straight_ruler) :heavy_check_mark:
:small_blue_diamond: [Rotas - Endpoints](#rotas---endpoints-arrows_clockwise) :heavy_check_mark:
:small_blue_diamond: [Criar e ativar ambiente virtual](#criar-e-ativar-ambiente-virtual-white_check_mark)
:small_blue_diamond: [Instalação das depedências](#instalação-das-depedências-arrow_down_small)
:small_blue_diamond: [Executar Migrações](#executar-migrações-arrow_forward)
:small_blue_diamond: [Executar App](#executar-app-arrow_forward)
:small_blue_diamond: [Linguagens, Tecnologias e Bibliotecas Utilizadas](#linguagens-tecnologias-dependências-e-libs-utilizadas-hammer_and_wrench-gear-books)
---
## Descrição do Projeto :writing_hand:
O **Sistema de Gerenciamento Empresarial (SGE)** é uma solução para simplificar e centralizar o gerenciamento de operações de uma empresa, incluindo o controle de clientes, produtos, categorias, pedidos e detalhes dos pedidos. Utilizando uma arquitetura de camadas e uma API RESTful, o SGE oferece uma plataforma escalável e segura para o gerenciamento empresarial.
---
## Objetivos do Projeto :dart:
**1. Centralizar o Gerenciamento**
- Centralizar e otimizar a gestão de clientes, produtos e pedidos.
**2. Automação de Processos**
- Automatizar processos como cadastro de pedidos e atualização de estoque.
**3. Facilitar a consulta e gerenciamento**
- Facilitar a consulta e gerenciamento de dados relacionados a clientes, produtos e pedidos.
**4. Segurança e Autenticação**
- Utilizar JWT para proteger os dados e assegurar operações seguras.
**5. Facilidade de Integração**
- Proporcionar uma API RESTful robusta que permita integração com outros sistemas.
---
## Funcionalidades :video_game:
- **Cadastro e Gerenciamento de Clientes:** Cadastro, consulta, atualização e exclusão de clientes.
- **Cadastro e Gerenciamento de Produtos:** Cadastro, consulta, atualização e exclusão de produtos, associando-os a categorias.
- **Cadastro e Gerenciamento de Categorias:** Cadastro, consulta, atualização e exclusão de categorias.
- **Criação e Atualização de Pedidos:** Criação de pedidos vinculados a clientes, com detalhes específicos para cada produto.
- **Autenticação e Autorização com JWT:** Segurança para acesso e operações sensíveis.
- **Criptografia de Dados Sensíveis:** Utilização de `Fernet` para criptografar informações sensíveis.
---
## Arquitetura :triangular_ruler: :straight_ruler:
O sistema é estruturado em uma arquitetura de camadas que separa responsabilidades e facilita a manutenção e escalabilidade. A aplicação usa o framework Flask para o backend e é desenvolvida com PostgreSQL como banco de dados relacional.
### Descrição da Arquitetura
- **Configuração**: Configurações de ambiente e variáveis sensíveis são carregadas de um arquivo `.env`.
- **Banco de Dados**: PostgreSQL, gerenciado pelo SQLAlchemy.
- **Autenticação**: Implementação de autenticação JWT para proteger endpoints e operações sensíveis.
- **Camadas da Aplicação**:
- **Models**: Define a estrutura das tabelas e relacionamentos no banco de dados.
- **Controllers**: Implementa a lógica de cada endpoint e orquestra as operações.
- **Services**: Contém a lógica de negócios.
- **Middlewares**: Configuração de CORS e autenticação.
- **Rotas**: Gerencia as rotas da API e define os endpoints.
---
## Rotas - Endpoints :arrows_clockwise:
### Autenticação
#### Login
- **POST** `/login`
- **Descrição**: Autentica o usuário e retorna um token JWT.
- **Body**:
```json
{
"email": "string",
"senha": "string"
}
```
- **Resposta**:
```json
{
"token": "string"
}
```
---
### Clientes
#### Criar Cliente
- **POST** `/clientes`
- **Descrição**: Cadastra um novo cliente.
- **Body**:
```json
{
"nome": "string",
"email": "string"
}
```
#### Listar Clientes
- **GET** `/clientes`
- **Descrição**: Lista todos os clientes.
#### Buscar Cliente por ID
- **GET** `/clientes/{id}`
- **Descrição**: Busca um cliente específico pelo ID.
#### Atualizar Cliente
- **PUT** `/clientes/{id}`
- **Descrição**: Atualiza as informações de um cliente.
#### Excluir Cliente
- **DELETE** `/clientes/{id}`
- **Descrição**: Exclui um cliente específico.
---
### Produtos
#### Criar Produto
- **POST** `/produtos`
- **Descrição**: Cadastra um novo produto.
- **Body**:
```json
{
"nome": "string",
"id_categoria": "string"
}
```
#### Listar Produtos
- **GET** `/produtos`
- **Descrição**: Lista todos os produtos.
#### Buscar Produto por ID
- **GET** `/produtos/{id}`
- **Descrição**: Busca um produto específico pelo ID.
#### Atualizar Produto
- **PUT** `/produtos/{id}`
- **Descrição**: Atualiza as informações de um produto.
#### Excluir Produto
- **DELETE** `/produtos/{id}`
- **Descrição**: Exclui um produto específico.
---
### Categorias
#### Criar Categoria
- **POST** `/categorias`
- **Descrição**: Cadastra uma nova categoria.
#### Listar Categorias
- **GET** `/categorias`
- **Descrição**: Lista todas as categorias.
#### Buscar Categoria por ID
- **GET** `/categorias/{id}`
- **Descrição**: Busca uma categoria específica pelo ID.
#### Atualizar Categoria
- **PUT** `/categorias/{id}`
- **Descrição**: Atualiza as informações de uma categoria.
#### Excluir Categoria
- **DELETE** `/categorias/{id}`
- **Descrição**: Exclui uma categoria específica.
---
### Pedidos
#### Criar Pedido
- **POST** `/pedidos`
- **Descrição**: Cria um novo pedido para um cliente específico.
- **Body**:
```json
{
"id_cliente": "string"
}
```
#### Listar Pedidos
- **GET** `/pedidos`
- **Descrição**: Lista todos os pedidos.
#### Buscar Pedido por ID
- **GET** `/pedidos/{id}`
- **Descrição**: Busca um pedido específico pelo ID.
#### Atualizar Pedido
- **PUT** `/pedidos/{id}`
- **Descrição**: Atualiza as informações de um pedido.
#### Excluir Pedido
- **DELETE** `/pedidos/{id}`
- **Descrição**: Exclui um pedido específico.
---
### Detalhes do Pedido
#### Criar Detalhe do Pedido
- **POST** `/detalhe_pedidos`
- **Descrição**: Adiciona um detalhe a um pedido específico.
- **Body**:
```json
{
"id_pedido": "string",
"id_produto": "string",
"valor": "decimal",
"desconto": "decimal"
}
```
#### Listar Detalhes do Pedido
- **GET** `/detalhe_pedidos`
- **Descrição**: Lista todos os detalhes dos pedidos.
#### Buscar Detalhe do Pedido por ID
- **GET** `/detalhe_pedidos/{id}`
- **Descrição**: Busca um detalhe de pedido específico pelo ID.
#### Atualizar Detalhe do Pedido
- **PUT** `/detalhe_pedidos/{id}`
- **Descrição**: Atualiza as informações de um detalhe do pedido.
#### Excluir Detalhe do Pedido
- **DELETE** `/detalhe_pedidos/{id}`
- **Descrição**: Exclui um detalhe específico do pedido.
---
## Configuração e Instalação :gear:
### Criar e ativar ambiente virtual :white_check_mark:
```bash
$ python -m venv venv
```
**MacOS/Linux:**
```bash
$ source venv/bin/activate
```
**Windows:**
```bash
$ venv\Scripts\activate
```
### Instalação das depedências :arrow_down_small:
```bash
$ pip install -r requirements.txt
```
### Executar migrações :arrow_forward:
```bash
$ flask db upgrade
```
### Executar app :arrow_forward:
**development:**
```bash
$ flask run
```
```bash
Running on http://127.0.0.1:5000/
```
## Linguagens, tecnologias, dependências e libs utilizadas :hammer_and_wrench: :gear: :books:
- [Python](https://www.python.org/downloads/)
- [Flask](https://flask.palletsprojects.com/en/3.0.x/installation/)
- [PostgreSQL](https://www.postgresql.org/download/)
- [Draw.io](https://www.drawio.com/)
- [SQLAlchemy](https://docs.sqlalchemy.org/en/20/s)
- [Marshmallow](https://marshmallow.readthedocs.io/en/stable/)
- [Flask-JWT-Extended](https://flask-jwt-extended.readthedocs.io/en/latest/)
- [Fernet - symmetric encryption](https://cryptography.io/en/latest/fernet/)
- [Postman](https://www.postman.com/downloads/)
- [Git](https://git-scm.com/downloads)
- [GitHub](https://github.com/)
...