Este repositório contém três mini-projetos para aprender Flask, cada um em sua própria pasta:
Mini_Task_API/— Mini API de Tarefas (To-Do) — servidor REST simples com armazenamento em memória e testes.Mini_Tasks_Website/— Site simples de lista tarefas com formulários e templates HTML (Jinja).Database_and_API/— Projeto completo com banco de dados SQLAlchemy, Flask-Migrate, API RESTful e interface web.
Este README explica como rodar e testar os subprojetos dentro desse repositório.
Estrutura mínima dentro de Mini_Task_API:
app.py— factorycreate_app()e rotas REST (GET/POST/PUT/DELETE) para/tasks.tasks.py—TaskStoreem memória (CRUD básico).tests/— testes automatizados compytestque usamapp.test_client().requirements.txt— dependências do projeto (Flask, pytest).
O servidor foi mantido propositalmente simples para fins didáticos.
-
Abra o PowerShell na raiz do repositório.
-
Crie e ative um ambiente virtual (recomendado):
python -m venv .venv
.venv\Scripts\Activate.ps1- Instale dependências (dentro de
Mini_Task_API):
cd Mini_Task_API
pip install -r requirements.txt- Rodar a aplicação (a partir de
Mini_Task_API):
# Defina a variável de ambiente para a factory (opcional)
#$env:FLASK_APP="app:create_app"
#$env:FLASK_ENV="development"
flask runOu, sem usar flask run (mais explícito):
python -c "from app import create_app; create_app().run(debug=True)"O servidor ficará disponível em http://127.0.0.1:5000.
- Testes automatizados (a partir de
Mini_Task_API):
# com o venv ativado
python -m pytest -q- GET /tasks — lista todas as tarefas
- GET /tasks/ — pega tarefa por id
- POST /tasks — cria tarefa (payload JSON: {"title": "texto"})
- PUT /tasks/ — atualiza tarefa (p.ex. {"done": true})
- DELETE /tasks/ — remove tarefa
Exemplo usando PowerShell (Invoke-RestMethod):
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:5000/tasks -Body (ConvertTo-Json @{ title = 'Comprar leite' }) -ContentType 'application/json'
Invoke-RestMethod http://127.0.0.1:5000/tasksEstrutura mínima dentro de Mini_Tasks_Website:
app.py— factorycreate_app()e rotas para páginas (index, create, edit, delete).tasks.py—TaskStoreem memória com métodos create/get/list/update/delete.templates/—base.html,index.html,create.html,edit.html(Jinja2 templates).static/— CSS e recursos estáticos.tests/— testes compytestsimulando requisições viaapp.test_client().
-
Abra o PowerShell na pasta do subprojeto (Mini_Tasks_Website)
-
Ative o ambiente virtual criado na raiz do repo (ou crie/ative um aqui):
.venv\Scripts\Activate.ps1- Instale dependências:
pip install -r requirements.txt- Rodar a aplicação:
$env:FLASK_APP="app:create_app"
flask runAbra o navegador em http://127.0.0.1:5000.
Se você adicionou a pasta tests/ dentro do subprojeto, rode os testes assim (na pasta Mini_Tasks_Website):
python -m pytest -qProjeto Flask com arquitetura em camadas, banco de dados SQLAlchemy, Flask-Migrate, API RESTful e interface web.
Principais arquivos e estrutura:
app.py: Factory da aplicação Flask, registro dos blueprints e inicialização do banco/migraçõesmodels.py: Modelos SQLAlchemy (Task)repositories.py: Camada de acesso a dados (CRUD)services.py: Regras de negócio e validaçãoapi.py: Blueprint da API RESTful (/api/v1/tasks)web.py: Blueprint da interface web (páginas HTML)config.py: Configurações (SECRET_KEY, URI do banco)requirements.txt: Dependênciasmigrations/: Migrações do banco (Alembic)templates/: Templates HTML (Jinja2)tests/: Testes automatizados com banco em memória
-
Abra o PowerShell na pasta
Database_and_API. -
Crie e ative um ambiente virtual (recomendado):
python -m venv .venv .venv\Scripts\Activate.ps1 -
Instale as dependências:
pip install -r requirements.txt -
Inicialize as migrações e o banco:
flask db init flask db migrate flask db upgrade
-
Rode a aplicação:
python app.py
Execute os testes automatizados:
pytest- API:
/api/v1/tasks(GET, POST, PUT, DELETE) - Web:
/(listar, criar, editar, deletar tarefas)
- Banco padrão: SQLite (
tasks.db) - Para testes, usa SQLite em memória
- Regras de negócio e validação no
services.py - Transações e erros tratados no repositório
- ✅ Concluir API simples de tarefas - Praticar aplicação básica de servidor REST simples com Flask.
- ✅ Concluir Site de tarefas - Praticar uso de templates HTML (Jinja2) e formulários.
- ✅ Concluir Banco de Dados + API - Integração das partes anteriores com um banco de dados persistente.