Projects

Foliation

Developer · foliation.dev

A self-hostable platform for deploying small web apps and sharing them like a Google Doc. Every app gets sign-in, a Postgres database, file storage, and preview deploys out of the box, so there's no auth or infrastructure code to write.

Foliation apps list with status, health, owner, and access columns
Apps dashboard
Deployments list with a live build log split into stages
Deployments & build logs
App observability page with health signals and traffic charts
Observability
App dependencies: managed database, buckets, volume, and brokered connectors
Managed data & connectors

What I built

I built the entire platform. Apps sit behind an edge proxy that handles sign-in via Google SSO or email OTP and hands each app a signed identity token, so apps don't need any auth code of their own. They reach databases and outside APIs through a broker, so secrets never live in the app. Deploys come from the fol CLI or a GitHub push, and every pull request gets its own preview deployment. Each app gets a Postgres database and file storage, and idle apps sleep until the next request wakes them. I also built the React dashboard, an MCP server for AI agents, and TypeScript and Python SDKs. In fact, the site you're viewing right now is deployed via Foliation!

GoPostgreSQLDockerReactTypeScriptAWS (ECS, KMS, S3)TerraformCloudflare

Jungle

Executive Director (formerly Tech Team Director), LA Hacks · apply.lahacks.com

LA Hacks' in-house hackathon platform, covering the full hacker lifecycle in one app: applications, grading, acceptance decisions, RSVPs, travel reimbursement, Apple/Google Wallet tickets, and event check-in. I'm the primary author, with over half of all commits.

Application statistics yield tab with projected check-ins by segment
Yield projections
Acceptance decision plan with expected RSVPs and check-ins and 95% confidence intervals
Decision planner
Hacker lookup search results with decision, RSVP, and travel status
Hacker lookup
Grading leaderboard of reviewers by applications reviewed
Grading leaderboard

What I built

My biggest piece is the acceptance decision engine and yield prediction model. Organizers build a plan from applicant pools, see how many people are projected to RSVP and check in (with 95% prediction intervals fit on past cohorts), and then release decisions right away or on a schedule. I also built the application form, which autosaves as applicants type and prefills answers from previous years. Beyond that, I built the grading and review workflow, event check-in with a mobile QR scanner, Apple and Google Wallet tickets, and travel reimbursement with PayPal payouts. On the platform side, I moved the API to Drizzle ORM and added rate limiting, load shedding when the database is overloaded, and CI that tests against a real Postgres database.

Next.jsReactTypeScriptSupabasePostgreSQLDrizzle ORMVercel

Tether

Solo project · source code

Run coding agents on your own machines and drive them from any browser or phone. Sessions keep running when you close the tab and stay in sync across devices, with one interface over Claude Code, Codex, opencode, Kiro, pi, and Antigravity.

Tether home dashboard with running and finished sessions
Live home dashboard
Agent session transcript with tool calls and diffs
Session transcript
Per-session changes diff view
Changes view
Model picker with a per-session fallback order across providers
Fallback chain

What I built

A runner on each machine connects out to a small relay server and wraps six different agent tools behind one session and transcript format. A safety guard decides which agent actions run on their own and which need approval, using rules plus a model for unclear cases. All agents share one memory store, and when a model hits its usage limit the session falls back to the next model in a chain or hands off to a different tool with the conversation and git state carried over. Every turn is checkpointed in git with a diff view, and it installs on a phone as an app with push notifications. Tether is also deployed via Foliation.

TypeScriptBunReactWebSocketsClaude Agent SDKMCP