HydroServer is moving away from external orchestration systems. Data ingestion is now handled internally via Celery tasks, which gives the server itself the flexibility to manage complex extraction and transformation workflows. That makes the SDL's original orchestration complexity unnecessary. The SDL's remaining job is simple and specific: take CSV files from a local datalogger and push new observations to HydroServer. This rewrite pairs it down to exactly that.
Additionally, we're taking what we learned from SDL v1 and modernizing the software stack:
Stack
Tauri v2 (app shell, tray, native dialogs, code signing)
Python + FastAPI sidecar (scheduling, CSV parsing, HydroServer push)
Vanilla HTML/TypeScript + Tailwind CSS v4 (UI)
Scope
Local CSV file watching with configurable column → datastream mappings
Interactive CSV preview with click-to-configure row/column selection
APScheduler-based polling loop with per-job cursor state
System tray with live status indicator
First-run onboarding flow
Cross-platform packaging via GitHub Actions
HydroServer is moving away from external orchestration systems. Data ingestion is now handled internally via Celery tasks, which gives the server itself the flexibility to manage complex extraction and transformation workflows. That makes the SDL's original orchestration complexity unnecessary. The SDL's remaining job is simple and specific: take CSV files from a local datalogger and push new observations to HydroServer. This rewrite pairs it down to exactly that.
Additionally, we're taking what we learned from SDL v1 and modernizing the software stack:
Stack
Tauri v2 (app shell, tray, native dialogs, code signing)
Python + FastAPI sidecar (scheduling, CSV parsing, HydroServer push)
Vanilla HTML/TypeScript + Tailwind CSS v4 (UI)
Scope
Local CSV file watching with configurable column → datastream mappings
Interactive CSV preview with click-to-configure row/column selection
APScheduler-based polling loop with per-job cursor state
System tray with live status indicator
First-run onboarding flow
Cross-platform packaging via GitHub Actions