API Reference: Projetos, Tarefas, Convites e Candidaturas
Base URL: /api/projetos. Todos requerem autenticacao.
Projetos
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/projetos | Coord/Admin | Criar projeto |
| GET | /api/projetos | Autenticado | Listar projetos (membro ve so os seus, coord ve todos) |
| GET | /api/projetos/:id | Autenticado | Detalhe (+ membros com status_convite + tarefas) |
| PATCH | /api/projetos/:id | Coord/Admin | Atualizar (nome, descricao, status, dataFim) |
| POST | /api/projetos/:id/membros | Coord/Admin | Adicionar membro direto (sem convite) |
| DELETE | /api/projetos/:id/membros/:uid | Coord/Admin | Remover membro |
Convites (Novo na Sprint 3)
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/projetos/:id/convidar | Coord/Admin | Enviar convites (batch de usuario_ids) |
| GET | /api/projetos/meus-convites | Autenticado | Convites pendentes do usuario logado |
| POST | /api/projetos/:id/aceitar-convite | Autenticado | Membro aceita convite |
| POST | /api/projetos/:id/recusar-convite | Autenticado | Membro recusa convite |
| POST | /api/projetos/:id/confirmar-membro/:uid | Coord/Admin | Coord 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
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/projetos/:id/tarefas | Lider/Coord/Admin | Criar tarefa (atribuida ou aberta) |
| GET | /api/projetos/tarefas/minhas | Autenticado | Minhas tarefas pendentes |
| POST | /api/projetos/tarefas/:tid/concluir | Responsavel | Marcar como concluida (com prova) |
| POST | /api/projetos/tarefas/:tid/aprovar | Lider/Coord/Admin | Aprovar (credita CC com multiplicador) |
| POST | /api/projetos/tarefas/:tid/rejeitar | Lider/Coord/Admin | Rejeitar (feedback obrigatorio) |
| PATCH | /api/projetos/tarefas/:tid/status | Autenticado | Atualizar status (PENDENTE, EM_ANDAMENTO) |
Candidaturas (Novo na Sprint 3)
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/projetos/:id/tarefas/:tid/candidatar | Autenticado | Candidatar-se a tarefa aberta |
| POST | /api/projetos/:id/tarefas/:tid/aprovar-candidatura/:uid | Lider/Coord/Admin | Aprovar 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:
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/tarefas | PortaVoz/Coord/Admin | Criar tarefa avulsa (sem projeto) |
| GET | /api/tarefas | Autenticado | Listar 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)
| Metodo | Endpoint | Descricao |
|---|---|---|
| POST | /api/projetos/:id/comentarios | Comentar no projeto (texto + imagem) |
| GET | /api/projetos/:id/comentarios | Listar comentarios do projeto |
| POST | /api/projetos/:id/tarefas/:tid/comentarios | Comentar na tarefa |
| GET | /api/projetos/:id/tarefas/:tid/comentarios | Listar 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.