Web App

eLibrary.Manager

Online PersonaleDocker Hub

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.

feb 2026primo commit
16endpoint REST
4stati del volume

Piattaforma

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

Biblioteca

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

Test

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

Rilascio

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

Stack

Tecnologie
C#.NETAngularSQLite