Einrichtung

Einmalig durchführen – danach startet die App direkt.

Schritt 1 – Datenbank anlegen

Im Supabase Dashboard → SQL Editor → diesen Code einfügen → Run:

-- Mitarbeiter
create table if not exists mitarbeiter (
  id uuid default gen_random_uuid() primary key,
  email text unique not null,
  name text not null,
  rolle text default 'mitarbeiter',
  passwort_hash text,
  wochensoll_stunden numeric(4,2) default 40,
  urlaub_tage_pro_jahr int default 25,
  eintrittsdatum date,
  erfassung_ab date,
  startsaldo_stunden numeric(6,2) default 0,
  startsaldo_urlaub numeric(4,1) default 0,
  aktiv boolean default true,
  erstellt_am timestamptz default now()
);

-- Wochendienstplan
create table if not exists dienstplan (
  id uuid default gen_random_uuid() primary key,
  mitarbeiter_id uuid references mitarbeiter(id) on delete cascade,
  wochentag int not null, -- 1=Mo, 2=Di, 3=Mi, 4=Do, 5=Fr, 6=Sa, 0=So
  start_zeit time,
  end_zeit time,
  pause_minuten int default 0,
  aktiv boolean default true
);

-- Zeiteinträge
create table if not exists zeiteintraege (
  id uuid default gen_random_uuid() primary key,
  mitarbeiter_id uuid references mitarbeiter(id) on delete cascade,
  datum date not null,
  typ text not null,
  start_zeit time,
  end_zeit time,
  pause_minuten int default 0,
  effektive_minuten numeric(6,2) default 0,
  notiz text,
  erstellt_am timestamptz default now()
);

-- Sicherheit
alter table mitarbeiter enable row level security;
alter table dienstplan enable row level security;
alter table zeiteintraege enable row level security;
create policy "r_ma" on mitarbeiter for select using (true);
create policy "w_ma" on mitarbeiter for insert with check (true);
create policy "u_ma" on mitarbeiter for update using (true);
create policy "del_ma" on mitarbeiter for delete using (true);
create policy "r_dp" on dienstplan for select using (true);
create policy "w_dp" on dienstplan for insert with check (true);
create policy "u_dp" on dienstplan for update using (true);
create policy "d_dp" on dienstplan for delete using (true);
create policy "r_ze" on zeiteintraege for select using (true);
create policy "w_ze" on zeiteintraege for insert with check (true);
create policy "d_ze" on zeiteintraege for delete using (true);
create policy "u_ze" on zeiteintraege for update using (true);
Schritt 2 – Zugangsdaten eingeben
Logo

Praxis Dr. Prümmer

Facharzt für Innere Medizin

Arbeitszeitverwaltung

Noch kein Passwort? Konto aktivieren

Logo
–
Inhaltsverzeichnis
  1. Anmeldung und Konto aktivieren
  2. Eintrag erstellen
  3. Meine Einträge
  4. Mein Konto
  5. Jahreskalender
  6. Stundenzettel / PDF-Export
  7. Administration (nur Admin)
  8. Datensicherung
  9. Häufige Fragen
1. Anmeldung und Konto aktivieren

Erster Login:

  • Benutzername: vorname.nachname (z.B. max.mustermann)
  • Beim ersten Login: eigenes Passwort vergeben (mind. 6 Zeichen)
  • Auf „Konto aktivieren" klicken

App zum Homescreen hinzufügen:

  • iPhone (Safari): Teilen-Symbol (□↑) → „Zum Home-Bildschirm"
  • Android (Chrome): drei Punkte (⋮) → „Zum Startbildschirm hinzufügen"
💡 Passwort vergessen? Den Administrator kontaktieren – er kann es zurücksetzen.
2. Eintrag erstellen (⏱)
  • Tag wählen: Im farbigen Mini-Kalender auf den gewünschten Tag klicken – heute ist automatisch vorausgewählt
  • Art wählen: Arbeitszeit, Rufbereitschaft, Urlaub, Krank, Feiertag oder Sonstiges
  • Zeiten eingeben: Bei Arbeitszeit Beginn, Ende und Pause eintragen
  • Urlaub/Krank: Von- und Bis-Datum wählen – Werktage werden automatisch eingetragen
  • Speichern: 💾 Speichern – oder 💾 + Weiterer Eintrag für mehrere Einträge am selben Tag

