-
Karakeep Desktop
Native macOS client for the Karakeep self-hosted bookmark manager with offline-first sync and Shortcuts integration.
Swift · SwiftUI · SwiftData
Offline-first sync via Swift Actors · App Groups shared container for Share Extension
-
Field Technician
Native iOS file manager for photographers — connects SD cards via USB-C and syncs new photos to a chosen folder with conflict resolution.
Swift 6 · SwiftUI · iOS 18
Polling-based volume detection with set diffing for SD card mount events · actor-isolated async sync engine with per-file confirmation mode
-
Garden Planner
Web app for hobbyist gardeners to draw garden layouts, track plants, and manage care schedules.
React · Express · PostgreSQL monorepo
@dnd-kit drag-and-drop grid with companion planting indicators · categorical color tokens per plant type
-
Pantry Manager
Grocery inventory tracker with a physics-based 2D canvas, recipe ingredient matching, and server sync.
React · Vite · Express · SQLite
Custom physics canvas engine with gravity and collision · recipe integration with NocoDB cache and X-ray connection view
-
Kitchen
Offline-first PWA for personal kitchen management — recipe queue, weekly meal planner, and auto-generated grocery lists synced to NocoDB.
React 19 · Zustand · Vite · Express · Docker
Optimistic sync queue with offline persistence and batch-flush recovery · Traefik reverse proxy with auto-TLS
-
Kitchen Auth
Cookie-based authentication gateway for Traefik-routed subdomains, replacing HTTP Basic Auth for iOS PWA compatibility.
Go 1.24 · SQLite · Docker
Traefik ForwardAuth with SHA-256 hashed session tokens · per-IP rate limiting and per-device revocation dashboard
-
Podscript
CLI tool that downloads podcast episodes, transcribes them locally, and provides full-text search across all transcripts.
Python CLI · SQLite
mlx-whisper for Apple Silicon transcription · SQLite FTS5 for search with timestamp linking
-
Podscript Feed Server
Containerized local server that generates RSS feeds from the podscript database so podcast apps can subscribe to downloaded episodes.
Python · FastAPI · Docker
Dynamic RSS 2.0 + iTunes namespace generation · host-to-container path translation for mounted volumes
-
Movies from Podcasts
Static site generator that extracts movies discussed in podcast episodes using Claude and builds a searchable movie grid with detail pages.
Python · Jinja2 · Static HTML
Claude API batch extraction of movie mentions from episodes · design system tokens (Simple tier)
-
MTA Transit Screen
Caching proxy that aggregates NYC subway and bus real-time data into clean JSON APIs.
Python · Flask
GTFS-Realtime & SIRI protocol translation · threaded background updater with TTL cache
-
Email-to-RSS
Self-hosted service that receives email over SMTP and exposes per-sender RSS feeds with cached images.
Node.js · Express · SQLite
SHA256 image caching to prevent link rot · dual HTML storage (original + rewritten URLs)
-
CSA Sign-Up Form
Multi-tier form system for Community Supported Agriculture membership registration with dynamic pricing and email verification.
HTML/JS · Node.js proxy · Google Apps Script
Three-domain architecture for CORS isolation · Google Sheets as database backend
-
MPO Extract
Extracts stereo image pairs from Fujifilm 3D camera MPO files with GIF animation and anaglyph output.
Rust CLI
Memory-mapped I/O for binary parsing · intelligent JPEG marker detection for thumbnails vs. full images
-
Sietsema Map
Interactive map for discovering NYC restaurants reviewed by food critic Robert Sietsema.
Static HTML/JS · Leaflet.js
Dual map + table view from shared data · color-coded cuisine markers
-
Recipe Viewer
Single-page browser for searching and filtering a large recipe dataset with tag-based navigation.
Static HTML/CSS/JS
Vanilla JS component architecture · client-side search across 1000+ recipes
-
Recipe Entry Form
Single-page form for submitting recipes to NocoDB with live markdown preview and tag management.
Node.js · Express · HTML/JS
Turndown.js HTML-to-Markdown conversion · NocoDB API integration
-
Ghost Theme
Content-focused personal blog theme for Ghost CMS with dark mode, year-based post archives, and design system token integration.
Handlebars · CSS · Ghost 5+
Flash-free dark mode via inline blocking script with localStorage/system preference hierarchy · Simple tier design tokens
-
Token-based design system with tiered reference cards, OKLCH color generation, compliance linting, and a component library.
Node.js · Style Dictionary · CSS/Markdown
OKLCH color preservation in transforms · five-tier architecture (CLI / Metal / Simple / Standard / Full) with automated linting tools
-
NocoDB Importer
Batch script that parses recipe data, extracts ingredients via local LLM, and syncs to NocoDB.
Node.js · Ollama · NocoDB
Local Ollama inference for zero-cost extraction · multi-select tag deduplication
-
Ingredient Scraper
Fetches recipes from NocoDB and extracts structured ingredient lists using local LLM inference.
Node.js · Ollama · NocoDB
Ollama llama3 for offline ingredient parsing · tiktoken for token accounting
-
MPO Joiner
Extracts stereo pairs from MPO files and joins them side-by-side for VR viewers.
Ruby · ImageMagick
exiftool EXIF handling · superseded by Rust rewrite