INDEPENDENT PROJECTS · DESIGNED & BUILT BY ME

Ideas made
useful.

Outside my day job, I turn everyday problems into products. These are the tools I've designed and built myself—and the stories behind them.

01 / Sports academy management

Solo projectLiveReal paying users

CourtLK

Less admin. More coaching.

Academy management for sports coaches, with students, attendance, payments, and player progress in one place.

Visit product →
CourtLK homepage showing its academy dashboard for classes and attendance
Behind the buildProblem, solution & tech stack

The problem

Sports academies often manage registration, class attendance, payments, and player records across paper registers, spreadsheets, and message threads. That creates repetitive admin for coaches and makes it harder for players and parents to find reliable information.

The solution

CourtLK brings the everyday work of a sports academy into one clear system. Coaches can set up classes, share a registration link or QR code, record attendance and payments, and follow player progress, while players and parents get access to their own permitted records.

Capabilities

  • Academy setup with classes, timetables, and guided onboarding
  • Self-registration for players and parents through a link or QR code
  • Class registers, attendance history, and reporting
  • Payment records, practice matches, and player progress tracking
  • Player and parent portal with a digital student card
  • Verified contacts, controlled access, and daily backups

Tech stack

Next.js 16React 19TypeScriptTailwind CSS 4SupabaseVercel Edge ConfigResendVitest

02 / Property wealth tracker

Solo projectLive

Nidra

Your money works while you sleep

See how your property wealth grows over time, in the currencies that matter to you.

Visit product →
Nidra live property portfolio dashboard showing current value, earnings, and currency-adjusted growth
Behind the buildProblem, solution & tech stack

The problem

I built Nidra to solve a problem I had myself. While living in Singapore, I was investing heavily in property in Sri Lanka, but my savings balance didn’t reflect the wealth I was building. I wanted a clearer way to see how my property investments were growing over time—a challenge any property owner can face.

The solution

Nidra helps property owners see their estimated portfolio value, growth over time, and the impact of currency changes in one place. Growth estimates update continuously based on each property’s starting value and growth rate, while a weekly email summarizes how the portfolio has changed.

Capabilities

  • Live compounding valuation engine (per-second/day/year growth from an anchor value + rate)
  • Multi-currency portfolios with automatic FX-adjusted "real value" calculations
  • Weekly digest emails summarizing portfolio growth
  • No-signup demo mode for instant try-before-you-buy
  • PWA install support (iOS/Android home screen)

Tech stack

Next.js 16React 19TypeScriptTailwind CSSSupabaseRechartsResendVercel

Nidra on mobile

Nidra mobile home screen explaining live property wealth tracking
Nidra mobile form for adding a property with country, currency, and valuation details
Nidra mobile dashboard showing portfolio value, profits, and currency-adjusted growth

03 / Financial runway calculator

Solo projectLive

FakePip

A private runway calculator for people facing a PIP or layoff

Shows how long your money lasts, how that compares to your deadline, and what to do next.

Visit product →
FakePip homepage explaining its private PIP and layoff financial runway calculator
Behind the buildProblem, solution & tech stack

The problem

Being placed on a PIP is a financially stressful, high-stakes moment — often the first sign of an impending layoff. People need to quickly understand their financial runway (and, for visa holders, their legal runway), but doing that math under stress, or trusting a random web tool with sensitive salary and savings data, is hard.

The solution

FakePip is a free, no-signup calculator that walks users through a 7-step flow — country, visa status, take-home pay, savings, itemized expenses, PIP length/severance, dependents — and produces a results view with worst-case and realistic runway estimates, a 5-tier runway health meter, a visa-clock warning for work-visa holders, and a week-by-week action plan sized to their PIP timeline (with a PDF export and a clear not-legal-advice disclaimer). Everything runs client-side: no accounts, no database, no analytics, no server calls with user data — nothing is ever stored.

Tech stack

