Things I've built
Indie iOS apps, Neovim plugins, and developer tools — some still shipping, some open-sourced, all things I use myself.
-
Namna
App Store submission pendingPhilippine financial independence planner for iPhone
React NativeExpoTypeScriptSQLiteOffline-first planner that estimates when your savings and investments may support the life you want. Built around Philippine vehicles like MP2, PERA, RTBs, SSS, and GSIS. No accounts, no cloud sync, no tracking.
- Take-home-pay-first inputs (not gross salary)
- Presets for MP2, PERA, PSE, RTBs, SSS, GSIS, and more
- Future scenarios to model life changes without changing the current plan
- English and Filipino throughout
- All data stays on the device — SQLite, no backend
-
obsidian-cli.nvim
Open sourceThin Neovim wrapper over the official Obsidian CLI
LuaNeovimObsidian CLIPlenaryDrives 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
-
sajj
LiveAI workflow analyzer with research-backed criteria and exportable build specs
React 19ViteVercel ServerlessSupabaseGemini 2.0 FlashDescribe 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
-
citruszest-ghostty.nvim
Open sourceDark Neovim colorscheme inspired by Citruszest and Ghostty terminal colors
LuaNeovimTreesitterLSPVibrant 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
-
dev-session-manager
Open sourceAutomate tmux session creation
BashtmuxYAMLHomebrewEliminates 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
-
pyworks.nvim
Open sourceZero-config Python notebooks in Neovim
LuaPythonNeovim APIJupyterEliminates 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