Plan:
    Hardware:
        Raspberry Pi 3/4
        Smartcard reader + Mifare DESFire
        Nuki Smart Lock Go
        ESP32 + Nuki hub
    Models
        User
            ID int
            Name str
            Email str
            Password str (hashed)
            IsAdmin bool
        Card
            ID int
            UUID str
            UserID int
        AccessAuthorization
            Name str
            CardID list[Card]
            IsActive bool
            Timeslot list[Timeslot]
        Door
            Name str
            IsLocked bool
            IsClosed bool
        Timeslot
            Name str
            WeekDay int
            Starttime str(HH:MM)
            Duration int (min)

    API Specification
        /door
            Current status
            GET
            With header: access token
            
            /door/unlock
                Unlocks the door
                POST
                With header: access token (all)
                restricted by schedule
            /door/lock
                Locks the door
                POST
                With header: access token (all)
                not restricted by schedule

        /user
            List users
            GET
            With header: access token (all)

        /user
            Create users
            POST
            With header: access token (admin)
        
            /user/{name}
                Get user details
                GET
                With header: access token (admin)
            /user/{name}
                Delete user
                DELETE                              #Didnt even know this was a http method 
                With header: access token (admin)
            /user/{name}
                change user details
                PATCH
                With header: access token (admin)

        USER Parameters
            {
                "name": $name
                "role": user or admin
                "password": $password       #dont send in answers
                "schedule": siehe zeitplan
            }

        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"