API Reference: Projetos, Tarefas, Convites e Candidaturas

Base URL: /api/projetos. Todos requerem autenticacao.

Projetos

MetodoEndpointPermissaoDescricao
POST/api/projetosCoord/AdminCriar projeto
GET/api/projetosAutenticadoListar projetos (membro ve so os seus, coord ve todos)
GET/api/projetos/:idAutenticadoDetalhe (+ membros com status_convite + tarefas)
PATCH/api/projetos/:idCoord/AdminAtualizar (nome, descricao, status, dataFim)
POST/api/projetos/:id/membrosCoord/AdminAdicionar membro direto (sem convite)
DELETE/api/projetos/:id/membros/:uidCoord/AdminRemover membro

Convites (Novo na Sprint 3)

MetodoEndpointPermissaoDescricao
POST/api/projetos/:id/convidarCoord/AdminEnviar convites (batch de usuario_ids)
GET/api/projetos/meus-convitesAutenticadoConvites pendentes do usuario logado
POST/api/projetos/:id/aceitar-conviteAutenticadoMembro aceita convite
POST/api/projetos/:id/recusar-conviteAutenticadoMembro recusa convite
POST/api/projetos/:id/confirmar-membro/:uidCoord/AdminCoord confirma membro aceito

Fluxo de convite


Coord cria projeto
    │
    ▼
Coord convida membros (POST /convidar com lista de IDs)
    │
    ▼
Membro recebe notificacao
    │
    ├── Aceita (POST /aceitar-convite) → status_convite = ACEITO
    │       │
    │       ▼
    │   Coord confirma (POST /confirmar-membro/:uid) → status_convite = CONFIRMADO
    │       │
    │       ▼
    │   Membro faz parte do projeto
    │
    └── Recusa (POST /recusar-convite) → status_convite = RECUSADO

Tarefas

MetodoEndpointPermissaoDescricao
POST/api/projetos/:id/tarefasLider/Coord/AdminCriar tarefa (atribuida ou aberta)
GET/api/projetos/tarefas/minhasAutenticadoMinhas tarefas pendentes
POST/api/projetos/tarefas/:tid/concluirResponsavelMarcar como concluida (com prova)
POST/api/projetos/tarefas/:tid/aprovarLider/Coord/AdminAprovar (credita CC com multiplicador)
POST/api/projetos/tarefas/:tid/rejeitarLider/Coord/AdminRejeitar (feedback obrigatorio)
PATCH/api/projetos/tarefas/:tid/statusAutenticadoAtualizar status (PENDENTE, EM_ANDAMENTO)

Candidaturas (Novo na Sprint 3)

MetodoEndpointPermissaoDescricao
POST/api/projetos/:id/tarefas/:tid/candidatarAutenticadoCandidatar-se a tarefa aberta
POST/api/projetos/:id/tarefas/:tid/aprovar-candidatura/:uidLider/Coord/AdminAprovar candidatura

Fluxo de candidatura


Tarefa criada como ABERTA (sem responsavel atribuido)
    │
    ▼
Membro ve tarefa aberta na lista/kanban
    │
    ▼
Membro clica "Candidatar-se" (POST /candidatar)
    │
    ▼
Tarefa mostra "Candidatado" para o membro (nao desaparece da lista)
    │
    ▼
Lider/Coord/Admin aprova candidatura (POST /aprovar-candidatura/:uid)
    │
    ▼
Membro se torna responsavel pela tarefa
Cada membro pode se candidatar apenas uma vez por tarefa. Apos candidatar-se, o botao muda para "Candidatado" (desabilitado).

Tarefas Avulsas

Tarefas avulsas sao tarefas criadas fora do contexto de um projeto. Elas nao pertencem a nenhum projeto especifico e sao acessiveis via:

MetodoEndpointPermissaoDescricao
POST/api/tarefasPortaVoz/Coord/AdminCriar tarefa avulsa (sem projeto)
GET/api/tarefasAutenticadoListar tarefas avulsas do nucleo

No Kanban, tarefas avulsas aparecem em uma secao separada abaixo dos projetos, agrupadas por status.

Status completo de tarefas


PENDENTE → EM_ANDAMENTO → CONCLUIDA → AGUARDANDO_VALIDACAO
                                              │
                                    ├── APROVADA (credita CC)
                                    └── REJEITADA (feedback obrigatorio)

Visao Kanban

A pagina de projetos exibe os projetos em um quadro Kanban com 4 colunas: Planejamento, Em Andamento, Concluido, Cancelado. Coordenadores podem arrastar cards entre colunas para alterar o status.

Abaixo dos projetos, uma secao "Tarefas Avulsas" exibe tarefas sem projeto em colunas de status (Pendente, Em Andamento, Aguardando Validacao, Aprovada).

Migration 00004

Tabela tarefa_candidaturas criada para armazenar candidaturas de membros a tarefas abertas. Campos: tarefa_id, usuario_id, status (PENDENTE/APROVADA/REJEITADA).


Comentarios (Sprint 3.5)

MetodoEndpointDescricao
POST/api/projetos/:id/comentariosComentar no projeto (texto + imagem)
GET/api/projetos/:id/comentariosListar comentarios do projeto
POST/api/projetos/:id/tarefas/:tid/comentariosComentar na tarefa
GET/api/projetos/:id/tarefas/:tid/comentariosListar comentarios da tarefa

Body do comentario

{
  "texto": "Mensagem do comentario",
  "imagemUrl": "https://supabase.co/.../imagem.jpg"
}

O campo imagemUrl e opcional. Imagens sao armazenadas no bucket comentarios do Supabase Storage.

Comentarios no Kanban

Os cards do Kanban mostram um icone de chat com a contagem de comentarios do projeto.

Migration 00005

Tabela projeto_comentarios com campos: projeto_id, tarefa_id (null para comentario no projeto), usuario_id, texto, imagem_url, criado_em.