Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskFlow

Aplicação web para registro e acompanhamento de tarefas, com autenticação JWT e banco PostgreSQL gerenciado (Supabase) — ou SQLite para desenvolvimento local.

Funcionalidades

  • Cadastro, login (JWT) e alteração de senha autenticada
  • CRUD de tarefas: título, descrição, prioridade, categoria, status e prazo
  • Concluir / reabrir tarefas
  • Filtros por status, prioridade e categoria; busca por título; ordenação por prazo, prioridade, status, título ou data
  • Dashboard com indicadores: total, pendentes, em andamento, concluídas, atrasadas e taxa de conclusão
  • Tema claro/escuro, responsivo a partir de 360px, datas/horas em formato brasileiro (pt-BR, fuso America/Sao_Paulo)

Stack

  • Backend: Python 3.12+, FastAPI, SQLAlchemy 2 (async), Alembic, JWT (pyjwt), bcrypt, slowapi (rate limit)
  • Frontend: React 18, Vite, TypeScript, Tailwind CSS 4, React Router
  • Banco: SQLite (dev, via aiosqlite) ou PostgreSQL (produção/Supabase, via asyncpg)

Requisitos

  • Python 3.12+
  • Node.js 22+
  • (Opcional) Docker e Docker Compose

Variáveis de ambiente

Backend (backend/.env — ver backend/.env.example)

Variável Descrição Padrão
DATABASE_URL URL do banco. SQLite local ou postgresql+asyncpg:// (Supabase). Sem a variável, o app usa SQLite em storage/app.db na raiz do projeto sqlite+aiosqlite:///…/storage/app.db
JWT_SECRET Chave de assinatura dos tokens — obrigatória
JWT_ALGORITHM Algoritmo de assinatura HS256
JWT_EXPIRY Expiração do token em segundos 3600
CORS_ORIGINS Origens permitidas, separadas por vírgula http://localhost:8080,http://localhost:5173
STORAGE_PATH Pasta de dados de runtime ./storage
RATE_LIMIT_LOGIN / RATE_LIMIT_REGISTER / RATE_LIMIT_PASSWORD Limites anti-abuso 10/minute, 5/minute, 5/minute

Frontend (frontend/.env)

Variável Descrição Padrão
VITE_API_BASE_URL URL base da API, incluindo o prefixo /api http://localhost:8000/api

Segurança: nunca coloque segredos (chaves, senhas, JWT_SECRET, connection strings) em variáveis VITE_* nem no código do frontend. O frontend se comunica exclusivamente com o backend via REST.

Como rodar com Docker Compose

cp backend/.env.example backend/.env
# edite backend/.env e defina um JWT_SECRET forte

docker compose up --build

O compose cria a pasta storage/ no host como bind mount, executa as migrações Alembic no boot do backend e só sobe o frontend após o healthcheck da API.

Como rodar manualmente em desenvolvimento

Backend

cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

cp .env.example .env   # edite e defina JWT_SECRET

alembic upgrade head
uvicorn src.main:app --reload --port 8000

Frontend

cd frontend
npm install
cp .env.example .env

npm run dev

Frontend de desenvolvimento: http://localhost:5173

Testes do backend

cd backend
python -m pytest

Supabase (produção)

  1. Crie o projeto no Supabase e copie a connection string.
  2. No backend/.env, defina DATABASE_URL=postgresql+asyncpg://usuario:senha@host:5432/postgres.
  3. Execute alembic upgrade head para criar as tabelas no banco remoto.

O Supabase é usado apenas como PostgreSQL gerenciado: o frontend nunca se conecta a ele e nenhum SDK/anon key é utilizado. Toda comunicação passa pelo backend.

Estrutura

backend/
  alembic/          # migrações de banco
  src/
    api/            # rotas FastAPI (health, auth, tasks)
    application/    # schemas e serviços (casos de uso)
    core/           # configuração e segurança
    domain/         # entidades e regras de negócio
    infrastructure/ # banco, modelos e repositórios
frontend/
  src/
    components/     # modais, sidebar, formulários
    pages/          # login, cadastro, dashboard, tarefas, configurações
    services/       # cliente REST (api, auth, tasks)
    hooks/          # AuthContext, tema
storage/            # dados de runtime (banco local) — não edite manualmente

About

Aplicação web para que o usuário possa registrar tarefas e acompanhar sua execução

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages