TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
Sistema di prenotazione posti e gestione prestiti della biblioteca universitaria UNISA
Translation pending
EducationTypeScript · TeXGitHub @mariocelzoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
📚 Sistema di gestione intelligente per biblioteche universitarie - PWA Next.js
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗BiblioFlow e' una Progressive Web App per i servizi di una biblioteca universitaria. Riunisce prenotazione e check-in dei posti studio, lista d'attesa, prestiti, catalogo con servizio "Preparamelo", notifiche e una dashboard amministrativa protetta da ruoli.
Applicazione pubblicata: biblioflow-app.vercel.app
BIBLIOTECARIO e ADMIN;Serializable;LogEvento e notifiche correlate;La documentazione di progetto (report, change request, impact analysis, piano
e report di test) e' in documentazione/: sorgenti LaTeX,
diagrammi e PDF compilati; i documenti consegnati sono in
documentazione-consegna/. Il riferimento immutabile precedente alle
change request e' il tag baseline-pre-cr-bf-01.
Installare Git, Node.js 20.19 o successivo (oppure 22.13 o successivo) e Docker Desktop con Docker Compose v2. Prisma 7 rifiuta le versioni di Node piu' vecchie.
node --version
npm --version
docker compose version
git clone https://github.com/mariocelzo/biblioflow-app.git
cd biblioflow-app
npm ci
npm ci usa le versioni bloccate in package-lock.json ed esegue
prisma generate tramite postinstall. Durante lo sviluppo, dopo una
modifica intenzionale delle dipendenze, e' possibile usare npm install.
Creare .env dal file di esempio.
PowerShell:
Copy-Item .env.example .env
macOS/Linux:
cp .env.example .env
Nel nuovo .env:
scegliere una password locale e sostituire CHANGEME_LOCAL_ONLY sia in
POSTGRES_PASSWORD sia dentro DATABASE_URL;
generare i segreti:
npm run generate:secrets
copiare i valori generati per NEXTAUTH_SECRET, CRON_SECRET e
QR_SECRET.
Non committare .env o segreti reali. Google OAuth, Sentry e VAPID sono
opzionali per l'avvio locale. Senza QR_SECRET, la chiave QR viene derivata
da NEXTAUTH_SECRET; configurarla separatamente resta consigliato.
docker compose up -d postgres redis
docker compose ps
localhost:5432;localhost:6379;docker compose up -d adminer, poi
localhost:8080.Attendere che PostgreSQL risulti healthy.
npx prisma migrate deploy
npx prisma db push
npm run db:seed
migrate deploy applica anche le migrazioni SQL custom, incluso il vincolo
anti-sovrapposizione. db push riallinea le parti dello schema legacy non
interamente descritte dalle prime migrazioni storiche. I comandi usano il
PostgreSQL locale indicato da DATABASE_URL.
Comandi Prisma utili:
npm run db:generate
npm run db:studio
npx prisma migrate dev e' riservato allo sviluppo intenzionale di nuove
migrazioni; non serve per avviare il progetto.
npm run dev
Aprire localhost:3000.
Account dimostrativi creati dal seed:
| Ruolo | Password | |
|---|---|---|
| Studente | [email protected] | password123 |
| Bibliotecario | [email protected] | staff123 |
| Amministratore | [email protected] | admin123 |
Queste credenziali sono solo dati locali dimostrativi e non devono essere riutilizzate in ambienti condivisi o di produzione.
Per arrestare i servizi:
docker compose down
Il comando mantiene i volumi. Eliminarli cancella i dati locali e va fatto soltanto quando questa perdita e' intenzionale.
| Variabile | Obbligatoria | Uso |
|---|---|---|
POSTGRES_USER | Docker locale | Utente del database applicativo. |
POSTGRES_PASSWORD | Docker locale | Password PostgreSQL. |
POSTGRES_DB | Docker locale | Nome del database applicativo. |
DATABASE_URL | si' | Connessione Prisma/PostgreSQL. |
NEXTAUTH_URL | si' | URL base dell'autenticazione. |
NEXTAUTH_SECRET | si' | Sessioni; almeno 32 caratteri. |
NEXT_PUBLIC_APP_NAME | no | Nome pubblico, default BiblioFlow. |
NEXT_PUBLIC_APP_URL | no | URL pubblico dell'applicazione. |
CRON_SECRET | si' in produzione | Protegge /api/cron/automations; senza valore la route rifiuta le richieste. |
QR_SECRET | consigliata | Firma i QR; in assenza deriva da NEXTAUTH_SECRET. |
REDIS_URL | no | Riservata a un futuro rate limiter distribuito; il limiter corrente e' in-memory per istanza. |
GOOGLE_CLIENT_ID | no | OAuth Google; richiede anche il client secret. |
GOOGLE_CLIENT_SECRET | no | OAuth Google; richiede anche il client ID. |
NEXT_PUBLIC_SENTRY_DSN | no | Invio degli errori a Sentry. |
NEXT_PUBLIC_VAPID_PUBLIC_KEY | no | Chiave pubblica per notifiche push. |
TEST_DATABASE_URL | no | Override del DB di test; deve identificarlo esplicitamente. |
NODE_ENV e CI sono gestite dagli strumenti e normalmente non vanno
impostate in .env.
I test di integrazione usano postgres-test su 127.0.0.1:5433, con
filesystem temporaneo. Lo script rifiuta URL che non identifichino chiaramente
un database di test.
Preparare schema e fixture:
npm run test:db:prepare
Eseguire la suite forzando DATABASE_URL sul database di test.
PowerShell:
$env:DATABASE_URL='postgresql://[email protected]:5433/biblioflow_test?schema=public'
npm test
macOS/Linux:
DATABASE_URL='postgresql://[email protected]:5433/biblioflow_test?schema=public' npm test
Rimuovere sempre il container:
npm run test:db:down
Se si personalizza TEST_DATABASE_URL, usare lo stesso valore come
DATABASE_URL durante npm test. Non usare il database applicativo o un
database condiviso per i test di integrazione.
Altri comandi:
npm run test:watch
npm run test:coverage
npm test esclude tests/pre-modifica/**: quei test caratterizzano il
sistema originale. La suite storica e' disponibile con npm run test:pre e
va interpretata rispetto al tag baseline-pre-cr-bf-01, come spiegato nel
Post-Modification Test Document (documentazione/).
Test end-to-end (Playwright, build di produzione). Il database indicato deve essere di test: il setup applica migrazioni e seed e rifiuta altri nomi.
npm run build
E2E_DATABASE_URL='postgresql://[email protected]:5433/biblioflow_e2e_test?schema=public' \
npm run test:e2e
Il server di prova parte sulla porta 3100 con E2E_DATABASE_URL come
database; NEXTAUTH_SECRET e CRON_SECRET vengono letti dall'ambiente come
per l'applicazione.
La PR esegue sei job: lint, typecheck, build, test, e2e e audit. L'equivalente locale e':
npm ci
npm run lint
npx tsc --noEmit
npm run build
npm run test:db:prepare
Eseguire quindi npm test con la DATABASE_URL di test mostrata sopra e:
npm audit --omit=dev --audit-level=high
npm audit --audit-level=high
npm run test:db:down
Il job audit blocca la pipeline sulle dipendenze di produzione. L'audit
completo resta visibile come controllo informativo per le dipendenze di
sviluppo; l'advisory corrente della catena ESLint non ha un fix compatibile.
Lint, typecheck, build e test devono essere verdi. In CI le variabili sono
repository secrets/variables e PostgreSQL 16 e' un service container.
src/app/ pagine Next.js e route handler API
src/components/ componenti UI e funzionali
src/lib/ auth, dominio, Prisma, automazioni e rate limiting
prisma/ schema, migrazioni e seed
tests/ suite correnti e caratterizzazione pre-modifica
documentazione/ documenti LaTeX, diagrammi, PDF e registro dei lavori
documentazione-consegna/ documenti consegnati (8 PDF ed Excel del corso)
docs/ documenti di lavoro storici (analisi AS-IS, report di fase)
.github/workflows/ pipeline CI e deploy migrazioni
documentazione/main e' protetto. Ogni modifica parte da main aggiornato, usa un branch
dedicato e arriva tramite PR revisionata con CI verde. Le convenzioni complete
sono in CONTRIBUTING.md.
Il progetto nasce nel corso di Human-Computer Interaction ed e' stato oggetto di manutenzione evolutiva per il corso di Ingegneria, Gestione ed Evoluzione del Software, Universita' degli Studi di Salerno, A.A. 2025/2026.