# 🚀 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 ✅ - [x] Instalar Supabase SDK - [x] Instalar JWT (@nestjs/jwt, @nestjs/passport) - [x] Instalar ConfigModule com Joi - [x] Criar `.env.example` - [x] Estruturar pasta `src/` com módulos **Commit**: `35272b8` ### Passo 1.2: Módulo de Autenticação ✅ - [x] AuthService com signup, login, logout - [x] AuthController com endpoints protegidos - [x] JWT Strategy com Passport - [x] JWT Guard para proteção de rotas - [x] CurrentUser Decorator - [x] DTOs com validação (SignupDto, LoginDto) - [x] Supabase integration - [x] 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 `tasks` no Supabase ```sql CREATE 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 - [x] Documentar endpoints de Auth (60%) - [x] 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 ```bash 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](./SESSION_1_RECAP.md)** - Recap da sessão 1 - **[PROGRESSO.md](./PROGRESSO.md)** - Status detalhado - **[GIT_PUSH_INSTRUCTIONS.md](./GIT_PUSH_INSTRUCTIONS.md)** - Como fazer push - **[ROADMAP_EXECUCAO.md](./ROADMAP_EXECUCAO.md)** - Este arquivo - **[../API.md](../../backend-api/API.md)** - Documentação API --- ## 🎯 Próximas Ações Imediatas 1. **Passo 1.3 - Tasks Module** - [ ] Implementar TasksService (CRUD) - [ ] Implementar TasksController (endpoints) - [ ] Criar DTOs (CreateTaskDto, UpdateTaskDto) - [ ] Integrar com Supabase 2. **Testes** - [ ] Compilar com `npm run build` - [ ] Testar endpoints com cURL 3. **Commit & Push** - [ ] Commit: `feat(tasks): implement CRUD with Supabase` - [ ] Push para origin/main --- **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**: ```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.example` - `backend-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ário - `POST /auth/login` - Login - `POST /auth/logout` - Logout - `GET /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ário - `GET /tasks/:id` - Detalhes da tarefa - `POST /tasks` - Criar tarefa - `PATCH /tasks/:id` - Atualizar tarefa - `DELETE /tasks/:id` - Deletar tarefa --- ### Passo 1.4: Implementar RLS (Supabase) 🔒 **Objetivo**: Configurar Row Level Security no banco **SQL a executar**: ```sql -- 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` ```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.tsx` - `Modal.tsx` - `Checkbox.tsx` - `TaskItem.tsx` --- ### Passo 2.2: Autenticação (Frontend) 🔐 **Objetivo**: Integrar login/signup com Supabase **Páginas a criar**: - `app/(auth)/login/page.tsx` - `app/(auth)/signup/page.tsx` - `app/(auth)/forgot-password/page.tsx` **Componentes**: - `LoginForm.tsx` - `SignupForm.tsx` --- ### Passo 2.3: Dashboard de Tarefas 📋 **Objetivo**: Interface de CRUD de tarefas **Páginas a criar**: - `app/(dashboard)/tasks/page.tsx` **Componentes**: - `TaskList.tsx` - `TaskForm.tsx` - `TaskFilters.tsx` - `EmptyState.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): 1. **Instalar dependências do Backend** ```bash cd backend-api npm install @supabase/supabase-js @nestjs/config @nestjs/jwt @nestjs/passport passport passport-jwt dotenv joi ``` 2. **Criar arquivo `.env.example`** com variáveis necessárias 3. **Estruturar módulos** (auth, users, tasks, common) 4. **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 ⏳