Un'applicazione web interattiva che combina mappe, video, visualizzazioni 360Β° e grafici per esplorare percorsi montani.
- π Licenza
- π₯ Autori
- π¦ Librerie utilizzate
- π Quick Start
- π FunzionalitΓ
- π Struttura Progetto
- π οΈ Comandi Disponibili
- βοΈ Configurazione
- ποΈ Architettura Moduli
- π Dati Centralizzati
- π― FunzionalitΓ Avanzate
- π¨ Troubleshooting
- π Segnalazione Bug
Questo progetto Γ¨ rilasciato sotto GNU Affero General Public License v3.0.
- Uso libero: Puoi usare, modificare e distribuire liberamente
- Copyleft forte: Le modifiche devono rimanere open source
- Network protection: App o servizi web derivati devono pubblicare il codice modificato con la stessa licenza
- Community first: Incoraggia collaborazioni produttive
Se usi questo codice (anche per servizi web):
- Devi rilasciare le tue modifiche sotto AGPL
- Devi fornire accesso al codice sorgente
- Devi mantenere le note di copyright
- Vale anche per applicazioni web-based
Vedi il file LICENSE per dettagli completi.
- Giuseppe Naponiello - Sviluppo iniziale - @beppenapo
- Vite per l'eccellente build tool
- Leaflet per le mappe interattive
- Three.js per la visualizzazione 3D
- Chart.js per i grafici
- Node.js >= 16
- npm >= 7
# Spostati nella pagina dove vuoi clonare il repository ed esegui:
git clone https://github.com/ArcTeam/plaetzwiese.git
cd plaetzwise
# Installazione delle librerie e dei moduli
npm install
# Avvia l'applicazione in modalitΓ sviluppo
npm run dev
# Il browser dovrebbe essere aperto in automatico, altrimenti apri http://localhost:3001# Build ottimizzato
npm run build
# File generati in /dist/
ls dist/# Test build locale
npm run preview
# Accessibile su http://localhost:3001# Installa dipendenze
npm install
# Avvia sviluppo
npm run dev
# Apri http://localhost:3001- πΊοΈ Mappa interattiva con Leaflet
- π₯ Video sincronizzati da drone e da terra
- π Visualizzatore 360Β° con Three.js
- π Grafico altimetrico con Chart.js
- π± Design responsive
- β‘ Hot Module Replacement
- π¨ Moduli: Javascript ES6 native
plaetzwise/
βββ index.html # Entry point HTML
βββ package.json # Configurazione npm
βββ vite.config.js # Configurazione Vite
βββ src/ # Codice sorgente modulare
β βββ data/
β β βββ index.js # Dati centralizzati
β βββ modules/
β β βββ MapManager.js # Gestione mappa
β β βββ VideoManager.js # Controllo video
β β βββ ChartManager.js # Grafico altimetrico
β β βββ Viewer360.js # Visualizzatore 360Β°
β βββ utils/
β β βββ DOMUtils.js # Utility DOM
β βββ PlaetzwiseApp.js # Orchestratore principale
β βββ main.js # Entry point JS
βββ assets/ # Assets statici
β βββ camera360/ # Immagini 360Β°
β βββ video/ # Video drone/terra
β βββ geojson/ # Dati geografici
β βββ thumb/ # Thumbnails
βββ css/ # Stili CSS
βββ img/ # Immagini UI
npm run dev # Server sviluppo (porta 3001)
npm run build # Build produzione
npm run preview # Preview build
npm run deploy # Build + preview
npm run clean # Pulizia cache
npm run reinstall # Reinstall completo./run.sh dev # Server sviluppo (interfaccia colorata)
./run.sh build # Build produzione
./run.sh status # Status progetto
./run.sh help # Lista comandimake dev # Server sviluppo
make build # Build produzione
make preview # Preview build
make help # Tutti i comandi- Server dev: porta 3001, auto-open, network access
- Build:
- Terser minification: strumento che "minimizz il codice javascript rimuovendo spazi, commenti, variabili inutili. Il risultato Γ¨ un file piΓΉ piccolo e veloce da scaricare
- Tree shaking: Γ¨ una tecnica che elimina dal bundle finale tutto il codice che non viene effettivamente usato (βdead codeβ). Se importi solo alcune funzioni di una libreria, tree shaking rimuove le parti inutilizzate. Il risultato Γ¨ un file JavaScript piΓΉ leggero e ottimizzato. Serve a migliorare le performance dellβapplicazione, caricando solo ciΓ² che serve davvero.
- Assets: serviti da
/assets/ - Alias:
@β/src,@modulesβ/src/modules
{
"scripts": {
"dev": "vite --port 3001 --open",
"build": "vite build",
"preview": "vite preview --port 3001 --open",
"start": "npm run dev",
"serve": "npm run preview",
"deploy": "npm run build && npm run preview",
"clean": "rm -rf dist node_modules/.vite",
"reinstall": "npm run clean-all && npm install",
"dev-host": "vite --host 0.0.0.0 --port 3001"
}
}// Entry point principale che coordina tutti i moduli
class PlaetzwiseApp {
constructor() {
this.mapManager = new MapManager();
this.videoManager = new VideoManager();
this.chartManager = new ChartManager();
this.viewer360 = new Viewer360();
}
}- Inizializzazione Leaflet
- Markers sincronizzati con video
- Gestione percorsi GeoJSON
- Eventi click e hover
- Sincronizzazione dual-video (drone + terra)
- Controlli unificati
- Aggiornamento markers mappa
- Gestione metadati temporali
- Rendering grafico Chart.js
- Sincronizzazione con posizione video
- Hover interattivo
- Aggiornamento real-time
- Caricamento immagini 360Β°
- Rendering Three.js
- Controlli mouse/touch
- Transizioni fluide
Tutti i dati sono centralizzati in /src/data/index.js:
export const chartData = [
[0, 1523], // [secondi, altitudine]
[30, 1567],
// ...
];
export const geojsonData = {
type: "FeatureCollection",
features: [/* percorsi */]
};
export const videoDurations = {
drone: 390, // secondi
ground: 355
};- Aggiornamenti istantanei durante sviluppo
- Stato applicazione preservato
- Feedback immediato delle modifiche
- Bundle ottimizzati automaticamente
- Rimozione codice non utilizzato
- Dimensioni file minimizzate
- Caricamento lazy dei moduli
- Performance ottimizzate
- Bundle per route/feature
# Cambia porta
npm run dev -- --port 3002
# Trova processo
lsof -ti:3001 | xargs kill -9# Pulizia completa
npm run clean
# o
npm run reinstall# Verifica dipendenze
npm ls
# Reinstalla se necessario
npm run reinstall# Assets serviti da /assets/
# Esempio: /assets/video/drone.mp4
# NON: /video/drone.mp4Per segnalare bug, usa le GitHub Issues con:
- Descrizione dettagliata del problema
- Passi per riprodurre
- Screenshot (se applicabile)
- Informazioni ambiente (browser, OS, Node.js version)