A TaskGX API é a API REST central do projeto TaskGX. Ela fornece os recursos necessários para autenticar utilizadores, criar contas, verificar endereços de e-mail e gerir listas, tarefas e prioridades.
A API foi preparada para ser consumida pela aplicação web desenvolvida em React e por futuras aplicações desktop ou mobile que reutilizem os mesmos dados e regras de autenticação.
- ASP.NET Core Web API com .NET 10
- Entity Framework Core
- PostgreSQL/Supabase
- Provider Npgsql para Entity Framework Core
- Autenticação através de JWT
- Autenticação com Google
- Swagger/OpenAPI em ambiente de desenvolvimento
- Envio de e-mails através de SMTP
- Registo de utilizadores
- Autenticação com e-mail e palavra-passe através de JWT
- Autenticação com conta Google
- Verificação de e-mail através de código
- Reenvio do código de verificação
- Consulta e atualização do utilizador autenticado
- Alteração da palavra-passe
- Solicitação e confirmação da alteração de e-mail
- Eliminação da conta e dos dados associados
- Gestão das listas do utilizador
- Gestão de tarefas por lista
- Conclusão de tarefas
- Consulta de prioridades
- Documentação interativa através do Swagger
Credenciais e valores sensíveis não devem ser armazenados diretamente no ficheiro appsettings.json versionado.
Em desenvolvimento, devem ser utilizados:
- .NET User Secrets;
- variáveis de ambiente;
- ficheiros locais não incluídos no repositório.
O projeto contém um ficheiro de referência em:
TaskGX/appsettings.example.json
Esse ficheiro contém apenas placeholders. Os valores reais devem ser configurados fora do repositório.
ConnectionStrings:DefaultConnectionSUPABASE_DB_CONNECTIONJwt:ChaveJwt:EmissorJwt:AudienciaJwt:MinutosExpiracaoGoogleAuth:ClientIdConfiguracoesEmail:HostConfiguracoesEmail:PortaConfiguracoesEmail:NomeUsuarioConfiguracoesEmail:SenhaConfiguracoesEmail:EmailRemetenteConfiguracoesEmail:NomeRemetenteConfiguracoesEmail:HabilitarSslCors:AllowedOrigins
cd TaskGX
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "YOUR_DATABASE_CONNECTION_STRING"
dotnet user-secrets set "Jwt:Chave" "YOUR_JWT_SECRET_KEY"
dotnet user-secrets set "GoogleAuth:ClientId" "YOUR_GOOGLE_CLIENT_ID"
dotnet user-secrets set "ConfiguracoesEmail:NomeUsuario" "YOUR_EMAIL"
dotnet user-secrets set "ConfiguracoesEmail:Senha" "YOUR_EMAIL_APP_PASSWORD"No PowerShell:
$env:SUPABASE_DB_CONNECTION="YOUR_DATABASE_CONNECTION_STRING"
$env:Jwt__Chave="YOUR_JWT_SECRET_KEY"
$env:GoogleAuth__ClientId="YOUR_GOOGLE_CLIENT_ID"
$env:ConfiguracoesEmail__NomeUsuario="YOUR_EMAIL"
$env:ConfiguracoesEmail__Senha="YOUR_EMAIL_APP_PASSWORD"O ASP.NET Core utiliza dois caracteres de underscore, __, para representar níveis hierárquicos nas variáveis de ambiente.
- .NET SDK compatível com
net10.0 - Base de dados PostgreSQL ou Supabase configurada
- User Secrets ou variáveis de ambiente com as credenciais necessárias
cd TaskGX
dotnet restore
dotnet build
dotnet runOs perfis locais estão configurados nos seguintes endereços:
- HTTP:
http://localhost:5192 - HTTPS:
https://localhost:7284
As portas podem ser consultadas ou alteradas no ficheiro:
Properties/launchSettings.json
Em ambiente de desenvolvimento, o Swagger fica disponível em:
https://localhost:7284/swaggerhttps://localhost:7284/swagger/v1/swagger-corrigido.json
O frontend React em desenvolvimento pode consumir a API a partir de:
http://localhost:5173
Esse endereço deve estar incluído nas origens permitidas pela configuração de CORS.
Os scripts utilizados para configurar a base de dados PostgreSQL/Supabase encontram-se em:
TaskGX/database/supabase
Ficheiros disponíveis:
schema.sqlseed_prioridades.sqlsync_sequences.sql
Para configurar uma base de dados nova:
- Execute
schema.sql. - Execute
seed_prioridades.sql. - Execute
sync_sequences.sqlcaso seja necessário sincronizar as sequências de IDs.
As rotas privadas exigem um token JWT enviado no header:
Authorization: Bearer YOUR_JWT_TOKEN- Criar uma conta através de
POST /api/cadastro. - Confirmar o e-mail através de
POST /api/verificacao/verificar-email. - Fazer login através de
POST /api/autenticacao/login. - Utilizar o token retornado nas rotas protegidas.
- Obter um Google ID Token no frontend.
- Enviar o token para
POST /api/autenticacao/google-login. - Receber o token JWT do TaskGX.
- Utilizar o token JWT do TaskGX nas rotas protegidas.
| Método | URL | JWT | Descrição |
|---|---|---|---|
| GET | / |
Não | Retorna o estado básico da API. |
| POST | /api/cadastro |
Não | Regista um novo utilizador. |
| POST | /api/autenticacao/login |
Não | Autentica com e-mail e palavra-passe. |
| POST | /api/autenticacao/google-login |
Não | Autentica através de um Google ID Token. |
| POST | /api/verificacao/verificar-email |
Não | Verifica o e-mail através de um código de seis dígitos. |
| POST | /api/verificacao/reenviar-codigo |
Não | Reenvia o código de verificação. |
| GET | /api/Usuarios/eu |
Sim | Obtém o utilizador autenticado. |
| PUT | /api/Usuarios/eu |
Sim | Atualiza o perfil do utilizador autenticado. |
| DELETE | /api/Usuarios/eu |
Sim | Elimina a conta e os dados associados ao utilizador autenticado. |
| PATCH | /api/Usuarios/eu/senha |
Sim | Altera a palavra-passe do utilizador autenticado. |
| POST | /api/Usuarios/eu/email/solicitar-alteracao |
Sim | Solicita a alteração do endereço de e-mail. |
| POST | /api/Usuarios/eu/email/confirmar-alteracao |
Sim | Confirma a alteração do endereço de e-mail. |
| GET | /api/Listas |
Sim | Obtém as listas do utilizador autenticado. |
| POST | /api/Listas |
Sim | Cria uma nova lista. |
| PUT | /api/Listas/{id} |
Sim | Atualiza uma lista pertencente ao utilizador. |
| DELETE | /api/Listas/{id} |
Sim | Elimina uma lista pertencente ao utilizador. |
| GET | /api/Tarefas?listaId={listaId} |
Sim | Obtém as tarefas de uma lista. |
| POST | /api/Tarefas |
Sim | Cria uma nova tarefa. |
| PUT | /api/Tarefas/{id} |
Sim | Atualiza uma tarefa pertencente ao utilizador. |
| DELETE | /api/Tarefas/{id} |
Sim | Elimina uma tarefa pertencente ao utilizador. |
| POST | /api/Tarefas/{id}/concluir |
Sim | Marca uma tarefa como concluída. |
| GET | /api/Prioridades |
Sim | Obtém as prioridades disponíveis. |
A documentação detalhada dos endpoints encontra-se em:
docs/API.md
A documentação sobre a arquitetura e integração com frontend e aplicações desktop encontra-se em:
docs/ARCHITECTURE.md