David Chong

Building in public

Everything I'm
building.

A running collection of the things I ship — small, useful, and out in the open. Web apps, open-source tools, and the occasional experiment. Most started as an itch I wanted to scratch.

48Projects
26Live
26Open source
43Technologies

P1 Registration Planner

A Google-maps inspired free tool for Singapore parents navigating Primary 1 school registration.

Next.jsTypeScriptReact LeafletFramer MotionAnthropic SDK

The Chronicle

An OSRS-inspired productivity dashboard — journals and quest logs for real-life goals.

Next.jsTailwindElectronExpressmacOS

ToolVault

Free, privacy-first browser tools — convert and compress images, merge PDFs, generate QR codes and more, 100% client-side with zero uploads.

Next.jsTypeScriptTailwind CSS

HDB Floor Planner

AI-powered 2D floor-plan editor — upload a floor plan and Claude vision traces the walls, rooms, doors and windows into editable vectors, then drag to-scale furniture over it.

Next.jsTypeScriptKonvaAnthropic SDKSupabase

SkillRank

A daily leaderboard of the most popular Claude Code & AI-agent skills, scored from GitHub, npm and community signals and re-ranked every 24 hours.

Next.jsTypeScriptTailwind CSSVitest

AlgoViz

Learn data structures, algorithms and system design by watching them animate — 32 interactive visualizers for interview prep.

Next.jsTypeScriptFramer Motion

Is This AI Slop?

Paste a URL and get a 0–100 forensic score of how AI-generated or cookie-cutter a website looks.

Next.jsTypeScriptFramer Motion

Photomind MCP

Local-first MCP server for intelligent macOS Photos.app management — semantic search via CLIP, duplicate detection, and quality scoring.

PythonMCPCLIP

IPPT Calculator

Singapore IPPT scoring calculator — computes your 2.4 km run, sit-ups, and push-ups scores with real-time results.

Next.jsTypeScript

One Click PDF

Share any PDF via a URL with a simple click

Next.jsTypeScript

Number Rush

A fast-paced number game challenging your mental arithmetic speed.

Vanilla js

Paw Patrol Educational Game

Your toddler's favourite pup as an educational game.

Next.jsTypescriptVite

agents-md-generator

Generate an AGENTS.md for any public GitHub repo using Claude AI — gives AI coding agents instant project context.

Next.jsTypeScriptClaude AI

SG Retirement Planner

Singapore's most comprehensive retirement planner, including CPF

Next.jsTypeScript

install-prompt

Turn any public GitHub repo into an AI-ready installation prompt. Works with Claude, ChatGPT, Gemini, and more.

Next.jsTypeScript

miles-wallet

Track bank points and loyalty miles in one place — localStorage-based, zero backend.

ReactTypeScript

godaddy-mcp

GoDaddy DNS MCP server — manage DNS records via natural language through AI assistants.

PythonMCP

mcp-eval

CI-embeddable eval harness for MCP-native agentic workflows — tool-call graph correctness and regression tracking.

PythonMCP

sir-reminds-a-lot-v2

Portable Telegram bot for credit card spend tracking and due-date reminders. SQLite-backed, Docker-deployable, zero external services.

PythonTelegramDockerSQLite

a2a-inspector

A Postman for the Agent2Agent (A2A) protocol — validate Agent Cards (spec v0.2.5) and run live tasks against any A2A agent.

Next.jsTypeScript

injection-testbench

A test-bench for prompt-injection attacks and defenses — runs an attack corpus against a live Claude model, grades attack-success-rate per category, and ships a dual-LLM quarantined-data defense.

Next.jsTypeScriptClaude AI

career-copilot

Agentic resume-tailoring and gap-analysis tool built on LangGraph, with RAG over pgvector and LangSmith observability.

PythonLangGraphFastAPISupabase

Job Hunt Command Center

A calm, Singapore-localised job-application tracker — Kanban board, a Today view, and stats.

Next.jsTypeScriptSupabase

DevMind AI

An AI-native engineering advisor built on Claude Opus.

Next.jsTypeScriptClaude AI

OSRS Hours to Max

Calculates how many hours stand between you and a maxed Old School RuneScape account.

Next.jsTypeScript