Farben im Mini-Kalender:

AArbeit UUrlaub KKrank RRufbereitschaft FFeiertag
⚠️ Teilzeitkräfte: Urlaub an einem laut Dienstplan freien Tag wird mit 0 Stunden und ohne Urlaubstagsverbrauch gespeichert.
3. Meine Einträge (📋)
  • Statistik oben: Gesamtstunden, Urlaubstage (Monat + Jahresübersicht + Resturlaub), Krankheitstage
  • Monat wechseln über das Datumsfeld
  • ✏️ Eintrag bearbeiten  |  🗑 Eintrag löschen
  • 📊 CSV – Tabelle für Excel  |  📄 PDF – druckbarer Stundenzettel
4. Mein Konto (📊)
  • Alle Salden beziehen sich auf bis heute – nicht auf Jahres- oder Monatsende
  • Ein Minus im laufenden Monat kann bedeuten dass noch nicht alle Tage eingetragen sind
  • Resturlaub zieht bereits geplanten zukünftigen Urlaub sofort ab
  • Urlaub, Krank und Feiertage werden als volles Tagessoll gutgeschrieben
🟢 Grün = im Plus 🟡 Gelb = leicht im Minus 🔴 Rot = deutlich im Minus
📅 Wie wird der Urlaub berechnet?

Der Resturlaub ergibt sich aus:

Jahresanspruch − alle eingetragenen Urlaubstage (inkl. zukünftig geplanter)

Beispiel: 25 Tage Anspruch − 10 genommene − 5 geplante = 10 Tage Resturlaub

Wichtig: Nur Tage die laut Dienstplan Arbeitstage sind, zählen als Urlaubstag:

  • Vollzeitkraft (5 Tage/Woche): jeder eingetragene Werktag = 1 Urlaubstag
  • Teilzeitkraft Teilzeitkraft (2 Tage/Woche Mo+Fr): nur Mo und Fr zählen als Urlaubstag – Di, Mi, Do zählen nicht
  • Wochenenden werden grundsätzlich nie als Urlaubstage gezählt
⏱ Wie viele Stunden werden pro Urlaubstag gutgeschrieben?

Die Stundengutschrift pro Urlaubstag (= Tagessoll) berechnet sich so:

Tagessoll = Wochensoll ÷ Arbeitstage pro Woche

Mitarbeiter Wochensoll Arbeitstage Tagessoll
Vollzeit (MFA) 38,5h 5 Tage 7h 42min
Teilzeit (2 Tage/Wo, 7h) 7h 2 Tage 3h 30min

Diese Stunden werden dem Arbeitszeitkonto gutgeschrieben – das Stundenkonto bleibt also im Gleichgewicht wenn man Urlaub nimmt.

⚠️ Urlaub an einem laut Dienstplan freien Tag (z.B. Teilzeitkraft nimmt Mittwoch Urlaub, arbeitet aber nur Mo+Fr): Es wird kein Urlaubstag verbraucht und 0 Stunden gutgeschrieben. Die App zeigt dafür einen Hinweis.
5. Jahreskalender (📆)
  • Zeigt eingetragene Tage aller Mitarbeiter – ideal zur Urlaubsplanung
  • Jede Zeile = ein Mitarbeiter, jede Spalte = ein Tag
  • Leere Felder = noch nicht eingetragen – kein Dienstplan!
  • ◀ ▶ zum Wechseln zwischen Jahren
💡 Der Kalender zeigt nur bereits eingetragene Tage – er ist kein Dienstplan!
6. Stundenzettel / PDF-Export
  • In „Meine Einträge" oder „Team-Übersicht" auf 📄 PDF klicken
  • Eine HTML-Datei wird heruntergeladen → im Browser öffnen
  • Roter Button „🖨️ Drucken / Als PDF speichern" klicken
  • Im Druckdialog: Ziel → „Als PDF speichern"
