Skip to content

ArcTeam/plaetzwiese

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”οΈ Plaetzwise Project

Un'applicazione web interattiva che combina mappe, video, visualizzazioni 360Β° e grafici per esplorare percorsi montani.

Status Build Tool JavaScript

πŸ“‘ Indice

πŸ“„ Licenza

Questo progetto Γ¨ rilasciato sotto GNU Affero General Public License v3.0.

Cosa Significa

  • 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

Obblighi

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.

πŸ‘₯ Autori

  • Giuseppe Naponiello - Sviluppo iniziale - @beppenapo

πŸ“¦ Librerie utilizzate

πŸš€ Quick Start

Prerequisiti

  • Node.js >= 16
  • npm >= 7

Setup Locale

# 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 Produzione

# Build ottimizzato
npm run build

# File generati in /dist/
ls dist/

Preview Produzione

# Test build locale
npm run preview

# Accessibile su http://localhost:3001
# Installa dipendenze
npm install

# Avvia sviluppo
npm run dev

# Apri http://localhost:3001

πŸ“‹ FunzionalitΓ 

  • πŸ—ΊοΈ 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

πŸ“ Struttura Progetto

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

πŸ› οΈ Comandi Disponibili

Metodo 1: NPM Scripts (Raccomandato)

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

Metodo 2: Script Bash

./run.sh dev         # Server sviluppo (interfaccia colorata)
./run.sh build       # Build produzione
./run.sh status      # Status progetto
./run.sh help        # Lista comandi

Metodo 3: Makefile

make dev             # Server sviluppo
make build           # Build produzione
make preview         # Preview build
make help            # Tutti i comandi

βš™οΈ Configurazione

Vite (vite.config.js)

  • 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

NPM Scripts Completi

{
  "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"
  }
}

πŸ›οΈ Architettura Moduli

PlaetzwiseApp

// 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();
  }
}

MapManager (Gestione Mappa)

  • Inizializzazione Leaflet
  • Markers sincronizzati con video
  • Gestione percorsi GeoJSON
  • Eventi click e hover

VideoManager (Controllo Video)

  • Sincronizzazione dual-video (drone + terra)
  • Controlli unificati
  • Aggiornamento markers mappa
  • Gestione metadati temporali

ChartManager (Grafico Altimetrico)

  • Rendering grafico Chart.js
  • Sincronizzazione con posizione video
  • Hover interattivo
  • Aggiornamento real-time

Viewer360 (Panorami)

  • Caricamento immagini 360Β°
  • Rendering Three.js
  • Controlli mouse/touch
  • Transizioni fluide

πŸ“Š Dati Centralizzati

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
};

🎯 Funzionalità Avanzate

Hot Module Replacement

  • Aggiornamenti istantanei durante sviluppo
  • Stato applicazione preservato
  • Feedback immediato delle modifiche

Tree Shaking

  • Bundle ottimizzati automaticamente
  • Rimozione codice non utilizzato
  • Dimensioni file minimizzate

Code Splitting

  • Caricamento lazy dei moduli
  • Performance ottimizzate
  • Bundle per route/feature

🚨 Troubleshooting

Porta Occupata

# Cambia porta
npm run dev -- --port 3002

# Trova processo
lsof -ti:3001 | xargs kill -9

Cache Corrotta

# Pulizia completa
npm run clean
# o
npm run reinstall

Errori Build

# Verifica dipendenze
npm ls

# Reinstalla se necessario
npm run reinstall

Problemi Assets

# Assets serviti da /assets/
# Esempio: /assets/video/drone.mp4
# NON: /video/drone.mp4

πŸ› Segnalazione Bug

Per segnalare bug, usa le GitHub Issues con:

  • Descrizione dettagliata del problema
  • Passi per riprodurre
  • Screenshot (se applicabile)
  • Informazioni ambiente (browser, OS, Node.js version)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published