Så bygger du en tidsredovisningsapp: timers, tidrapporter och rapporter
En tidsredovisningsapp registrerar vem som arbetat med vad, hur länge och om tiden kan faktureras. För att bygga en behöver du kunder och projekt att registrera tid mot, en timer som överlever att webbläsarfliken stängs, ett sätt att lägga till och rätta poster för hand, ett veckoblad och rapporter som omvandlar råa poster till summor. Ett AI-verktyg för appbyggande kan ta fram en fungerande första version från en tydlig prompt. Besluten som spelar roll handlar om regler: avrundning, vem som får ändra vad, när en vecka låses och vad som är fakturerbart.
Bestäm vad tiden ska användas till
Samma app ser olika ut beroende på syftet bakom den:
- Debitering av kunder. Timmar per kund, en taxa per person eller projekt och en ren export för fakturor. Noggrannhet och en granskningsbar historik är viktigast.
- Lön för timanställda. Instämpling och utstämpling, raster, övertidsregler och chefens godkännande. Lokala arbetsrättsliga regler gäller, så kontrollera vilka register du är skyldig att föra.
- Att förstå var tiden tar vägen. Personlig eller teamöversikt, uppskattningar mot utfall. Hastigheten vid registrering är viktigare än godkännandeflöden.
Välj ett som huvudsyfte för första versionen. En frilansares debiteringsverktyg och en skiftklocka för ett lager delar en timer och väldigt lite annat.
Vad appen behöver
Data
| Tabell | Viktiga fält |
|---|---|
| Kunder | Namn, standardtimtaxa, aktiv ja/nej |
| Projekt | Kund, namn, budget i timmar (valfritt), fakturerbart som standard ja/nej |
| Uppgifter eller kategorier | Projekt, namn (design, möten, support), valfritt i början |
| Tidsposter | Person, projekt, uppgift, starttid, sluttid, varaktighet, anteckning, fakturerbar ja/nej, status (utkast, inskickad, godkänd), fakturerad ja/nej |
| Personer | Namn, e-post, roll, kostnadstaxa eller debiteringstaxa |
Lagra start- och sluttid på varje post och härled varaktigheten från dem. Poster som skrivs in som ”2h 15min” utan tider kan bara lagra varaktigheten, men behåll ett datum.
Sidor
- Timer och idag: en stor start/stopp-knapp, en projektväljare och dagens poster under den.
- Veckovy: ett rutnät med projekt i sidled och dagar i kolumner, där folk skriver in timmar direkt. Många föredrar detta framför timers.
- Rapporter: timmar per kund, projekt och person för ett datumintervall, med uppdelning på fakturerbar och icke-fakturerbar tid, samt CSV-export.
- Admin: hantera kunder, projekt, personer och taxor.
Behörigheter
Skriv ner vem som får göra vad innan du bygger:
- Personer ser och redigerar sina egna poster.
- Chefer ser sitt teams poster och godkänner veckor.
- Bara administratörer ändrar taxor, och helst är det bara administratörer som överhuvudtaget ser dem.
- Ingen redigerar en post när den godkänts eller fakturerats, om inte en administratör öppnar den igen.
Den sista regeln är det som gör rapporterna pålitliga. Vår guide om att lägga till inloggning i din app täcker inloggningsdelen, och rollbaserad åtkomstkontroll täcker rollerna.
Beslut och avvägningar
Timer, manuell inmatning eller båda
Timers är korrekta när folk kommer ihåg att starta dem, vilket inte alltid sker. Manuell inmatning är snabb för folk som fyller i sin vecka på fredagen. De flesta team behöver båda, och ett sätt att redigera en timerpost i efterhand. Om du bara bygger en sak, bygg veckorutnätet; det är enklare och täcker fallet att man glömde starta timern.
Var den löpande timern lagras
En timer som räknar i webbläsaren förlorar allt när fliken stängs. Spara starttiden i databasen när någon trycker på start, och visa förfluten tid genom att subtrahera den från nu. Timern fortsätter då att gå över omladdningar, laptops och mobiler. Bestäm om en person kan ha två timers igång samtidigt. Oftast är svaret nej: att starta en ny stoppar den gamla.
Avrundning
Vanliga regler är att avrunda varje post uppåt till närmaste 6, 15 eller 30 minuter. Behåll exakta tider i databasen och tillämpa avrundning bara i rapporter och fakturor. Visa båda talen i rapporter så att ingen blir överraskad.
Låsning och godkännanden
Utan lås kan förra månadens debiterade timmar ändras efter att fakturan skickats. En enkel modell: folk skickar in en vecka, en chef godkänner den och godkända poster blir skrivskyddade. Om du fakturerar från appen, markera poster som fakturerade så att de inte kan debiteras två gånger.
Tidszoner och midnatt
Lagra tider i UTC och visa dem i personens tidszon. Bestäm vilken dag en post som går från 23:00 till 01:00 hör till. Det vanliga svaret är dagen den startade.
En första prompt som fungerar
Bygg en tidsredovisningsapp för en designstudio med sex personer. Data: kunder (namn, timtaxa), projekt (kund, namn, budgetTimmar) och tidsposter (person, projekt, start, slut, anteckning, fakturerbar ja/nej, status utkast/inskickad/godkänd). Sidor: en Idag-sida med en start/stopp-timer och projektväljare som sparar starttiden i databasen så att timern överlever en omladdning; en Vecka-sida med projekt som rader och måndag till söndag som kolumner, där folk kan skriva in timmar direkt; en Rapporter-sida som visar timmar per kund, projekt och person för ett datumintervall, uppdelat på fakturerbart och icke-fakturerbart, med CSV-export; och en Admin-sida för kunder, projekt och personer. Endast en timer kan vara igång per person. Godkända poster kan inte redigeras. Lagra tider i UTC och visa dem i användarens tidszon. Ren, snabb och tangentbordsvänlig design.
Den namnger tabellerna, sidorna, timerbeteendet och låsregeln, det som en AI annars skulle gissa.
Byggsteg
- Projekt och manuella poster först. Kunder, projekt, ett formulär för att lägga till en post och en lista. Kontrollera att summorna stämmer.
- Timer. Start, stopp, en löpande timer per person, sparad starttid. Testa genom att starta en timer, stänga fliken och öppna den igen.
- Veckorutnät. Att skriva timmar i en cell skapar eller uppdaterar en post.
- Inloggning och roller. Lägg till dem innan riktiga personer använder appen, så att ingen av misstag ser taxor eller andras poster.
- Skicka in och godkänn. Veckoinlämning, chefsgodkännande, skrivskyddat efter godkännande.
- Rapporter och export. Datumintervall, gruppering, uppdelning på fakturerbart, CSV.
- Taxor och fakturakopplingar om du fakturerar kunder. Håll skapandet av fakturor i ett separat steg eller en separat app; se så bygger du en faktureringsapp.
- Testa kantfallen. En post över midnatt, en vecka med sommar-/vintertid, två timers startade från två enheter, redigering av en godkänd post.
Vanliga misstag
- Att räkna tid bara i webbläsaren. Det fungerar i demon och tappar timmar i verklig användning.
- Att avrunda lagrade värden. Du kan aldrig få tillbaka den exakta tiden.
- Inget lås på godkända veckor. Rapporterna slutar stämma med fakturorna.
- Alla ser allas taxor. Dölj taxor efter roll från dag ett.
- För många obligatoriska fält. Om det tar mer än några sekunder att registrera tid slutar folk, och datan blir fiktion. Gör uppgift och anteckning valfria i början.
- Att bygga en fullständig projekthanterare inuti tidsredovisningen. Håll projekten som enkla etiketter. Om du behöver uppgifter, tavlor och deadlines är det ett projekthanteringsverktyg, ett separat bygge.
När ett färdigt verktyg är bättre
Om ditt team behöver en timer, en veckovy och rapporter gör dedikerade tidsredovisningsprodukter redan detta bra. De kommer också med saker som tar riktigt arbete att bygga: skrivbords- och mobilappar, upptäckt av overksamhet, integrationer med kalender och andra verktyg samt påminnelser om att fylla i tidrapporter. För timlön är ett verktyg byggt för det säkrare när det gäller raster, övertid och journalföring än en första version av en egen app.
Bygg själv när dina regler inte passar, när du vill koppla timmar till data du redan för (uppdrag, arbetsorder, retainers, fakturor), när prissättning per användare för ett stort team blir dyr eller när tidsredovisning är en del av ett större internt verktyg. Vår guide om att bygga kontra köpa programvara går igenom avvägningen, och om dina timmar i dag ligger i ett delat kalkylblad, se så gör du ett kalkylblad till en app.
Bygga den med Mythex
På Mythex beskriver du tidsredovisningen i chatten och agenten bygger den i en live-förhandsvisning. Den lägger till en dedikerad Postgres-databas när poster behöver sparas, och du kan be om det direkt eller skriva /database. Användningsfallet för interna verktyg i dokumentationen föreslår att man väljer ett besvärligt steg för första versionen, vilket passar här: börja med poster och veckorutnätet, lägg sedan till timers och godkännanden.
Inloggning för ditt team är något du lägger till med ditt eget autentiseringsupplägg (recept för att lägga till inloggning). Mythex-konton är för dem som bygger, inte för dem som använder din app. När kärnflödet fungerar kan /test låta agenten klicka igenom förhandsvisningen (starta en timer, lägga till en post, köra en rapport) och rapportera vad som går sönder. För en visuell startpunkt, bläddra bland app-mallarna.
Frågor
Vilka funktioner behöver en tidsredovisningsapp?
En lista över kunder och projekt, en start/stopp-timer, ett sätt att lägga till eller rätta poster för hand, en veckovy för tidrapporten och en rapport över timmar per projekt och person. Godkännanden, debiteringstaxor och exporter kommer därefter.
Hur förhindrar jag att en timer tappar tid när webbläsaren stängs?
Spara starttiden i databasen i samma stund som timern startar, och beräkna den löpande varaktigheten utifrån den sparade tiden. Då går inget förlorat när du stänger fliken, laddar om eller byter enhet.
Ska tid avrundas?
Lagra de exakta start- och sluttiderna och tillämpa avrundning bara i rapporter och fakturor. Då kan du ändra avrundningsregeln senare utan att skriva om historiken.
Är det värt att bygga en egen tidsredovisning?
Oftast bara om dina regler är ovanliga eller du vill koppla timmarna till annan data du redan har, till exempel uppdrag, kunder eller fakturor. För enkla timers och rapporter är ett färdigt verktyg billigare och snabbare.