Cataloga i libri che ho in casa e tiene il conto di chi si è portato via cosa. Il catalogo è condiviso fra più utenti, quindi accanto a ogni volume c'è il nome di chi lo possiede.
I prestiti sono la ragione per cui esiste una scheda e non un elenco. Un titolo prestato porta con sé a chi e da quando, ed è l'unica informazione che un foglio di calcolo non riesce a tenere aggiornata da sola.
I test girano senza browser. Sul frontend Vitest su jsdom al posto di Karma e Chrome: la stessa suite si esegue identica sul portatile e sull'agente della pipeline, dove scaricare un browser a ogni giro costava minuti per niente.
L'utente del container è un numero, non un nome. Alcune immagini di base assegnano già l'UID 1000 a un utente proprio, e crearne uno con nome fisso faceva fallire la build: creazione idempotente e riferimento numerico reggono in entrambi i casi, e restano allineati ai permessi della cartella dati montata dall'host.
- Backend
- ASP.NET Core 10, Entity Framework Core
- Frontend
- Angular 19, applicazione a pagina singola
- Database
- SQLite, in una cartella montata dall'host
- Confezionamento
- un container per API e interfaccia, compilazione e runtime separati, utente non-root
- Catalogo
- condiviso fra gli utenti, con il nome di chi possiede ogni volume
- Scheda
- autore, editore, anno, materie, pagine, ISBN, copertina
- Stato del volume
- letto, in lettura, da leggere, prestato con nome e data
- Ricerca
- per titolo e autore, con i filtri per materia ricavati dal catalogo
- Backend
- xUnit con NSubstitute, database in memoria per i test sui dati
- Frontend
- Vitest su jsdom, nessun browser da scaricare
- In pipeline
- i due job partono insieme, e sono un cancello: se cade un test il rilascio non parte
- Pipeline
- tre stadi: test, build e push con cache dei layer, aggiornamento via SSH
- Immagini
- Docker Hub, tag mobile più il SHA del commit, immutabile
- Verifica
- attesa dell'healthcheck del container, con i log in chiaro se non diventa verde
- Infrastruttura
- compose, nginx e variabili d'ambiente in un repository separato
- Tecnologie
- C#.NETAngularSQLite
Piattaforma
Biblioteca
Test
Rilascio
Stack
