Plan:
    Hardware:
        Raspberry Pi 3/4
        Smartcard reader + Mifare DESFire
        Nuki Smart Lock Go
        ESP32 + Nuki hub
    Models
        User (Interacts with api)
            ID int
            Name str
            Email str
            Password str (hashed)
            IsAdmin bool
        Group (Interacts with physical access system)
            ID int
            Name str
            Cards List[Card]
            Accessauths List[AccessAuthorization]
        Card
            ID int
            UUID str
            GroupID int
        AccessAuthorization
            Name str
            IsActive bool
            Timeslots list[Timeslot]
        Timeslot
            Name str
            WeekDay int
            Starttime str(HH:MM)
            Duration int (min)
        
        Door
            Name str
            IsLocked bool
            IsClosed bool
        
    API Specification
        - See http://127.0.0.1:8000/openapi.json or swagger ui

    Workflow:
        Erstelle gruppe
        Erstelle AA mit Timeslot
        Registriere karte -> gruppe
    
    CRUD
        create(post)
        read(get)[all items]
        read(get)[single item]
        update(put/patch)
        delete(delete)

    zeitplan
        Hier bin ich nicht sicher, ich denke an cron style für wiederholende dinge aber das kann nur zeitpunkte und keine blöcke.
        Villeicht ne liste von cron zeiten [ "0 16 * * 2" "0 18 * * 2" ](Wäre dienstag 16-18 uhr) - Ist aber warscheinlich schwer zu parsen
        Oder startzeit + länge in minuten [ "0 16 "* * 2" "120" ]
        Ganz simpel ["wochentag(1-7)" "Startzeit" "Endzeit"]
        Was ist mit "aller 2 wochen" oder "3. Sonntag im monat"