TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Vorflugkontrolle, Wetter- und SORA-Bewertung, Flugtagebuch und PDF-Einsatzbericht in einer offline-fähigen Web-App. Ohne Konto, ohne Server.
Translation pending
ProductivityTypeScript · JavaScriptGitHub @rubenvittOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Flugmappe ist eine Progressive Web App zur Verwaltung von UAV-Einsätzen (Drohnenflüge) mit Vorflugchecklisten, Wetterbewertung, SORA-Risikoklassifizierung und PDF-Berichterstellung. Entwickelt für den realen Einsatzbetrieb deutschsprachiger Drohnenpiloten — alle Daten bleiben lokal im Browser. 1. Einsatzdaten — Standort, Einsatzdetails, Auftrag, Truppstärke und interaktive Einsatzkarte 2. Vorflugkontrolle — Wetterbewertung, Umgebungsprüfung, Fluganmeldungen und SORA-Risikoklassifizierung 3. Flüge — Dokumentation der durchgeführten Flüge 4. Nachbereitung — Einsatzabschluss und PDF-ExportRead the full README ↗
Flugmappe ist eine Progressive Web App zur Verwaltung von UAV-Einsätzen (Drohnenflüge) mit Vorflugchecklisten, Wetterbewertung, SORA-Risikoklassifizierung und PDF-Berichterstellung. Entwickelt für den realen Einsatzbetrieb deutschsprachiger Drohnenpiloten — alle Daten bleiben lokal im Browser.
Jeder Einsatz durchläuft einen strukturierten Workflow:
gut / Vorsicht / Warnung)Automatische Abfrage nahegelegener Infrastruktur über Overpass/OpenStreetMap:
Live-Flugverkehr im Umkreis von 10 km aus Community-ADS-B-Daten (adsb.lol, Fallback adsb.fi):
server/, GET /adsb/point/...). Ist kein Proxy erreichbar (fehlende Konfiguration, „Failed to fetch“ durch CORS/Netzwerk, Route fehlt), zeigt die Sektion „Kein ADS-B-Server verbunden“ statt eines Fehlers, dazu einen Link zur Live-Karte; im Dev-Server leitet Vite direkt an adsb.lol weiterUmfassender Einsatzbericht mit allen erfassten Daten:
| Technologie | Zweck |
|---|---|
| React 19 | UI-Framework |
| TypeScript 5.9 (strict) | Typsicherheit |
| Vite 8 | Build-Tool und Dev-Server |
| Tailwind CSS 4 | Utility-First CSS |
| React Router 7 | Client-Side Routing |
| TanStack Query 5 | Server-State Management und Caching |
| MapLibre GL JS 6 | Karte mit VersaTiles-Basiskarte und eigenen Zeichenwerkzeugen |
| jsPDF | PDF-Generierung |
| React Compiler | Auto-Memoization |
| vite-plugin-pwa | PWA mit Workbox Service Worker |
# Repository klonen
git clone https://github.com/rubenvitt/uav-checklists.git
cd uav-checklists
# Abhängigkeiten installieren
pnpm install
# Dev-Server starten
pnpm dev
# TypeScript-Check + Production-Build
pnpm build
# Linting
pnpm lint
# Production-Build vorab anschauen
pnpm preview
Im Verzeichnis landing/ liegt eine eigenständige, statische
Website, die das Projekt für andere Bereitschaften und Interessierte vorstellt.
Sie ist vollständig vom PWA-Build getrennt (eigenes package.json, eigene
Lockfile, eigener Vite-Build) und lässt sich unabhängig auf einer anderen Domain
ausliefern:
cd landing
pnpm install
pnpm dev # http://localhost:5180
pnpm build # statischer Build nach landing/dist/
Details, Screenshot-Werkzeuge und die vor dem Deployment anzupassenden Stellen
stehen in landing/README.md.
src/
├── components/
│ ├── sections/ # Feature-Abschnitte der einzelnen Phasen
│ │ ├── WeatherSection # Wetterbewertung
│ │ ├── RiskClassSection # SORA-Risikoklassifizierung
│ │ ├── NearbyCheckSection # Umgebungsprüfung (Overpass)
│ │ ├── FlightTrafficSection # Flugverkehr (ADS-B)
│ │ ├── AnmeldungenSection # Fluganmeldungen
│ │ ├── EinsatzdetailsSection # Einsatz-Stammdaten
│ │ ├── EinsatzauftragSection # Einsatzauftrag und Vorlagen
│ │ ├── EinsatzkarteSection # Karte oder Foto
│ │ ├── TruppstaerkeSection # Personalverwaltung
│ │ ├── RahmenangabenSection # Drohne und Flughöhe
│ │ └── ExternalToolsSection # Links zu externen Diensten
│ ├── map/ # MapLibre-Karte mit Zeichenwerkzeugen
│ ├── *Phase.tsx # Phasen-Komponenten (Einsatzdaten, Vorflug, Flüge, Nachbereitung)
│ ├── MissionOverview.tsx # Einsatzübersicht (Start, Liste, Löschen)
│ └── MissionStepper.tsx # Phasen-Navigation
├── hooks/ # Custom Hooks (TanStack Query, localStorage, Geolocation)
├── services/ # API-Clients (Open-Meteo, Bright Sky/DWD, NOAA, Overpass, ADS-B, Nominatim)
├── data/ # Statische Daten (Drohnenspecs, Schwellenwerte)
├── types/ # TypeScript-Typen
├── utils/ # Hilfsfunktionen (Storage, PDF, Bewertung, Formatierung)
└── context/ # React Context (MissionId)
| API | Dienst | Cache-Strategie |
|---|---|---|
| Open-Meteo | Wetter und Vorhersage | TanStack Query 10 min + Service Worker 10 min |
| Bright Sky (DWD) | Stationsmessung + amtliche Warnungen (nur DE) | TanStack Query (Snapshot je Einsatzabschnitt) + Service Worker 10 min |
| NOAA SWPC | Geomagnetischer K-Index | TanStack Query 1 h + Service Worker 1 h |
| Overpass | Nahegelegene Infrastruktur (OSM) | localStorage 8 h |
| adsb.lol / adsb.fi über Backend-Proxy | Live-Flugverkehr (ADS-B, ODbL) | TanStack Query 30 s, Refetch 60 s, Snapshot je Einsatzabschnitt; Service Worker NetworkOnly |
| Nominatim | Reverse Geocoding | TanStack Query |
VersaTiles (tiles.versatiles.org) | Kartenkacheln und Glyphen (OSM-Daten) | Service Worker CacheFirst 30 Tage |
Alle APIs sind öffentlich zugänglich und erfordern keine API-Keys.
Sämtliche Daten werden ausschließlich im Browser gespeichert:
localStorage mit useSyncExternalStore für reaktive Updatesuav-form:{missionId}:{key} in localStoragelocalStorageSiehe LICENSE für Details.