DEV3 Technologies home

DEV3 Hourglen – Time Tracking and Billing SaaS Laravel Script with Offline Timer PWA, Approvals and Invoices

A self-hosted time tracking and billing app on Laravel 12 and Filament 4: a one-click timer with an installable offline PWA, week grid, approvals, rates and budgets, invoices from approved time with pay links, client view and reports. Web installer and demo data included. No mobile apps.
by DEV3 TechnologiesVerified Author(0) 0 sales 0 viewsUpdated 11 Nov 2026

Video tour. Pick a section below to browse 103 screenshots in 9 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Mobile web1:22

Hourglen is a time tracking and billing app that freelancers, studios and consultancies use to track hours against clients and projects, approve weekly timesheets, watch budgets and turn approved time into invoices. It is built by DEV3 Technologies on Laravel 12 and Filament 4. You run it as the operator: you sell plans to workspaces, and each workspace tracks its own clients, projects and people.

What it does

  • One-click timer. A header clock, a keyboard shortcut (S), one running timer per person enforced by the database, an idle prompt (keep, discard or split) and a notice for timers left running.
  • Installable and offline. A one-screen timer app (PWA) that opens without a connection, queues starts and stops on the device and replays them through a repeatable sync. When an offline interval overlaps another entry, both are kept and shown to the person: nothing is merged silently.
  • Week grid, calendar day and Hour Ribbon. Hours as 1:30 or 1.5 by project and task, entries as blocks on a day, and a 24-hour band per person coloured by project.
  • Approvals. Submit a week, approve per project, reject with a comment, and lock approved entries. Managers decide only the projects they manage.
  • Rates and budgets. Task, person and project rates, cost rates with history, rates snapshotted on every entry, and hours or money budgets with alerts. Members never see rates.
  • Invoices from time. Pick a client and period, group by project, task, person or entry, round on invoice lines only, add approved expenses with markup and fixed-fee milestones, send a pay link, take partial payments and refunds. Retainers bill monthly or quarterly with hours included and overage.
  • Client view. A private read-only link with approved hours and invoices, no rates, costs or people's names, and a pay button.
  • Reports. Time by project, person, client, task or day, utilisation, profitability and budget burn, with saved views, CSV and PDF.
  • Operator panel and API. Workspaces with meters, plans, subscriptions, platform invoices, client payments, payouts, pending refunds, an outbox, an audit log and audited view-only support sessions. A scoped REST API with an OpenAPI document and signed webhooks.

Quality checks

The release passed seven gates on the final code: Larastan level 6 with 0 errors, Pest, a build well inside the page budget, migrations and the full demo seed on MySQL 8 and SQLite, a headless smoke test with happy paths for the timer, the week, approvals, invoicing, the pay link, the client view and the offline timer, race checks on MySQL (parallel timer starts, repeated sync, invoice creation, approval against edit, triple payment capture, retainer runs and plan limits), the installer driven from the zip, and a secret scan. The home page scores 98 for performance and 100 for accessibility on mobile.

What you should know before buying

  • Web app plus an installable PWA. There are no native desktop or mobile apps in this version; a Flutter timer app is a planned add-on. Offline entries sync when the connection is back.
  • No screenshots, no keystroke logging, no app tracking, by design. It is not payroll, leave or HR software.
  • You are the merchant of record. Client payments go to your gateway (simulated by default) and you pay each workspace out from its takings wallet. Workspaces cannot connect their own payment account in this version.
  • Invoices are simple: time, expense and fixed lines, tax per line, simulated pay.
  • Simulated drivers. Mail, payments, push and recurring charges have working simulated drivers; real ones need your own accounts. A real driver without configuration answers driver_not_configured.
  • Calendar: ICS export only. Each client has one currency and reports do not convert currencies.
  • Use MySQL or MariaDB for a live site; the concurrency checks were run on MySQL 8. A cron entry every minute is required; no queue worker is needed.

