back to lab notes
backendactive2025
ASP.NET Core REST API
Arquitetura monorepo .NET 8 com Minimal API, Blazor WebAssembly, Capacitor mobile e módulo P2P WebTorrent para plataforma educacional.
C#.NET 8PostgreSQLBlazorJWT
Specifications
Runtime
.NET 8.0 · C# 12
SGBD
PostgreSQL (Npgsql 8.0.7)
Auth
JWT + RBAC
Frontend
Blazor WebAssembly
Mobile
Capacitor 7.4.4
Repo
~49 MB · 89 commits
Tech Stack
C# 12.NET 8Blazor WASMNpgsqlJWTCapacitor 7.4WebTorrent
Overview
Monorepo de ~49 MB (89 commits) com 4 componentes: EducacaoInteligente (Blazor WASM), EducacaoInteligenteAPI (Minimal API com pipeline HTTP otimizado e DI modular), AndroidApplication (wrapper Capacitor 7.4.4), e VideoSharing (P2P via webtorrent 2.8.4 + bittorrent-tracker). Acesso direto ao PostgreSQL via Npgsql sem ORM para controle total de transações. RBAC implementado em endpoints segmentados (/alunos, /professores, /gestores).
Key Features
- Minimal API com pipeline HTTP otimizado e injeção de dependências modular
- SQL direto com Npgsql 8.0.7 — sem ORM, controle total de transações
- RBAC segmentado: /alunos, /professores, /gestores
- DTOs estritos: RespostaEnvio { IdAluno, IdQuestao, RespostaDada }
- Distribuição P2P de mídia via WebTorrent 2.8.4 + bittorrent-tracker
- Wrapper mobile nativo com Ionic Capacitor 7.4.4
Minimal API Endpoint com JWT e DTO
csharp
app.MapPost("/api/respostas", [Authorize(Roles = "Aluno")]
async (RespostaEnvio dto, NpgsqlConnection db) =>
{
await using var cmd = new NpgsqlCommand(
@"INSERT INTO respostas (id_aluno, id_questao, resposta)
VALUES (@aluno, @questao, @resposta)", db);
cmd.Parameters.AddWithValue("aluno", dto.IdAluno);
cmd.Parameters.AddWithValue("questao", dto.IdQuestao);
cmd.Parameters.AddWithValue("resposta", dto.RespostaDada);
await db.OpenAsync();
await cmd.ExecuteNonQueryAsync();
return Results.Created();
});