TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证📚 Sistema di gestione intelligente per biblioteche universitarie - PWA Next.js
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 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.