How it is different

It is timer-first: the one-click timer, idle handling, rounding on invoices, rates by project, person and task, budgets, approvals and invoices made from approved time. It has no HR, no CRM, no Kanban board and no client file approvals.

Included

Source code, the web installer, a buyer guide, demo data with fictional workspaces, clients and people (a brand consultancy, a development shop, a solo designer and more, with a year of tracked time), a cron entry for the scheduler, and six months of support.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Hourglen passed before release.

The engineering behind Hourglen: one running timer per person enforced by the database, an offline queue that replays safely, rates snapshotted per entry and invoices whose lines and wallets reconcile.

The problem it solves

A time tracker looks like a start button until two devices start a timer at once, an offline phone replays its queue twice, a rate changes under an approved week or two people invoice the same hour. Each must end with consistent hours and money, and members must never see rates.

Architecture and approach

Hourglen is a Laravel 12 application with Filament 4 operator and workspace panels, a hand-built timer and an installable PWA. A unique key and a row lock guarantee one running entry per person. The offline queue sends repeatable events keyed by a client UUID, and overlaps are kept and flagged, never merged. Each entry stores the rates it was tracked at, approvals lock entries, and an entry can belong to at most one live invoice line. Money is integer minor units with half-up rounding, and hourglen:check proves entries, rollups, invoices and wallets agree.

Quality gates and results

The release passed seven gates, including a headless smoke test with an offline timer run and race checks on MySQL for timer starts, sync replay, invoice creation, approval against edit, payment capture, retainer runs and plan limits. The reconciliation command passes on the demo data: ten workspaces and a year of tracked time.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Data MySQL 8, SQLite
Frontend Tailwind CSS 4, Vite
Quality Pest, Larastan level 6, Playwright

Inside the build

Start the clock: The big timer over a tidy desk, with the week grid sliding up underneath. Start the clock — The big timer over a tidy desk, with the week grid sliding up underneath.

Hero in dark mode: The same page in the dark scheme with the brighter moss accent. Hero in dark mode — The same page in the dark scheme with the brighter moss accent.

Guides & articles

Practical guides and engineering write-ups for DEV3 Hourglen.

Time tracking software for small agencies: 6 things to check before you pick one

Last updated
Time tracking software for small agencies: 6 things to check before you pick one: DEV3 Hourglen

People do not hate tracking time, they hate tracking it twice. Here are six things to check before you pick software to track and bill hours, with DEV3 Hourglen as the worked example.

Hourglen home page: a big timer over a tidy desk with the week grid underneath

1. Does the timer survive real life?

A timer must keep running when the tab closes and must never let one person run two clocks. Hourglen enforces one running timer per person in the database, asks what to do with idle time, and installs as an app that works offline.

The installable timer on a phone

2. What happens when you are offline?

Starts and stops made offline should queue and replay safely. In Hourglen the queue is repeatable, and an overlap with another entry is shown to you instead of being merged behind your back.

The sync queue in the timer app

3. Can managers approve without chasing?

Submit a week, approve per project, reject with a comment, lock what is approved.

The manager approval queue

4. Do rates and budgets protect the margin?

Rates by task, person or project, a snapshot on every entry, and hours or money budgets with alerts. Team members should never see rates.

The budget gauge on a project

5. Do invoices come from approved time?

Pick a client and period, group the lines, round on the invoice only, and send a pay link. Voiding an invoice releases its time.

Invoice preview built from approved time

6. Are the limits honest?

Hourglen is a web app and an installable PWA: no native apps, no screenshot or keystroke monitoring, not payroll, and the operator is the merchant of record. Say that plainly to your buyers.

Video: The Hourglen tour

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

Questions about this product (0)

Answers from the DEV3 team and the community.

Ask a question

No questions yet.

Wondering about setup, licensing or customisation? Ask, and the DEV3 team will help.

More from this author

View all

Related in Web Scripts & Software

View all