Work

Things I've built

Indie iOS apps, Neovim plugins, and developer tools — some still shipping, some open-sourced, all things I use myself.

  1. Ledvo

    Live · Free

    Free local-first accounting book that runs in the browser

    SolidJSTypeScriptWebAssemblyZigOPFS

    Free browser accounting app that stores one book per browser profile, uses a real double-entry engine, rejects unbalanced postings, blocks closed periods, and exports/imports portable JSON without signup or tracking.

    • One local book per browser profile; no account, no backend, no analytics tracking
    • Double-entry journal flow with multi-line entries and balance checks
    • Period lifecycle controls for open, soft-close, close, reopen, and lock
    • Trial balance, income statement, balance sheet, general ledger, aging, and equity-change views
    • JSON export and import for user-controlled backups
    • Embedded WebAssembly accounting engine
  2. Namna

    Live on the App Store · ₱99 one-time

    Private financial planning app for Filipinos on iPhone

    React NativeExpoTypeScriptSQLite

    Private, local-first iPhone app that estimates when your current money and future monthly contributions may be enough for the life you want. Compare What If changes, add MP2/PERA/RTBs/SSS/GSIS manually, and keep everything on device.

    • Current plan estimate built around take-home pay and Money Today
    • Presets for MP2, PERA, PSE, RTBs, SSS, GSIS, and more
    • What If changes for tuition, repairs, family support, and savings shifts
    • Automatic local snapshots and progress history on the same phone
    • Excel workbook export for records or sharing only — not restore
    • English and Filipino throughout
    • All data stays on the device — SQLite, no backend
  3. obsidian-cli.nvim

    Open source

    Thin Neovim wrapper over the official Obsidian CLI

    LuaNeovimObsidian CLIPlenary

    Drives the live Obsidian app from inside Neovim instead of reimplementing the vault format in Lua. ~2,000 LOC, 44 commands, 122 plenary tests, and real Obsidian search, backlinks, templates, and Bases via IPC.

    • Wraps the official obsidian CLI instead of a 4-5k LOC Lua reimplementation
    • Real Obsidian search index, backlinks, templates, and Bases via IPC
    • 122 plenary tests across 12 spec files with CI integration
    • blink.cmp wiki link completion and Snacks picker integration
    • Plugin manager that installs Obsidian community plugins from Neovim
  4. sajj

    Live

    AI workflow analyzer with research-backed criteria and exportable build specs

    React 19ViteVercel ServerlessSupabaseGemini 2.0 Flash

    Describe any business process — sajj decomposes it into steps, scores each against four boolean criteria (structured, deterministic, low-risk, no authority), and generates a full build spec you can paste into Claude Code or Cursor. Free, no signup, feeds graduate research on AI-human workflow boundaries at AIM.

    • Four-criteria assessment model (green / yellow / red tiers derive directly from the booleans)
    • Build Spec exporter generates a full context-engineering prompt for Claude Code or Cursor
    • 208 workflow suggestions across 24 industries, 10-language UI
    • 72 Playwright end-to-end tests covering landing, analysis, feedback, corrections
    • Correction feedback loop feeds a Supabase research dataset on LLM decomposition accuracy
  5. citruszest-ghostty.nvim

    Open source

    Dark Neovim colorscheme inspired by Citruszest and Ghostty terminal colors

    LuaNeovimTreesitterLSP

    Vibrant citrus accents on a true-dark ground. Treesitter and LSP semantic highlights, plugin support for Telescope, Snacks, Lazy, Which-key, Noice, GitSigns, Mini, and IndentBlankline. Terminal colors exported so your shell, editor, and terminal all agree.

    • Single palette shared between Neovim and Ghostty
    • Mint green (#00cc7a), cyan (#48d1cc), sky blue (#00bfff), warm orange (#ff8c00) citrus accents
    • Treesitter + LSP semantic token coverage
    • Terminal colors exported for shell + editor consistency
  6. dev-session-manager

    Open source

    Automate tmux session creation

    BashtmuxYAMLHomebrew

    Eliminates repetitive terminal setup with pre-configured tmux sessions from YAML configs. One command creates your entire development environment.

    • Published as Homebrew tap
    • Declarative YAML configurations
    • Idempotent session management
    • Zero-friction context switching
  7. pyworks.nvim

    Open source

    Zero-config Python notebooks in Neovim

    LuaPythonNeovim APIJupyter

    Eliminates setup friction for Python development in terminal. Auto-creates venvs, detects missing packages, renders matplotlib plots inline.

    • Auto venv creation and package detection
    • Inline matplotlib plots via Kitty protocol
    • 10-100x faster installs with uv
    • Jupytext integration for .ipynb files