Portfolio
Projects and artifacts from real sessions. No vaporware — everything listed has at least one working commit.
Projects

Household Inventory Brain
Local Tool · Nov 1, 2024Local searchable inventory system for tracking household items by room and category. Runs on a Raspberry Pi at home.
SQLite FTS5 for full-text search across ~800 items. HTMX handles search UI without a JavaScript framework. Phone camera barcode scanning via a lightweight JS library. Accessible from any device on the home LAN.

Daily Briefing Agent
Automation · Oct 15, 2024Scheduled Python script that aggregates weather, calendar events, and system stats — sends a Telegram message every morning.
APScheduler handles cron-like timing. Runs as a systemd service on Linux — restarts on reboot without any manual intervention. Telegram Bot API for delivery. Took about 40 minutes to get the first message working end-to-end.
no screenshot yet
LAN Recipe Manager
Web App · Sep 20, 2024Recipe storage and search app shared on the home network. Paused at v0 — the search needed work and other builds took priority.
Node.js + SQLite + vanilla JS. Basic CRUD for recipes with a simple search. The LAN sharing worked fine using 0.0.0.0 binding. Paused because the search UX wasn't good enough to use regularly — FTS5 is the fix but I haven't circled back.
Artifacts
8 artifacts total — screenshots, snippets, notes, and demos from real sessions.
Screenshots

Inventory search: live filtering as you type
The search bar in the Household Inventory app. SQLite FTS5 powers it — results appear below 200ms on a Raspberry Pi 4 with ~800 items.

Telegram bot notification from Python agent
Daily briefing message arriving in Telegram from the local automation agent. Took about 40 minutes to set up end-to-end including bot token and chat ID.

App running on phone via LAN share
The recipe manager loading on a phone browser via the local IP. No tunnels, no ngrok, no cloud — just 0.0.0.0 binding and the LAN IP.

Day 1 checklist: what actually gets done
My completed Day 1 checklist from the inventory build. The goal was a working SQLite schema, one CRUD endpoint, and a form that submits. All three done by hour 6.
Demos

Automation agent log dashboard
Simple Jinja2 + Tailwind dashboard showing task history, last run time, and success/failure status. Built in about 3 hours on Day 2 of the agent build.
Code Snippets
FastAPI + SQLite CRUD boilerplate
A minimal FastAPI app with SQLite via aiosqlite. Includes a working /items endpoint with GET, POST, PATCH, DELETE. No ORM — raw SQL with parameter binding.
One-command Python dev environment setup
The Makefile target I use to set up a Python venv, install deps, and copy .env.example to .env.local in a single `make setup`. No more "it works on my machine" moments.
Build Notes
Why SQLite FTS5 is enough for local search
I spent an afternoon convinced I needed Elasticsearch for full-text search. Then I tried FTS5. It handles 10,000+ rows instantly, is included in Python's stdlib, and requires zero configuration. Stop sleeping on it.
Build log is live. Projects are stored in /content/projects.json and artifacts in /content/artifacts.json. No CMS, no database — just JSON files and a git push.