Tom Tröger 085287c7a5
All checks were successful
Arbeitszeitmessung Deploy / Build Webserver (push) Successful in 8m45s
Tests / Run Go Tests (push) Successful in 8m48s
Merge pull request 'dev/finalFixes' (#81) from dev/finalFixes into main
Reviewed-on: #81
2026-03-01 10:11:45 +01:00
2025-10-28 22:59:09 +01:00
2025-08-28 10:55:46 +02:00
2025-09-09 11:07:14 +02:00
2025-09-09 11:07:14 +02:00

Arbeitszeitmessung

Quality Gate Status


Eine open-source Software zur Arbeitszeitmessung

Features

  • manuelle Korrektur von einzelnen Buchungen

  • Buchung von benutzerdefinierten Abwesenheiten

  • automatische gesetzlicher Feiertage

  • Pflege eigener Feiertage

  • wöchentliches Abrechnungssystem

  • Kontrolle der Arbeitszeiten durch direkte Führungskraft

  • Ausgabe der Arbeitszeiten je Monat in PDF Format

  • Anwesenheitsübersicht

Installation

git clone https://git.letsstein.de/tom/arbeitszeitmessung arbeitszeitmessung

cd arbeitszeitmessung

./install.sh

Konfiguration:

  • Datenbank
    • POSTGRES_USER Postgres ADMIN Nutzername
    • POSTGRES_PASSWORD Postgres ADMIN Passwort
    • POSTGRES_API_USER Postgres API Nutzername für Webanwendung
    • POSTGRES_API_PASS Postgres API Passwort für Webanwendung
    • POSTGRES_PATH Datebank Pfad
    • POSTGRES_DB Postgres Datenbank Name
    • POSTGRES_PORT Postgres Port für administration
  • System
    • TZ Zeitzone
    • LOG_LEVEL Welche Log-Nachrichten werden in der Konsole erscheinen
  • Web/API
    • API_TOKEN API Token für ESP Endpoints
    • WEB_PORT Port unter welchem Webserver erreichbar ist
  • Ordnerstruktur
    • BACKUP_FOLDER Pfad für DB Backup Datein
    • LOG_PATH Pfad für Audit Logs

Administration:

Nutzer erstellen:

Nutzerdaten erstellen:

INSERT INTO "s_personal_daten"
  (
  "personal_nummer",
  "vorname",
  "nachname",
  "card_uid",
  "geburtsdatum",
  "geschlecht",
  "adresse",
  "plz",
  "hauptbeschaeftigungs_ort",
  "aktiv_beschaeftigt",
  "vorgesetzter_pers_nr",
  "arbeitszeit_min_start",
  "arbeitszeit_max_ende",
  "arbeitszeit_per_tag",
  "arbeitszeit_per_woche",
  )
VALUES (
  1,
  'Max',
  'Mustermann',
  'acde-edca',
  '2003-02-01',
  1,
  'Musterstr. 42',
  '00001',
  1,
  true,
  123,
  '07:00:00',
  '20:00:00',
  8,
  40
  );

Nutzerpasswort generieren (kann auch später als Passwort reset genutzt werden):

INSERT INTO "user_password"
  ("personal_nummer", "pass_hash")
VALUES (123, crypt('password', gen_salt('bf')));

Buchungstypen erstellen:

Ohne definierte Anwesenheits und Abwesenheitstypen funktioniert die Anwendung nicht!

Anwesenheiten:

INSERT INTO "s_anwesenheit_typen"
  ("anwesenheit_id", "anwesenheit_name")
VALUES (1, 'Büro');

Abwesenheiten:

INSERT INTO "s_abwesenheit_typen"
  ("abwesenheit_id", "abwesenheit_name", "arbeitszeit_equivalent")
VALUES (1, 'Urlaub', 100);

Feiertage erstellen:

Die gesetzlichen Feiertage für Deutschland/Sachsen werden automatisch mit der Route auto/feiertage für das aktuelle Kalenderjahr erzeugt. Um weitere Unternehmensspezifische Feiertage (z.B. 24.12. oder 31.12.) mit in die Liste der Feiertage aufzunehmen, müssen diese manuell erstellt werden.

INSERT INTO "s_feiertage"
  ("datum", "name", "arbeitszeit_equivalent", "wiederholen")
VALUES ('2026-12-24', 'Helligabend', 50, 1);

Wenn wiederholen == 1 wird der Feiertag automatisch beim Aufruf von auto/feiertage mit ins nächste Jahr (am selben Datum) übernommen.

Das Feld arbeitszeit_equivalent arbeitszeit_equivalent ist die prozentuelle Zeit am Tag welche durch diesen Eintrag eingenommen wird. (dies gilt auch für die Buchungstypen)

Alle weiteren Tabellen sollte ausschließlich über die Weboberfläche oder per API befüllt werden.


Filestrukture


├── Backend (Webserver)
│   ├── doc (Templates for Document Creator --> typst used to create PDF Reports)
│   │   ├── static
│   │   └── templates
│   ├── endpoints (HTML Server endpoints (see main.go for Routes))
│   ├── helper (Helper classes)
│   │   ├── logs
│   │   └── paramParser
│   ├── logs (Log Folder, no sourcecode)
│   ├── migrations (DB Migrations Folder, no direct sourcecode)
│   ├── models (DB Models and their function)
│   ├── src (Tailwind src --> used to config css formatter)
│   ├── static (Webserver static, used to server static content, e.g. JS and CSS files)
│   │   └── css
│   └── templates (HTML Templates for every page written in templ and compiled to go)
├── Cron (all Cron Scripts)
├── DB (local Database mount Point)
│   └── initdb (initialization scripts for DB)
├── Docker (Docker Files, only docker-compose.yaml used)
├── docs
└── └── images
Description
No description provided
Readme GPL-3.0 3.3 MiB
2026-03-01 10:12:13 +01:00
Languages
Go 61.1%
CSS 15.8%
templ 13.3%
Shell 5.5%
PLpgSQL 1.8%
Other 2.5%