- Completed Passo 1.1 (Setup) - 100% - Completed Passo 1.2 (Auth Module) - 100% - Updated ROADMAP_EXECUCAO.md with detailed tasks - Updated PROGRESSO.md with current status - Marked Passo 1.3 (Tasks Module) as next priority - Added versioning strategy (v0.1.0 initial release) - Phase 1 is now 50% complete (2 of 6 passos)
15 KiB
🚀 ROADMAP DE EXECUÇÃO - TASK MANAGER
Data Início: 1 de dezembro de 2025
Status Atual: Fase 1 - Backend (50% Completo)
Git Repo: https://git.stackbyte.cloud/erik/todolist-fullstack.git
📊 Visão Geral do Progresso
Fase 1: Backend [████████████░░░░░░░░░░░░] 50% ✅
Fase 2: Frontend [░░░░░░░░░░░░░░░░░░░░░░░░] 0%
Fase 3: Mobile [░░░░░░░░░░░░░░░░░░░░░░░░] 0%
Fase 4: DevOps/Deploy [░░░░░░░░░░░░░░░░░░░░░░░░] 0%
TOTAL GERAL [████░░░░░░░░░░░░░░░░░░░░] 12%
✅ COMPLETO: Passo 1.1 & 1.2 (Setup + Auth Module)
Passo 1.1: Setup & Dependências ✅
- Instalar Supabase SDK
- Instalar JWT (@nestjs/jwt, @nestjs/passport)
- Instalar ConfigModule com Joi
- Criar
.env.example - Estruturar pasta
src/com módulos
Commit: 35272b8
Passo 1.2: Módulo de Autenticação ✅
- AuthService com signup, login, logout
- AuthController com endpoints protegidos
- JWT Strategy com Passport
- JWT Guard para proteção de rotas
- CurrentUser Decorator
- DTOs com validação (SignupDto, LoginDto)
- Supabase integration
- Error handling customizado
Endpoints implementados:
✅ POST /auth/signup - Registrar usuário
✅ POST /auth/login - Fazer login
✅ POST /auth/logout - Fazer logout (protegido)
✅ GET /auth/me - Perfil atual (protegido)
✅ POST /auth/forgot-password - Recuperar senha
Commits: 35272b8, b51c598
⏳ EM PROGRESSO: Passo 1.3 (Tasks Module)
Passo 1.3: Módulo de Tarefas
-
Criar TasksService com CRUD
- create(createTaskDto) - Criar tarefa
- findAll(userId, filters) - Listar tarefas
- findOne(id, userId) - Detalhes tarefa
- update(id, updateTaskDto, userId) - Atualizar
- remove(id, userId) - Deletar
-
Criar TasksController com endpoints
- POST /tasks - Criar (protegido)
- GET /tasks - Listar (protegido)
- GET /tasks/:id - Detalhes (protegido)
- PATCH /tasks/:id - Atualizar (protegido)
- DELETE /tasks/:id - Deletar (protegido)
-
Criar DTOs
- CreateTaskDto (title, description)
- UpdateTaskDto (title?, description?, completed?)
-
Integrar com Supabase
- Query builder para tasks
- Filtros (completed, sorted)
-
Adicionar validações
- Título obrigatório
- Descrição opcional
- Verificar owner da tarefa
Status: ⏳ Próximo a implementar
📋 TODO: Passo 1.4 (RLS no Supabase)
Passo 1.4: Implementar RLS (Row Level Security)
-
Criar tabela
tasksno SupabaseCREATE TABLE tasks ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), user_id UUID NOT NULL REFERENCES auth.users(id), title TEXT NOT NULL, description TEXT, completed BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW() ); -
Implementar RLS Policies
- Enable RLS
- Policy: Users can only access their own tasks
- Policy: Users can only update their own tasks
- Policy: Users can only delete their own tasks
-
Testes de segurança
- Usuário A não acessa tarefas de Usuário B
- RLS enforced em queries diretas
Status: ⏳ Aguarda Passo 1.3
📖 TODO: Passo 1.5 (Documentação API)
Passo 1.5: Completar Documentação
-
Documentar endpoints de Auth (60%)
- Signup, Login, Logout, Me, Forgot-password
-
Documentar endpoints de Tasks
- GET /tasks
- POST /tasks
- GET /tasks/:id
- PATCH /tasks/:id
- DELETE /tasks/:id
- Query filters
-
Adicionar exemplos cURL completos
-
Documentar fluxo de Realtime (WebSockets)
-
Atualizar arquivo
backend-api/API.md
Status: ⏳ Em progresso (Auth 100%, Tasks 0%)
🐳 TODO: Passo 1.6 (Dockerfile)
Passo 1.6: Dockerfile Backend
-
Criar
backend-api/Dockerfile- Multi-stage build
- Production-ready
- Otimizado para tamanho
-
Testar build local
docker build -t task-manager-backend . docker run -p 3000:3000 task-manager-backend -
Adicionar docker-compose (opcional)
Status: ⏳ Aguarda Passo 1.4
📊 FASE 1 RESUMO
| Passo | Nome | Status | Prioridade |
|---|---|---|---|
| 1.1 | Setup & Dependências | ✅ 100% | P0 |
| 1.2 | Módulo Auth | ✅ 100% | P0 |
| 1.3 | Módulo Tasks | ⏳ 0% | P0 |
| 1.4 | RLS Supabase | ⏳ 0% | P1 |
| 1.5 | API Docs | 🟡 60% | P2 |
| 1.6 | Dockerfile | ⏳ 0% | P2 |
Total Fase 1: 33% (2/6 passos)
🎯 FASE 2: FRONTEND (Next.js) - PLANEJADO
Passo 2.1: Setup & Dependências
- Instalar Supabase Client
- Instalar lucide-react (ícones)
- Configurar Google Fonts
- Estruturar pasta
src/components/
Passo 2.2: Configurar Design System
- Tailwind com tokens do Design System
- Cores, tipografia, espaçamento
- Componentes base (Button, Input, Card)
Passo 2.3: Componentes UI
- Button (Primary, Secondary, Tertiary, Danger)
- Input com validação
- Card
- Modal
- Checkbox
- TaskItem
Passo 2.4: Autenticação (Frontend)
- Login page
- Signup page
- Forgot password page
- Login/Signup forms
- Proteção de rotas
Passo 2.5: Dashboard de Tarefas
- Task list
- Task form (criar/editar)
- Task filters (Todas/Ativas/Concluídas)
- Empty state
- Loading state
Passo 2.6: Realtime Sync
- Supabase Realtime subscriptions
- Auto-atualizar lista de tarefas
Passo 2.7: Responsividade
- Mobile first
- Tailwind breakpoints
Passo 2.8: Dockerfile Frontend
- Multi-stage build
- Production-ready
Status: ⏳ Ainda não iniciado
🚀 FASE 3: MOBILE (Flutter) - PLANEJADO
Passo 3.1: Criar Projeto Flutter
flutter create mobile- Estruturar pastas
Passo 3.2: Design System Flutter
- Theme com cores do Design System
- Google Fonts integration
- Componentes customizados
Passo 3.3: Autenticação (Flutter)
- Login screen
- Signup screen
- Supabase auth integration
Passo 3.4: Telas de Tarefas
- Tasks list screen
- Task detail screen
- Create/edit task screen
- Filters
Passo 3.5: State Management
- Provider setup
- Auth provider
- Tasks provider
Passo 3.6: Realtime Sync (Flutter)
- Supabase Realtime subscription
- Auto-update tasks
Passo 3.7: Build
- Android APK
- iOS app
Status: ⏳ Ainda não iniciado
🐳 FASE 4: DEVOPS & DEPLOY - PLANEJADO
Passo 4.1: Docker Compose
- docker-compose.yml
- Orquestração local
- Volumes para dados
Passo 4.2: CI/CD
- GitHub Actions (ou GitLab CI)
- Lint & test
- Build stages
Passo 4.3: Deploy Backend
- Railway ou Render
- Variáveis de ambiente
- Database migrations
Passo 4.4: Deploy Frontend
- Vercel
- Environment variables
- Custom domain (opcional)
Passo 4.5: Deploy Mobile
- Google Play Store
- Apple App Store
Status: ⏳ Ainda não iniciado
📈 Cronograma Sugerido
| Período | O que fazer |
|---|---|
| Hoje (1º Dez) | ✅ Passo 1.1 + 1.2 concluídos |
| Próximas horas | Passo 1.3 (Tasks Module) |
| Próximo dia | Passo 1.4 (RLS) + 1.5 (Docs) |
| Próximos dias | Passo 1.6 (Dockerfile) |
| Semana próxima | Fase 2 (Frontend) |
| 2-3 semanas | Fase 3 (Mobile) |
| 4+ semanas | Fase 4 (Deploy) |
🔄 Git Workflow
Branch Strategy:
main (production)
↑
dev (desenvolvimento)
↑
├─ feature/tasks-module (Passo 1.3)
├─ feature/frontend-auth (Passo 2.4)
└─ feature/flutter-setup (Passo 3.1)
Versioning:
- v0.1.0 ✅ (Initial: Auth + Design System)
- v0.2.0 (Tasks Module + RLS)
- v0.3.0 (Frontend Core)
- v0.4.0 (Mobile Core)
- v1.0.0 (Production Ready)
📚 Arquivos Documentação
- SESSION_1_RECAP.md - Recap da sessão 1
- PROGRESSO.md - Status detalhado
- GIT_PUSH_INSTRUCTIONS.md - Como fazer push
- ROADMAP_EXECUCAO.md - Este arquivo
- ../API.md - Documentação API
🎯 Próximas Ações Imediatas
-
Passo 1.3 - Tasks Module
- Implementar TasksService (CRUD)
- Implementar TasksController (endpoints)
- Criar DTOs (CreateTaskDto, UpdateTaskDto)
- Integrar com Supabase
-
Testes
- Compilar com
npm run build - Testar endpoints com cURL
- Compilar com
-
Commit & Push
- Commit:
feat(tasks): implement CRUD with Supabase - Push para origin/main
- Commit:
Status Final: Backend 50% concluído. Próximo: Tasks Module! 🚀
🎯 FASE 1: BACKEND (NestJS + Supabase) - EM PROGRESSO
Passo 1.1: Setup & Dependências ⏳
Objetivo: Preparar ambiente backend com todas as dependências críticas
Tarefas:
- Instalar Supabase SDK (
@supabase/supabase-js) - Instalar dotenv (
dotenv) - Instalar JWT (
@nestjs/jwt,@nestjs/passport) - Instalar TypeORM (opcional, Supabase usa PostgREST)
- Criar
.env.example - Estruturar pasta
src/com módulos
Dependências na package.json:
{
"@supabase/supabase-js": "^2.x",
"@nestjs/config": "^3.x",
"@nestjs/jwt": "^12.x",
"@nestjs/passport": "^10.x",
"passport": "^0.7.x",
"passport-jwt": "^4.x",
"dotenv": "^16.x",
"joi": "^17.x"
}
Arquivos a criar/modificar:
backend-api/.env.examplebackend-api/src/config/(arquivos de configuração)
Passo 1.2: Módulo de Autenticação 🔐
Objetivo: Implementar signup, login, logout com JWT
Estrutura a criar:
src/
├── auth/
│ ├── auth.module.ts
│ ├── auth.service.ts
│ ├── auth.controller.ts
│ ├── strategies/
│ │ └── jwt.strategy.ts
│ ├── guards/
│ │ └── jwt.guard.ts
│ └── dto/
│ ├── signup.dto.ts
│ └── login.dto.ts
├── users/
│ ├── users.module.ts
│ ├── users.service.ts
│ └── dto/
│ └── create-user.dto.ts
└── common/
└── decorators/
└── current-user.decorator.ts
Endpoints:
POST /auth/signup- Registrar usuárioPOST /auth/login- LoginPOST /auth/logout- LogoutGET /auth/me- Perfil atual (requer JWT)
Passo 1.3: Módulo de Tarefas 📝
Objetivo: Implementar CRUD de tarefas com segurança (RLS)
Estrutura a criar:
src/
└── tasks/
├── tasks.module.ts
├── tasks.service.ts
├── tasks.controller.ts
└── dto/
├── create-task.dto.ts
└── update-task.dto.ts
Endpoints:
GET /tasks- Listar tarefas do usuárioGET /tasks/:id- Detalhes da tarefaPOST /tasks- Criar tarefaPATCH /tasks/:id- Atualizar tarefaDELETE /tasks/:id- Deletar tarefa
Passo 1.4: Implementar RLS (Supabase) 🔒
Objetivo: Configurar Row Level Security no banco
SQL a executar:
-- Tabela tasks (já deve existir em Auth do Supabase)
CREATE TABLE IF NOT EXISTS tasks (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID NOT NULL REFERENCES auth.users(id),
title TEXT NOT NULL,
description TEXT,
completed BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
-- RLS Policy: Usuário só acessa suas tarefas
ALTER TABLE tasks ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Users can only access their own tasks"
ON tasks
FOR ALL
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id);
Passo 1.5: Documentação da API 📚
Objetivo: Documenta endpoints e respostas
Arquivo: backend-api/API.md
- Descrever cada endpoint
- Exemplos de request/response
- Códigos de erro
- Authentication flow
Passo 1.6: Dockerfile Backend 🐳
Objetivo: Containerizar backend para deploy
Arquivo: backend-api/Dockerfile
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "start:prod"]
🎯 FASE 2: FRONTEND (Next.js) - PENDENTE
Passo 2.1: Setup & Componentes Base ⏳
Objetivo: Configurar Design System e componentes reutilizáveis
Tarefas:
- Instalar
@supabase/supabase-js - Instalar
lucide-react(ícones) - Configurar Google Fonts em
globals.css - Criar arquivo de tokens (colors, spacing, typography)
- Estruturar pasta
src/components/
Componentes a criar:
Button.tsx(Primary, Secondary, Tertiary, Danger)Input.tsx(com validation)Card.tsxModal.tsxCheckbox.tsxTaskItem.tsx
Passo 2.2: Autenticação (Frontend) 🔐
Objetivo: Integrar login/signup com Supabase
Páginas a criar:
app/(auth)/login/page.tsxapp/(auth)/signup/page.tsxapp/(auth)/forgot-password/page.tsx
Componentes:
LoginForm.tsxSignupForm.tsx
Passo 2.3: Dashboard de Tarefas 📋
Objetivo: Interface de CRUD de tarefas
Páginas a criar:
app/(dashboard)/tasks/page.tsx
Componentes:
TaskList.tsxTaskForm.tsxTaskFilters.tsxEmptyState.tsx
Passo 2.4: Realtime Sync 🔄
Objetivo: Sincronização em tempo real com WebSockets
Implementar:
- Supabase Realtime subscriptions
- Auto-atualização de tarefas
🎯 FASE 3: MOBILE (Flutter) - PLANEJADO
Passo 3.1: Criar Projeto Flutter
Passo 3.2: Design System Flutter
Passo 3.3: Autenticação Flutter
Passo 3.4: Telas de Tarefas
Passo 3.5: Realtime Sync
🎯 FASE 4: DEVOPS & DEPLOY - PLANEJADO
Passo 4.1: Docker Compose
Passo 4.2: CI/CD Pipeline
Passo 4.3: Deploy Backend
Passo 4.4: Deploy Frontend
Passo 4.5: Deploy Mobile
🎬 COMEÇANDO AGORA
Próximas Ações Imediatas (Hoje):
-
Instalar dependências do Backend
cd backend-api npm install @supabase/supabase-js @nestjs/config @nestjs/jwt @nestjs/passport passport passport-jwt dotenv joi -
Criar arquivo
.env.examplecom variáveis necessárias -
Estruturar módulos (auth, users, tasks, common)
-
Começar Passo 1.2 (Módulo de Autenticação)
📝 Notas Importantes
- Git: Fazer commits frequentes após cada passo concluído
- Testing: Adicionar testes conforme avançar
- Documentation: Atualizar este arquivo após cada milestone
- Code Review: Revisar código para padrões NestJS/Next.js
Status: Aguardando execução do Passo 1.1 ⏳