TutorLoom
기업·대학·교육기관을 위한 학습 플랫폼, 무료 오픈소스이며 엔터프라이즈 버전 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기📚 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.