Sådan bygger du en tidsregistreringsapp: timere, timesedler og rapporter
En tidsregistreringsapp registrerer, hvem der arbejdede på hvad, hvor længe, og om tiden kan faktureres. For at bygge en har du brug for kunder og projekter at registrere mod, en timer, der overlever en lukket browserfane, en måde at tilføje og rette poster manuelt på, en ugentlig timeseddel og rapporter, der omsætter rå poster til summer. En AI-appbygger kan lave en fungerende første version ud fra én klar prompt. De beslutninger, der betyder noget, handler om regler: afrunding, hvem der må redigere hvad, hvornår en uge låses, og hvad der tæller som fakturerbart.
Beslut, hvad tiden skal bruges til
Den samme app ser forskellig ud alt efter formålet:
- Fakturering af kunder. Timer pr. kunde, en sats pr. person eller projekt og en ren eksport til fakturaer. Nøjagtighed og et revisionsspor betyder mest.
- Lønning af timelønnede medarbejdere. Stempling ind og ud, pauser, overtidsregler og en leders godkendelse. Lokale arbejdsmarkedsregler gælder, så tjek, hvilke optegnelser du er forpligtet til at gemme.
- At forstå, hvor tiden går. Personlig eller holdbaseret indsigt, skøn mod faktisk forbrug. Hastighed ved indtastning betyder mere end godkendelsesforløb.
Vælg ét som hovedformål for version ét. En freelancers faktureringsværktøj og et vagtur til et lager deler en timer og meget lidt andet.
Hvad appen har brug for
Data
| Tabel | Vigtige felter |
|---|---|
| Kunder | Navn, standardtimesats, aktiv ja/nej |
| Projekter | Kunde, navn, budget i timer (valgfrit), fakturerbart som standard ja/nej |
| Opgaver eller kategorier | Projekt, navn (design, møder, support) — valgfrit i starten |
| Tidsposter | Person, projekt, opgave, starttidspunkt, sluttidspunkt, varighed, note, fakturerbar ja/nej, status (kladde, indsendt, godkendt), faktureret ja/nej |
| Personer | Navn, e-mail, rolle, kostpris eller salgspris |
Gem start- og sluttidspunktet på hver post, og udled varigheden af dem. Poster, der indtastes som „2t 15m“ uden tidspunkter, kan kun gemme varigheden, men skal stadig have en dato.
Sider
- Timer og i dag: en stor start/stop-knap, en projektvælger og dagens poster nedenunder.
- Ugevisning: et gitter med projekter ned ad siden og dage på tværs, hvor folk skriver timer direkte ind. Mange foretrækker det frem for timere.
- Rapporter: timer pr. kunde, projekt og person for en datoperiode, med opdeling i fakturerbar og ikke-fakturerbar tid og en CSV-eksport.
- Admin: administrer kunder, projekter, personer og satser.
Rettigheder
Skriv ned, hvem der må gøre hvad, før du bygger:
- Folk ser og redigerer deres egne poster.
- Ledere ser deres teams poster og godkender uger.
- Kun administratorer ændrer satser, og helst er det kun administratorer, der overhovedet ser dem.
- Ingen redigerer en post, når den er godkendt eller faktureret, medmindre en administrator åbner den igen.
Den sidste regel er det, der gør rapporterne troværdige. Vores guide om at tilføje login til din app dækker log ind-delen, og rollebaseret adgangskontrol dækker rollerne.
Beslutninger og afvejninger
Timer, manuel indtastning eller begge dele
Timere er nøjagtige, når folk husker at starte dem, og det sker ikke altid. Manuel indtastning er hurtig for folk, der udfylder deres uge om fredagen. De fleste teams har brug for begge dele og en måde at redigere en timerpost bagefter. Hvis du kun bygger én, så byg ugegitteret; det er enklere og dækker tilfældet „glemte at starte“.
Hvor den kørende timer lever
En timer, der tæller i browseren, mister alt, når fanen lukkes. Gem starttidspunktet i databasen, når nogen trykker start, og vis den forløbne tid ved at trække det fra nu. Timeren fortsætter så på tværs af genindlæsninger, laptops og telefoner. Beslut, om én person kan køre to timere på én gang. Som regel er svaret nej: at starte en ny stopper den gamle.
Afrunding
Almindelige regler er at afrunde hver post op til nærmeste 6, 15 eller 30 minutter. Behold præcise tidspunkter i databasen, og anvend kun afrunding i rapporter og fakturaer. Vis begge tal i rapporterne, så ingen bliver overraskede.
Låsning og godkendelser
Uden en lås kan sidste måneds faktureret tid ændre sig, efter fakturaen er sendt. En enkel model: folk indsender en uge, en leder godkender den, og godkendte poster bliver skrivebeskyttede. Hvis du fakturerer fra appen, så markér poster som faktureret, så de ikke kan faktureres to gange.
Tidszoner og midnat
Gem tidspunkter i UTC, og vis dem i personens tidszone. Beslut, hvilken dag en post der løber fra 23:00 til 01:00 hører til. Det sædvanlige svar er den dag, den startede.
En første prompt, der virker
Byg en tidsregistreringsapp til et designstudie med seks personer. Data: kunder (navn, timesats), projekter (kunde, navn, budgettimer) og tidsposter (person, projekt, start, slut, note, fakturerbar ja/nej, status kladde/indsendt/godkendt). Sider: en I dag-side med en start/stop-timer og projektvælger, der gemmer starttidspunktet i databasen, så timeren overlever en genindlæsning; en Uge-side med projekter som rækker og mandag til søndag som kolonner, hvor folk kan skrive timer direkte; en Rapporter-side, der viser timer pr. kunde, projekt og person for en datoperiode, opdelt i fakturerbar og ikke-fakturerbar tid, med CSV-eksport; og en Admin-side for kunder, projekter og personer. Kun én timer kan køre pr. person. Godkendte poster kan ikke redigeres. Gem tidspunkter i UTC, og vis dem i brugerens tidszone. Rent, hurtigt design, der er nemt at betjene med tastaturet.
Den navngiver tabellerne, siderne, timeradfærden og låsereglen, som en AI ellers ville gætte.
Byggetrin
- Projekter og manuelle poster først. Kunder, projekter, en formular til at tilføje en post og en liste. Sørg for, at summerne stemmer.
- Timer. Start, stop, én kørende timer pr. person, gemt starttidspunkt. Test ved at starte en timer, lukke fanen og åbne den igen.
- Ugegitter. At skrive timer i en celle opretter eller opdaterer en post.
- Login og roller. Tilføj dem, før rigtige personer bruger den, så ingen ved en fejl ser satser eller andres poster.
- Indsend og godkend. Ugentlig indsendelse, lederens godkendelse, skrivebeskyttet efter godkendelse.
- Rapporter og eksport. Datoperiode, gruppering, opdeling i fakturerbar tid, CSV.
- Satser og faktureringskroge, hvis du fakturerer kunder. Behold oprettelse af fakturaer i et separat trin eller en separat app; se sådan bygger du en faktureringsapp.
- Test kanttilfældene. En post over midnat, en uge med sommertid/vintertid, to timere startet fra to enheder, redigering af en godkendt post.
Almindelige fejl
- At tælle tid kun i browseren. Det virker i demoen og mister timer i brug.
- At afrunde gemte værdier. Du kan aldrig få det præcise tidspunkt tilbage.
- Ingen lås på godkendte uger. Rapporterne stemmer ikke længere med fakturaerne.
- Alle ser alles satser. Skjul satser efter rolle fra første dag.
- For mange obligatoriske felter. Hvis det tager mere end et par sekunder at registrere tid, holder folk op med det, og data bliver fiktion. Gør opgave og note valgfri i starten.
- At bygge en fuld projektstyring ind i registreringen. Hold projekter som simple etiketter. Hvis du har brug for opgaver, boards og deadlines, er det et projektstyringsværktøj, et separat projekt.
Hvornår et færdigt værktøj er det bedre valg
Hvis dit team har brug for en timer, en ugevisning og rapporter, gør dedikerede tidsregistreringsprodukter allerede det godt. De kommer også med ting, der kræver reelt arbejde at bygge: desktop- og telefonapps, registrering af inaktivitet, integrationer med kalender og andre værktøjer og påmindelser om at udfylde timesedler. Til timelønsløn håndterer et værktøj bygget til formålet pauser, overtid og optegnelser mere sikkert end en første version af en skræddersyet app.
Byg selv, når dine regler ikke passer, når du vil have timer koblet til data, du allerede har (jobs, arbejdsordrer, aftaler om retainer, fakturaer), når pris pr. plads over et stort team løber op, eller når tidsregistrering er en del af et større internt værktøj. Vores guide om at bygge vs. købe software gennemgår afvejningen, og hvis dine timer i dag ligger i et delt regneark, så se sådan gør du et regneark til en app.
Bygget med Mythex
På Mythex beskriver du registreringsværktøjet i chatten, og agenten bygger det i en live-forhåndsvisning. Den tilføjer en dedikeret Postgres-database, når poster skal gemmes, og du kan bede om det direkte eller skrive /database. Use case'et for interne værktøjer i dokumentationen foreslår at vælge ét smertefuldt trin til version ét, hvilket passer her: start med poster og ugegitteret, og tilføj derefter timere og godkendelser.
Login til dit team tilføjer du selv med din egen godkendelsesmetode (opskriften til login). Mythex-konti er til de personer, der bygger, ikke de personer, der bruger din app. Når kernefunktionen virker, kan /test få agenten til at klikke sig igennem forhåndsvisningen (start en timer, tilføj en post, kør en rapport) og melde, hvad der går i stykker. Som visuelt udgangspunkt kan du se app-skabelonerne.
Spørgsmål
Hvilke funktioner har en tidsregistreringsapp brug for?
En liste over kunder og projekter, en start/stop-timer, en måde at tilføje eller rette poster manuelt, en ugentlig timeseddelvisning og en rapport over timer pr. projekt og person. Godkendelser, fakturerbare satser og eksport kommer bagefter.
Hvordan forhindrer jeg, at en timer mister tid, når browseren lukkes?
Gem starttidspunktet i databasen med det samme, timeren starter, og beregn den løbende varighed ud fra det gemte tidspunkt. Så mister du intet, hvis du lukker fanen, genindlæser siden eller skifter enhed.
Skal tid afrundes?
Gem de præcise start- og sluttidspunkter, og anvend kun afrunding i rapporter og fakturaer. Så kan du senere ændre afrundingsreglen uden at omskrive historikken.
Er det umagen værd at bygge min egen tidsregistrering?
Normalt kun, hvis dine regler er usædvanlige, eller du vil koble timer til andre data, du allerede har, fx opgaver, kunder eller fakturaer. Til almindelige timere og rapporter er et færdigt værktøj billigere og hurtigere.