Files
todolist-fullstack/docs/ia/ROADMAP_EXECUCAO.md
Erik Silva 58df03d597 docs: Update roadmap and progress - Session 1 completed
- 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)
2025-12-01 01:21:58 -03:00

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 tasks no Supabase

    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

  • 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


🎯 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:

{
  "@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:

-- 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.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

    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