tom_trgr cd00ce3f53
All checks were successful
Tests / Run Go Tests (push) Successful in 2m52s
Arbeitszeitmessung Deploy / Build Webserver (push) Successful in 3m5s
chore: docs
2026-03-01 13:20:23 +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
2026-03-01 13:20:23 +01: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
    • BOOKING_OUT_OF_BOUNDS Wenn true, werden Buchungen außerhalb des festgelegten Arbeitszeitraums auf den Arbeitszeitraum vor/nach verlegt. Wenn false, werden die Buchungen abgelehnt und ein Fehler wird zurückgemeldet.
    • BOOKING_FOR_UNKNOWN_USER Wenn true, können Anwesenheitseinträge mit CardUIDs, die keinem Nutzer zugeordnet sind durchgeführt werden.
  • 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%