Skip to content

dergabriel/OnAirCheck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 ██████╗ ███╗   ██╗ █████╗ ██╗██████╗  ██████╗██╗  ██╗███████╗ ██████╗██╗  ██╗
██╔═══██╗████╗  ██║██╔══██╗██║██╔══██╗██╔════╝██║  ██║██╔════╝██╔════╝██║ ██╔╝
██║   ██║██╔██╗ ██║███████║██║██████╔╝██║     ███████║█████╗  ██║     █████╔╝ 
██║   ██║██║╚██╗██║██╔══██║██║██╔══██╗██║     ██╔══██║██╔══╝  ██║     ██╔═██╗ 
╚██████╔╝██║ ╚████║██║  ██║██║██║  ██║╚██████╗██║  ██║███████╗╚██████╗██║  ██╗
 ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚══════╝ ╚═════╝╚═╝  ╚═╝

Radio. Aufgezeichnet. Analysiert. Verstanden.

Status Node React SQLite Lizenz


Die Vision

Radio ist flüchtig. Was einmal gesendet wurde, ist weg – es sei denn, jemand hat zugehört.

OnAirCheck schafft ein dauerhaftes Gedächtnis für Radiostreams. Die App nimmt Sender rund um die Uhr auf, erkennt automatisch ob gerade Musik oder Moderation läuft, und macht stundenlange Aufnahmen in Sekunden durchsuchbar. Kein manuelles Abhören mehr. Keine verpassten Momente.

Gedacht für Redakteure, die ihren eigenen Sender qualitätssichern wollen. Für Journalisten, die Mitbewerber beobachten. Für alle, die wissen wollen: Was lief wann, wie lange – und wie oft?


Was OnAirCheck kann

Aufnehmen — FFmpeg zieht jeden aktiven Stream kontinuierlich und schneidet ihn in 30-Sekunden-Segmente.

Verstehen — ICY-Metadaten aus dem Stream werden live ausgelesen. Enthält der Titel ein " – ", ist es Musik. Kein Titel? Moderation. Zu kurz? Jingle.

Visualisieren — Eine horizontale Timeline zeigt den ganzen Tag auf einen Blick. Farbe verrät sofort: Musik (blau), Moderation (gelb), Jingle (grau).

Abhören — Klick auf ein Segment → der eingebettete Audioplayer springt direkt zur richtigen Stelle. Keine manuelle Suche in stundenlangen Aufnahmen.


Tech Stack

┌─────────────────────────────────────────────────────────┐
│                      Frontend                           │
│    React 18  ·  Vite  ·  Tailwind CSS  ·  lucide-react   │
├─────────────────────────────────────────────────────────┤
│                      Backend                            │
│         Node.js  ·  Express  ·  better-sqlite3          │
├─────────────────────────────────────────────────────────┤
│                    Recording Layer                      │
│              FFmpeg  ·  ICY Metadata HTTP               │
├─────────────────────────────────────────────────────────┤
│                    Infrastruktur                        │
│             Linux / Debian  ·  PM2  ·  SQLite           │
└─────────────────────────────────────────────────────────┘

Aktueller Stand

[██████████████░░░░░░]  ~70% – In aktiver Entwicklung
Feature Status
Projektstruktur & Monorepo ✅ Fertig
Datenbankschema (SQLite) ✅ Fertig
Recording-Service (FFmpeg + ICY) ✅ Fertig
REST API (Streams, Segmente, Stats) ✅ Fertig
Dashboard – KPI-Cards + Sender-Grid ✅ Fertig
Horizon UI Redesign (Sidebar-Layout) ✅ Fertig
Timeline-Ansicht mit Daypart-Farben ✅ Fertig
Segment-Tabelle mit Typ-Filter ✅ Fertig
Floating Tooltip auf der Timeline ✅ Fertig
Audioplayer mit Range-Requests ✅ Fertig
PM2-Deployment-Konfiguration ✅ Fertig
Produktions-Static-Serving ✅ Fertig
Segment-Suche & Filter 🔧 Ausstehend
Waveform-Visualisierung (peaks.js) 📋 Geplant
Whisper-Transkription 📋 Geplant
KI-Zusammenfassungen 📋 Geplant
Authentifizierung / Login 📋 Geplant

Schnellstart

Voraussetzungen: Node.js 20+, FFmpeg installiert

# Repository klonen
git clone https://github.com/dergabriel/OnAirCheck.git
cd OnAirCheck

# Abhängigkeiten installieren
cd backend && npm install
cd ../frontend && npm install

# Backend starten (Port 3001)
cd backend && npm start

# Frontend starten (Port 3000)
cd frontend && npm run dev

Dann im Browser: http://localhost:3000


Datenmodell

streams
  └── id · name · stream_url · logo_url · status · created_at

segments
  └── id · stream_id · filename · started_at · ended_at
      duration_seconds · segment_type · icy_title · artist · title

segment_type: music · talk · jingle · unknown


Dieses Projekt ist in aktiver Entwicklung.
Features, API und Datenstruktur können sich noch ändern.

Gebaut mit viel Kaffee und dem Wunsch, Radio endlich kontrollierbar zu machen.

About

OnAirCheck schafft ein dauerhaftes Gedächtnis für Radiostreams. Die App nimmt Sender rund um die Uhr auf, erkennt automatisch ob gerade Musik oder Moderation läuft, und macht stundenlange Aufnahmen in Sekunden durchsuchbar

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors