Este projeto é um sistema de CRUD (Create, Read, Update, Delete) desenvolvido com uma arquitetura robusta utilizando várias ferramentas modernas, com o objetivo de criar uma aplicação eficiente e escalável para gestão de dados em um banco de dados PostgreSQL. O frontend é implementado com Streamlit, enquanto o backend utiliza FastAPI para manipulação de dados com SQLAlchemy como ORM e Pydantic para validação de dados.
O projeto está todo containerizado com Docker, facilitando o processo de desenvolvimento e deploy. Além disso, o código é mantido em conformidade com as boas práticas de desenvolvimento utilizando Ruff para análise estática de código.
sequenceDiagram
participant U as Usuário
participant SW as Sistema Web Streamlit
participant API as FastAPI (Backend)
participant V as Validação Pydantic
participant DB as Banco de Dados SQLAlchemy (PostgreSQL)
U ->> SW: Inserir Dados via Formulário
SW ->> API: Enviar Dados via Requisição HTTP
API ->> V: Enviar Dados para Validação (Pydantic)
alt Dados Válidos
API ->> DB: CRUD no Banco de Dados
DB ->> API: Confirmação de Sucesso ou Dados Solicitados
API ->> SW: Retornar Resposta de Sucesso
SW ->> U: Exibir Dados Salvos com Sucesso
else Dados Inválidos
V ->> API: Retornar Erros de Validação
API ->> SW: Retornar Mensagem de Erro
SW ->> U: Exibir Erro de Validação
end
Veja o projeto em ação através do vídeo de demonstração no YouTube:
🔗 Demonstração do projeto
A documentação completa do projeto, incluindo todas as rotas e instruções de uso, está disponível no link abaixo:
🔗 Documentação da API
- CRUD Completo: Gerenciamento de dados com as operações de criação, leitura, atualização e exclusão.
- Validação de Dados: Validação robusta com Pydantic.
- Interface Web: Frontend interativo com Streamlit, permitindo interações simples e rápidas.
- Backend: Utilização do FastAPI para um backend rápido, eficiente e escalável.
- Persistência de Dados: Uso de PostgreSQL como banco de dados relacional, com SQLAlchemy como ORM.
- Dockerizado: Ambiente de desenvolvimento configurado com Docker, facilitando a replicação e execução do projeto em qualquer máquina.
- Código Limpo: Uso de Ruff para manter a qualidade do código, identificando problemas de estilo e bugs potenciais.
A estrutura do projeto é organizada da seguinte forma:
📦 crudProject
│
├── 📁 backend # Código fonte do backend
│ ├── .dockerignore # Arquivo Docker ignore
│ ├── Dockerfile # Dockerfile para criar a imagem do backend
│ ├── crud.py # Operações CRUD
│ ├── database.py # Configurações do banco de dados
│ ├── main.py # Ponto de entrada da aplicação (FastAPI)
│ ├── models.py # Modelos de dados (SQLAlchemy)
│ ├── requirements.txt# Dependências do backend
│ ├── router.py # Definição de rotas
│ └── schemas.py # Esquemas de validação de dados (Pydantic)
│
├── 📁 docs # Configurações e arquivos de documentação (MkDocs)
│
├── 📁 frontend # Código do frontend (Streamlit)
│ ├── .dockerignore # Arquivo Docker ignore
│ ├── Dockerfile # Dockerfile para criar a imagem do frontend
│ ├── app.py # Script do Streamlit para a interface
│ ├── logo.png # Logo do frontend
│ └── requirements.txt# Dependências do frontend
│
├── 📁 site # Arquivos de configuração do site(MkDocs)
│ ├── .gitignore # Arquivo Git ignore
│ ├── .python-version # Versão do Python
│ ├── README.md # Arquivo README
│ ├── docker-compose.yml # Arquivo para orquestrar os serviços (PostgreSQL, FastAPI, etc.)
│ ├── mkdocs.yml # Configuração do MkDocs
│ ├── pyproject.toml # Configurações do projeto Python
│ ├── requirements.txt# Dependências com pip
│ └── uv.lock # Dependências com UV
Para rodar o projeto localmente, você precisará de:
- Docker (e Docker Compose)
- Python 3.9+
- PostgreSQL
- Ferramentas listadas: Streamlit, Pydantic, FastAPI, SQLAlchemy, MkDocs, Ruff
Siga os passos abaixo para configurar o ambiente localmente:
-
Clone o repositório
git clone https://github.com/seu-usuario/crudProject.git cd crudProject -
Instale as dependências Caso prefira usar um ambiente virtual com UV:
uv --sync
-
Suba os containers com Docker Certifique-se de ter o Docker e Docker Compose instalados. Depois, execute:
docker-compose up --build
-
Acesse a aplicação
- Frontend (Streamlit): Acesse
http://localhost:8501no navegador. - Backend (FastAPI): A documentação interativa da API estará disponível em
http://localhost:8000/docs.
- Frontend (Streamlit): Acesse





