Monorepo obsahuje dvě části technického zadání: REST API pro správu úkolů (backend) a SPA dashboard (frontend). Původní znění úkolů je v adresářích Api/doc/ a client/doc/; implementační rozhodnutí a kontext pro review jsou v souborech spec-notes.md vedle nich.
| Složka | Popis |
|---|---|
Api/ |
ASP.NET Core webová aplikace (IczTask), integrační testy (IczTaskTest) |
client/ |
Angular SPA — přihlášení, tabulka úkolů, CRUD, volání API |
GitHub Actions (.github/workflows/build.yml) spouští lint a produkční build Angularu, zkopíruje výstup do Api/IczTask/wwwroot, pak dotnet test a dotnet publish — stejný model nasazení jako „API hostuje statiku“.
- .NET 9 (v zadání je zmínka .NET 10 / Hybrid Cache u .NET 9; viz
Api/doc/spec-notes.md). - EF Core + SQLite (
main.dbdle connection stringu vappsettings.json), migrace při startu. - Úkoly (Task): CRUD na
/api/tasks, filtrování?name=..., validace (název min. 5 znaků atd.). - Hybrid Cache (
Microsoft.Extensions.Caching.Hybrid) — výchozí expirace 2 minuty, invalidace při změnách úkolů. - Swagger / OpenAPI v Development prostředí.
- Autentizace: místo
X-Api-Keyz původního zadání je po domluvě použito JWT (Authorization: Bearer). Podrobnosti vApi/doc/spec-notes.md.
cd Api
dotnet run --project IczTask/IczTask.csprojVýchozí HTTP profil naslouchá na http://localhost:5278 (viz IczTask/Properties/launchSettings.json). Swagger: http://localhost:5278/swagger (v Development).
Endpoint POST /api/auth/login s tělem JSON:
{ "login": "host", "password": "icz" }Odpověď obsahuje token pro hlavičku Authorization: Bearer <token> u chráněných endpointů úkolů.
cd Api
dotnet test IczTask.sln- Angular (CLI ~20), Angular Material, TypeScript.
- OpenAPI klient generovaný do
src/app/api-client/(skriptnpm run update-apivpackage.json— vyžaduje běžící API se Swaggerem). - Přihlášení a uložení tokenu přes službu účtu; chování vůči původnímu zadání s API klíčem je popsáno v
client/doc/spec-notes.md.
cd client
npm ci
npm startAplikace běží typicky na http://localhost:4200; požadavky na /api jdou přes proxy.conf.json na http://localhost:5278. Nejdřív tedy spusťte API, pak klienta.
cd client
npm run lint
npm run build -- --configuration production