Sistema completo per la gestione e fruizione di contenuti museali digitali con supporto multi-dispositivo, realtà aumentata e interazione vocale.
- Panoramica
- Architettura
- Funzionalità Principali
- Tecnologie
- Requisiti
- Installazione
- Configurazione
- Licenza
PaleoTwin è una piattaforma completa per musei che integra:
- Backend API RESTful - Gestione dati, autenticazione, analytics
- Backoffice Web - CMS per curatori museali
- Kiosk Multimediali - Postazioni interattive touchscreen dual-screen con avatar parlanti
- Viewer Web/Mobile/Tablet - Fruizione contenuti in mobilità
- Viewer AR - Visualizzazione modelli 3D in realtà aumentata
- Sistema Analytics - Tracciamento utilizzo e statistiche
- Musei di Storia Naturale
- Esposizioni Paleontologiche
- Mostre Temporanee e Permanenti
- Percorsi Didattici Interattivi
- Esperienze Immersive AR/VR
┌─────────────────────────────────────────────────────┐
│ Frontend Layer │
├──────────────┬──────────────┬──────────────────────┤
│ Backoffice │ Kiosk NW.js │ Mobile/AR Viewer │
│ (EJS/jQuery) │ (Backbone.js)│ (React Native) │
└──────────────┴──────────────┴──────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ API Gateway (Express.js) │
├─────────────────────────────────────────────────────┤
│ • REST API • Authentication (JWT) │
│ • File Upload • Real-time (Socket.io) │
│ • Rate Limiting • CORS Management │
└─────────────────────────────────────────────────────┘
↓
┌──────────────┬──────────────┬──────────────────────┐
│ MongoDB │ MySQL │ Redis │
│ (Analytics, │ (Tessere, │ (Cache, Sessions) │
│ Logs) │ Viaggio) │ │
└──────────────┴──────────────┴──────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ File Storage / CDN │
│ • Immagini (JPG, PNG, WEBP) │
│ • Modelli 3D (GLB, GLTF, OBJ) │
│ • Video (WEBM, MP4) │
└─────────────────────────────────────────────────────┘
- Controllers: Business logic (auth, CRUD, analytics)
- Models: Mongoose schemas + MySQL ORM
- Routes: API endpoints con middleware
- Services: Email, logging, file processing
- Middleware: Auth JWT, CORS
- Applicazione desktop dual-screen
- Avatar parlanti con riconoscimento vocale
- Sistema di dialogo interattivo
- Applicazione per video immersivi
- Applicazione per visualizzazione schede interattive
- Slideshow e gallerie immagini
- Integrazione Socket.io per real-time
- CMS per gestione contenuti
- Upload file e immagini
- Gestione mostre ed exhibit
- Analytics dashboard
- Login JWT con refresh token
- Ruoli: Admin, Curatore
- Password recovery via email
- Session tracking e audit log
- Oggetti Digitali: Catalogazione reperti con metadata
- Mostre: Gestione mostre temporanee/permanenti
- Exhibit: Configurazione display multi-layout
- Testi Narrativi: Multi-lingua (ITA, ENG) e multi-audience (standard, bambino)
- Classificazione Scientifica: Tassonomia Linneana
- Contesto Geologico: Datazione e provenienza
- Memory Game
- Puzzle Game
- Quiz Multi-risposta
- Aptic game
- Scratch Game
- Ordering
- Tracking eventi utente (click, view, interaction)
- Heatmap oraria utilizzo
- User journey attraverso exhibit
- Statistiche per device e mostra
- Dashboard aggregazione dati
- Upload immagini (drag & drop)
- Processing modelli 3D (GLB, GLTF)
- Ottimizzazione automatica
- Generazione QR Code per exhibit
- HDR environment maps
- Kiosk: Touchscreen dual-screen, avatar parlanti
- Mobile: Viewer responsive
- Tablet: Interfaccia ottimizzata
- AR: Realtà aumentata con marker
- Web: Viewer responsive
- Runtime: Node.js
- Framework: Express.js 4.x
- Database: MongoDB
- Cache: Redis 6.x
- ODM/ORM: Mongoose, mysql2
- Auth: JWT (jsonwebtoken), bcryptjs
- Email: Nodemailer
- File Upload: Multer
- WebSocket: Socket.io
- Logging: Winston
- JavaScript: jQuery 3.7.1
- UI Framework: Bootstrap 5
- Date Picker: Moment.js, DateTimePicker
- Framework: NW.js (Chromium + Node.js)
- UI Library: jQuery
- Slideshow: Swiper.js
- Voice: RecordRTC, Web Speech API
- Icons: Now-UI Kit
- AR.js / 8th Wall
- Node.js >= 16.0.0
- npm >= 8.0.0
- MongoDB >= 5.0
- Server Linux (Ubuntu 20.04+ raccomandato)
- Nginx (reverse proxy)
- PM2 (process manager)
- SSL Certificate (Let's Encrypt)
- 8GB RAM minimo
- 50GB storage (+ media storage)
- PC Windows 10+ / Linux
- Dual monitor setup
- Touchscreen
- Microfono
- 8GB RAM
- SSD 256GB
git clone https://github.com/your-org/paleotwin.git
cd paleotwin# web_viewer
cd web_viewer
npm install
# Backoffice
cd ../backoffice
npm install
# Kiosk
cd ../app_kiosk
npm install
# Video
cd ../app_video
npm install
# Avatar
cd ../applicazione-client-avatar
npm install
# Games
cd ../app_games
npm installMongoDB:
mongosh
use paleotwin
db.createUser({
user: "paleotwin",
pwd: "secure_password",
roles: ["readWrite"]
})backend/.env:
NODE_ENV=development
PORT=3000
# MongoDB
MONGODB_URI=mongodb://paleotwin:password@localhost:27017/paleotwin
# JWT
JWT_SECRET=your-super-secret-jwt-key-change-in-production
JWT_EXPIRES_IN=8h
# Email (SMTP)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=noreply@museo.it
SMTP_PASS=app-specific-password
SMTP_FROM=noreply@museo.it
# Frontend URLs
FRONTEND_URL=https://admin.museo.it
# Storage
IMAGE_PATH=/var/www/paleotwin/uploads
# Viewer URLs
VIEWER_URL=https://viewer.museo.it/?
VIEWER_AR_URL=https://ar.museo.it/?
# Redis (optional)
REDIS_URL=redis://localhost:6379
# App
APP_NAME=PaleoTwincd backend
npm run migratenpm run seed# Backoffice (separate terminal)
cd backoffice
npm run devSeguire le indicazioni presenti nei file di configurazione della cartella Documentazione
AGPLv3 (dettagli https://www.gnu.org/licenses/agpl-3.0.html)
- UniBo (soggetto Attuatore)
- Mediasfot srl (https://www.mediasoftonline.com/) (soggetto beneficiario)
- Energicamente (www.enme.it) (soggetto beneficiario)