Projeto de exemplo com backend em Flask conectando a um banco MySQL e frontend em React com Vite.
docker-compose.yml- orquestra a API Flask e o banco MySQLapi/- backend Pythonapp.py- ponto de entrada da aplicaçãodatabase/db.py- configuração do SQLAlchemymodels/task_model.py- modeloTaskrepositories/task_repository.py- acesso ao bancoroutes/tasks_routes.py- rotas REST de tarefasservices/task_service.py- lógica de negócio
frontend/- aplicação React com Vite
- Python 3
- Flask
- Flask-SQLAlchemy
- PyMySQL
- MySQL 8
- React
- Vite
- Axios
No diretório raiz do projeto:
docker-compose up --buildO serviço da API ficará disponível em http://localhost:5000 e o banco MySQL em localhost:3306.
- Acesse
api/ - Crie e ative um ambiente virtual Python
- Instale as dependências:
pip install -r requirements.txt- Configure as variáveis de ambiente (opcional):
DB_USER(padrão:root)DB_PASSWORD(padrão:1234)DB_HOST(padrão:localhost)DB_PORT(padrão:3306)DB_NAME(padrão:todo_db)PORT(padrão:5000)
- Rode a API:
python app.py- Acesse
frontend/ - Instale dependências:
npm install- Inicie o servidor de desenvolvimento:
npm run devO frontend estará disponível no endereço exibido pelo Vite (normalmente http://localhost:5173).
O frontend usa a variável VITE_API_BASE para apontar para a API.
Exemplo no .env do frontend:
VITE_API_BASE=http://localhost:5000GET /tasks- lista todas as tarefasGET /tasks/<id>- retorna uma tarefa pelo IDPOST /tasks- cria uma tarefa- Body JSON:
{ "title": "Nova tarefa" }
- Body JSON:
PUT /tasks/<id>- atualiza uma tarefa- Body JSON:
{ "title": "Texto", "completed": true }
- Body JSON:
DELETE /tasks/<id>- remove uma tarefa
Tabela: tb_tasks
id- inteiro, chave primáriatitle- stringcompleted- boolean
- O
docker-compose.ymljá cria o bancotodo_dbe expõe o MySQL em3306 - O backend usa SQLAlchemy com
mysql+pymysql - O frontend consome a API por meio do
axios
Qualquer dúvida, posso também adicionar instruções de deploy ou exemplos de comandos adicionais.