Der Stundenzettel enthält: Datum, Beginn, Pause, Ende, Dauer, Datum der Erfassung, Bemerkungen, Gesamtstunden und Unterschriftsfelder.
7. Administration (nur Admin)

👥 Team-Übersicht: Stundenkonten aller Mitarbeiter auf einen Blick

✏️ Einträge verwalten: Einträge für alle Mitarbeiter einsehen, ändern, löschen und neu erstellen

⚙️ Verwaltung:

  • Mitarbeiter anlegen, bearbeiten, deaktivieren
  • Dienstpläne pro Wochentag hinterlegen
  • Passwörter zurücksetzen
  • Wichtig: Arbeitstage/Woche für Teilzeitkräfte korrekt einstellen
7b. Datensicherung (Admin)

Alle Daten der App liegen bei Supabase in der Cloud. Eine regelmäßige lokale Sicherung schützt vor Datenverlust.

💾 So erstellt man eine Datensicherung
  1. In der App auf ⚙️ Verwaltung klicken
  2. Oben rechts auf 💾 Datensicherung klicken
  3. Es werden automatisch 3 CSV-Dateien heruntergeladen:
    mitarbeiter_DATUM.csv
    zeiteintraege_DATUM.csv
    dienstplan_DATUM.csv
  4. Dateien in einem sicheren Ordner speichern (z.B. „Praxis/Zeiterfassung/Backups")

📅 Empfehlung: Einmal im Monat sichern, z.B. immer am Monatsersten.

🔒 Datenschutz bei der Sicherung
  • Die CSV-Dateien enthalten Personaldaten – vertraulich behandeln!
  • Nur auf praxiseigenen Geräten speichern
  • Nicht per E-Mail versenden
  • Alte Backups nach 1 Jahr sicher löschen
🔄 Daten wiederherstellen

Falls Daten verloren gehen sollten:

  1. Die drei CSV-Dateien der letzten Sicherung bereithalten
  2. Den Administrator (Dr. Prümmer) oder die technische Unterstützung kontaktieren
  3. Aus den CSV-Dateien kann ein Import-Script erstellt werden das alle Daten in Supabase wiederherstellt

Die Wiederherstellung dauert typischerweise 15–30 Minuten je nach Datenmenge.

8. Häufige Fragen

Warum bin ich im Minus obwohl ich viel gearbeitet habe?

Das Konto zeigt den Stand bis heute. Fehlen noch Einträge für vergangene Tage, fehlen auch die Stunden. Einfach die fehlenden Tage nachtragen.

Warum wurde mein Urlaubstag mit 0 Stunden gutgeschrieben?

Wenn laut Dienstplan an diesem Wochentag kein Arbeitstag vorgesehen ist, wird der Urlaub mit 0h und ohne Urlaubstagsverbrauch gespeichert.

Kann ich mehrere Einträge pro Tag machen?

Ja – z.B. Arbeitszeit + Rufbereitschaft am gleichen Tag. Auf 💾 + Weiterer Eintrag klicken.

Wie funktioniert die Rufbereitschaft?

Rufbereitschaft wird zu 30% als Arbeitszeit gerechnet (gemäß MTV §7). 10 Stunden Rufbereitschaft = 3 Stunden effektive Arbeitszeit.

Warum zeigt der Jahreskalender leere Felder obwohl ich gearbeitet habe?

Der Kalender zeigt nur eingetragene Tage. Noch nicht erfasste Tage erscheinen leer.

ℹ️ Der Kalender zeigt nur bereits eingetragene Tage – kein Dienstplan. Leere Felder bedeuten: noch nicht eingetragen.
Legende: UUrlaub KKrank AArbeit RRufbereitschaft FFeiertag WE/leer
Lade...
Arbeit Urlaub Krank Rufb. Feiertag
➕ Eintrag hinzufügen
Lade...
Lade...
Lade...
Lade...
Lade...