vCamp logo
HIRE
ME
Case study

LiteTime Tracker Pro
Time tracking for freelancers.

A lightweight Chrome extension that simplifies work-hour management and invoicing without a backend or cloud subscriptions.

App Demo
Role

UI/UX Designer & Frontend Developer

Type

Chrome Extension / Productivity Tool / Productivity interface

Stack

JavaScript (Vanilla ES6+), Manifest V3, CSS3, Chrome Storage API, Chart.js, jsPDF

Overview

About the project

LiteTime Tracker Pro was designed for the independent freelancer who needs a professional tool to track time and earnings without the complexity or cost of enterprise platforms like Toggl.

The extension lives in the browser, allowing users to track hours in real time, manage different hourly rates per project, and visualize productivity through interactive dashboards. Its Privacy-by-Design approach means no data ever leaves the user's machine.

The problem

Friction in administrative tasks

For many freelancers, time tracking is a chore that often gets neglected:

  • Tracking gets forgottenStarting and stopping a timer feels like extra work in the middle of a busy project.
  • Billing data is fragmentedHours, rates, projects, and earnings are often scattered across notes and spreadsheets.
  • Cloud tools add complexityMany solutions require accounts, subscriptions, or sending sensitive work data to a third party.
The solution

A high-performance productivity sidekick

I developed a Manifest V3 extension that streamlines the workflow from tracking to reporting. The clean, functional interface prioritizes speed and keeps the most important information close at hand.

Local storage makes the app nearly instantaneous, while a Manual Entry system keeps the freelancer's log accurate even when they forgot to start the timer.

Key features

  • Real-time trackingStart and stop work sessions directly from the browser extension.
  • Project-based hourly ratesManage different rates and connect entries to the right project.
  • Manual time entriesRecover forgotten sessions and keep records accurate.
  • Interactive productivity dashboardVisualize hours, earnings, and work patterns with Chart.js.
  • Invoice-ready reportingExport useful reports and branded PDFs with jsPDF.
  • Privacy by designAll data stays on the user's machine and works offline.
  • Bilingual interfaceA lightweight custom i18n engine translates the interface and exported PDF headers.
Engineering

Technical highlights

The MV3 background persistence

To solve Chrome's popup closure problem, I implemented messaging between the UI and the background.js service worker. The start time is preserved in storage, enabling millisecond-precise tracking without an active frontend.

No-backend CRUD architecture

A centralized storage.js module manages all data locally through chrome.storage.local. The result is a zero-latency experience that works entirely offline.

// Centralized storage logic for high reliability const DB = { async addEntry(entry) { const data = await this.getData(); entry.id = this.uid(); data.entries.push(entry); await this.saveData('entries', data.entries); } };

Instead of introducing a complex dependency, I built a lightweight translation engine that maps UI components to a dictionary. This provides a performant bilingual experience and translates the headers of exported PDF reports.

Result

Impact

LiteTime Tracker Pro transforms time tracking from a burden into a seamless part of the browser experience. It gives freelancers the data they need to justify invoices and the visual insights needed to optimize their work-life balance.

The tool demonstrates that professional-grade utility does not require a backend, only smart local architecture and a focus on the user's core needs.

Takeaways

Skills demonstrated

  • Chrome Extension architecture
  • Manifest V3 service workers
  • Vanilla JavaScript ES6+
  • Chrome Storage API
  • Offline-first product design
  • Privacy-by-design architecture
  • Chart.js data visualization
  • jsPDF document generation
  • Custom i18n systems
  • Responsive productivity interfaces