Back to Blog

I Built a Time Tracking App for Myself — It's Open for Beta

Jeff Knowles Jr
3
FreelanceToolsSide ProjectFirebaseNext.js
I Built a Time Tracking App for Myself — It's Open for Beta

Published: March 7, 2026 · Updated August 26, 2026
Author: Jeff Knowles Jr — JKJR Digital Development


I built Pii.link for myself: one place for clients, projects, time tracking, and expenses. The tools it replaces were subscriptions I reconciled every month; this is something I own outright, and it saves me money over the long term.

I also built it in the open. Pii.link was my first real chance to contribute to open source — the code is on GitHub for anyone to use or learn from — and I followed it with this site: the portfolio and blog you're reading are open source too.

I've been using Pii.link for my own work for over a year now. It's not perfect, but it's useful, and I'm opening up a few free beta spots.


What it does

  • Floating timer — persists across page navigation, syncs across devices in real time via Firestore. Start it on your laptop, check your phone, it's still running.
  • Clients and projects — create, edit, archive. Projects link to clients, with billing type (hourly, retainer, fixed) and per-client rates.
  • Timesheets — manual entry, weekly view, and a basic analytics dashboard. Billable hours, revenue, utilization rate, 14-day chart.
  • Invoicing — line items, tax, status tracking (draft → sent → paid). PDF export is still on the list.
  • Expenses — log and categorize against clients and projects. Monthly totals feed into your profit margin view.
  • Data isolation — each account gets its own Firestore path. No shared tables, no analytics, no ads.

What isn't done yet

  • No invoice PDF export (the invoicing workflow is built, download is missing)
  • No native mobile app (PWA works on mobile, React Native prototype is shelved)

Tech notes (for developers)

Next.js 15 static export on Firebase Hosting. Firestore for data and real-time sync. Material UI v7. Multi-tenant architecture where tenantId = userId — all data lives under tenants/{userId}/... and Firestore rules enforce isolation at the database level.

No servers. No devops overhead.


Beta spots

There are a few free spots open. No waitlist, accounts provision instantly.

Sign up at pii.link/auth/register

If you're a freelancer looking to consolidate tools, or a developer curious about the stack, I'd genuinely appreciate feedback. Find me on LinkedIn or through jkjrdev.com.


Built by JKJR Digital Development

Share this post