Next.js 14TypeScriptTailwind CSSVercel

Your runway and action plan

FakePip mobile results showing worst-case and realistic runway estimates
FakePip mobile runway health, burn rate, and essential expense breakdown
FakePip mobile comparison of the PIP clock and financial runway

04 / Agentic engineering workflow

Solo projectMVP done

Foreman

An AI Software Developer in Your Engineering Workflow

Turns a Jira requirement into tested code, a reviewed pull request, and synchronized project updates.

Foreman architecture diagram showing how its AI roles work together across Jira, GitHub, and Slack
Behind the buildProblem, solution & tech stack

The problem

Small backlog tickets (bug fixes, minor features) still require a human to read the ticket, write the code, test it, open a PR, get it reviewed, and update status everywhere. And before any of that, someone has to manually turn a product spec into a well-scoped set of tickets for design, dev, and QA — repetitive coordination on both ends of the pipeline.

The solution

Foreman is a set of AI roles that work inside your existing tools like real teammates. Assign it a Jira ticket and it writes the code, runs the real test suite, opens a pull request, gets it reviewed by a second AI role against your team's own written rules, and keeps Jira/Slack in sync. Or hand it a product spec, and a third AI role turns it straight into a Jira epic with tickets ready for the whole team to pick up.

Capabilities

  • Polls Jira for labeled tickets, respects blocking dependencies, and skips/resumes automatically
  • Writes code and tests with Claude, guided by per-service convention "skill" files
  • Self-corrects failing tests (up to 3 attempts) before giving up gracefully — never opens a broken PR
  • Auto-reviews every PR (its own or a human's) against versioned rule checklists, commenting inline
  • Posts progress to Slack and moves Jira tickets through In Progress → In Review → Done automatically
  • Turns a Confluence spec into a Jira epic plus role-based tickets — design, dev, QA/test automation, rollout — created directly in Jira and announced in Slack, with the breakdown itself editable per team
  • Live dashboard to watch execution logs, pause the agent, switch models, or have it "enrich" a vague ticket into a full spec before assigning
  • Takes human feedback via Jira comments and pushes fixes to the same PR

Tech stack

Node.jsTypeScriptClaude API (Sonnet)Next.jsSupabase (Postgres)JavaSpring BootJira APIGitHub APISlack API

See it in action

Watch demo →

05 / Fictional swipe game

Solo projectLive

Matchly

A just-for-fun, clearly fictional swipe-dating experience

A playful swipe-and-chat experience with fictional AI characters, no accounts, and no real people.

Visit product →
Matchly welcome screen explaining its fictional AI character experience
Behind the buildProblem, solution & tech stack

The problem

Dating apps are stressful and high-stakes — profiles are real people, matches carry social weight, and there's no room to just enjoy the feeling of the format without the pressure.

The solution

Matchly strips out everything real. Every profile is an AI character with a pre-written personality and a scripted five-date story arc — you get the swipe-and-chat experience as a game, with zero accounts, zero real people, and zero stakes.

Capabilities

  • 16 fully scripted characters, each with a branching 33–39 node dialogue graph spanning five escalating dates
  • Deliberately rare matches (~25% like-to-match rate, with a pity guarantee) for authentic swipe-app tension
  • Slow-burn pacing — timestamp-based “typing” delays that hold across refreshes, so a full arc plays out over 10+ minutes
  • Self-sustaining deck that recycles unmatched profiles so you never run out
  • Installable PWA with offline shell caching
  • No backend/accounts — all state lives in localStorage

Tech stack

Next.js 16React 19TypeScriptTailwind CSS 4Vercel AnalyticsDiceBear API

The Matchly experience

Matchly mobile onboarding screen welcoming the user
Matchly mobile swipe card showing a fictional character profile
Matchly mobile “It’s a Match!” screen after a mutual like

ALWAYS CURIOUS

Something here sparked an idea?

I'd love to hear what you're working on.

Let's talk