Este projeto implementa um sistema de agenda médica utilizando a arquitetura Model-View-Controller (MVC) e várias tecnologias modernas, como FastAPI, SQLAlchemy, Pydantic, Docker e Streamlit.
O projeto segue a estrutura MVC:
- Model: Define a estrutura dos dados utilizando SQLAlchemy e Pydantic.
- View: Interface de usuário criada com Streamlit.
- Controller: Lida com as requisições HTTP usando FastAPI.
- FastAPI: Para a criação de APIs rápidas e performáticas.
- Pydantic: Para a validação de dados.
- SQLAlchemy: Para a ORM (Object-Relational Mapping) e interação com o banco de dados.
- Streamlit: Para a criação de interfaces de usuário interativas.
- Docker: Para a containerização dos serviços.
- PostgreSQL: Como banco de dados relacional.
Siga os passos abaixo para rodar a aplicação em seu computador:
-
Instale o Docker:
- Faça o download e instale o Docker a partir do site oficial.
-
Clone este Repositório:
- Execute o comando
git clone <URL_DO_REPOSITORIO>
para clonar o repositório para sua máquina.
- Execute o comando
-
Navegue até a Pasta do Projeto:
- Em seu terminal, navegue até a pasta raiz do repositório clonado.
-
Execute o Docker Compose:
- Execute o comando
docker compose up
para iniciar todos os serviços definidos nodocker-compose.yml
.
- Execute o comando
Quando você executa docker-compose up
, o Docker Compose:
- Lê o arquivo
docker-compose.yml
. - Cria e inicia os serviços especificados:
- Banco de Dados PostgreSQL: Configurado com nome, usuário e senha fornecidos.
- Backend: Construído e iniciado a partir do Dockerfile na pasta
backend
. - Frontend: Construído e iniciado a partir do Dockerfile na pasta
frontend
.
Os serviços serão conectados à rede mynetwork
, e os dados do banco de dados serão persistidos no volume postgres_data
.
Após a execução, você poderá acessar:
- Backend:
http://localhost:8000
- Frontend:
http://localhost:8501
- Frontend: Acesse o Frontend
- Documentação do Backend: Acesse a Documentação
Este projeto demonstra como integrar várias tecnologias para criar um sistema completo de agenda médica com backend, frontend e analytics.
├── README.md # Documentação do projeto
├── backend # Pasta do backend (FastAPI, SQLAlchemy, Uvicorn, Pydantic)
│ ├── app # Código fonte do backend
│ ├── Dockerfile # Dockerfile para o backend
│ └── requirements.txt # Dependências do backend
├── frontend # Pasta do frontend (Streamlit, Requests, Pandas)
│ ├── app # Código fonte do frontend
│ ├── Dockerfile # Dockerfile para o frontend
│ └── requirements.txt # Dependências do frontend
├── assets # Assets como imagens e outros arquivos estáticos
│ └── esquema_do_projeto.png # Esquema do projeto
├── docker-compose.yml # Arquivo de configuração do docker-compose (backend, frontend, postgres)
└── postgres # Configurações do banco de dados PostgreSQL