Democratizing Claude

A blog and course on getting the most out of Claude Code as an engineer.

Next.jsTypeScript

AgentReady

Scores any GitHub repo for AI-agent readiness (0–10) with an embeddable SVG badge.

Next.jsTypeScript

Claude's Brain

A local dashboard that visualises which files Claude Code reads — green if present, red if missing.

Next.jsTypeScript

Telegram Claude Agent

A personal Claude Code agent on your phone, via Telegram and the Claude Agent SDK.

PythonClaude Agent SDK

NoDoze

A minimalist macOS menu-bar app — one toggle keeps your laptop awake while agents run.

SwiftmacOS

Jiak Simi Ah

A Singapore food decider that settles the 'what to eat' debate in one tap.

Next.jsGoogle Places

BabyBites

An installable PWA that randomizes age-appropriate meals for your baby and toddler — from first purées at 6 months onward, with auto grocery lists.

Next.jsTypeScriptPWATailwind CSS

Little Plates

The family food journal — log what you cooked for the kids each day: dish, ingredients, a photo, and whether each kid gave it a YUM.

Next.jsTypeScriptSupabase

Interview Deck

An offline PWA to revise for technical interviews — system-design topics and LeetCode patterns with spaced-repetition flashcards.

ReactTypeScriptVitePWA

Timesync

A Calendly-style scheduling tool wired to Google Calendar — share a booking link or embed the widget, with Google Meet links auto-created.

Next.jsTypeScriptGoogle CalendarOAuth

Proof of Work

An interactive atlas of everything I've shipped — dozens of projects rendered on a zoomable canvas, scraped straight from my repos.

ReactTypeScriptFramer MotionVite

Agent Task Board

A local-first Kanban board for the tasks you delegate to AI coding agents — drag-and-drop cards, MCP-native, with review and Telegram hooks.

Next.jsTypeScriptdnd-kitMCP

RiskForge

A production-grade, durable multi-agent portfolio-risk monitoring system — Temporal-orchestrated agents that survive restarts mid-analysis.

PythonTemporalFastAPIClaude AI

codebrain

A local-first, Obsidian-style graph of your ~/code folder — visualize which repos exist and how they connect.

ReactViteD3Node.js

nlb-library-mcp

An MCP server for Singapore's National Library Board catalogue — ask your AI assistant to find books and check which branches have them.

TypeScriptMCPNode.js

VoiceKeys

An on-device voice-to-text keyboard for iPhone — Whisper-powered dictation with no cloud, no network, no data leaving your phone.

SwiftSwiftUICoreMLWhisperKit

ctxbudget

Audit the token cost of everything your AI coding agent auto-loads on every turn (CLAUDE.md, AGENTS.md, rules) — and trim the bloat.

Node.jsCLITypeScript

questlog

A zero-dependency CLI that scans a folder of git repos and flags which need attention — uncommitted changes, unpushed commits, stale branches.

Node.jsCLI

portcull

A fast, zero-dependency CLI for the daily 'port already in use' annoyance — list and kill the process holding your port in one command.

Node.jsCLI

footprint

Turn each day's git commits and Claude Code token spend into a shareable proof-of-work image, generated straight from your local repos.

Node.jsTypeScriptSatoriCLI

agentmeter

See what your AI coding agent actually costs — a zero-dependency CLI that reports token spend and efficiency across your Claude Code sessions.

Node.jsCLI

agentwatch

A live perch over your Claude Code agents — a zero-dependency terminal dashboard that shows what each running agent is doing right now.

Node.jsCLITUI

tt-ig-downloader

An ergonomic CLI to download TikTok and Instagram videos — single, batch, or a whole profile — built on top of yt-dlp.

Pythonyt-dlpCLI

How I build

A few things I believe

1

Small and shipped beats big and someday

Most of these took a weekend or less. The constraint is the point — finish it, deploy it, move on. Momentum compounds in a way that perfect plans never do.

2

Build for one real person

Almost every project here scratches an actual itch — mine, my kid's, or a friend's. A single real user beats an imaginary market every time.

3

Building in public keeps me honest

Shipping in the open, with live links anyone can poke at, is a forcing function. It's harder to fool yourself when the work is right there.