Projects

What I've been building

Small devices, printed and soldered on my desk, and web apps for the people around me.

2026 · Printed · soldered · flashed

AB98

A pocket music player shaped like a cassette Walkman

Plays music from a micro SD card through a headphone jack, with a little cassette on screen whose reels turn while a song plays. When you want new music it joins your Wi-Fi, or starts its own hotspot, and serves a web page styled as the same Walkman to manage the card.

  • MP3, AAC, FLAC and WAV, a folder per tape
  • Playlists and smart lists, on the device and the web
  • Copies albums and artists from a Navidrome server
  • Sleeps after five minutes; the play key wakes it
  • English, Spanish, Vietnamese and Japanese
ESP32-S3PCM5102A DACSvelteKitFreeCADPLA
LiPo 503035 · 530 mAh3.7 VPCM5102A‹‹›‖››≡JRGAB98
  66.2 × 47.2 × 19 mm closed. The lid screws on from the sides: four M2 countersunk screws through the left and right walls into heat-set inserts. Amber lines are hand-soldered: I2S to the DAC, SPI to the card, the supply switch, and the four keys.

2026 · Printed · soldered · flashed

Máy Anh Cũ

A tiny film camera with a web darkroom

A camera, and a film emulator, built around a thumb-sized ESP32-S3 with an OV2640 sensor. Load a roll of a film stock, shoot frame by frame through a live viewfinder, then browse and download the rolls from a page the camera serves itself.

  • Film stocks that tune the sensor before every shot
  • Live viewfinder with a grid on a 1.8" screen
  • Rolls saved to micro SD, frame by frame
  • Flash LED and a real shutter button
  • Battery gauge, radio off until you need it
XIAO ESP32-S3 SenseOV2640ST7735MAX17048SvelteKit
1.8 TFT · ST7735 · 128×160MAX17048EEMB 6034493.7 V · 1100 mAhANH Ø
  88 × 52 × 24.8 mm, two printed shells held by four screwed posts. Amber lines are hand-soldered: eight to the screen, three to the buttons, four to the gauge, the flash through its driver. Red is the cell and its pass-through to the XIAO.

2026 · Printed · soldered · flashed

inkbridge

An always-on Home Assistant launcher on e-ink

Two mechanical keys and a 2.13" e-paper screen with a grid of icon buttons, each one a Home Assistant script. Press one and it runs. Everything is configured from a web page the device serves, and it naps in light sleep between presses for weeks on a charge.

  • Icon grid of scripts, set up from the web
  • Saved Wi-Fi networks tried in order
  • Light sleep, instant wake on either key
  • Lucide icons rasterised to 1-bit for the panel
  • Two Cherry MX switches, sub-second feedback
XIAO ESP32-S3e-Paper 2.13"Cherry MXHome AssistantSvelteKit
EEMB 6034493.7 V · 1100 mAhA BASleepinkbridgeBA
  94 × 45 mm, one row on the floor (battery, XIAO, switches) with only the e-paper panel stacked above. Amber lines are hand-soldered: eight to the panel, three to the switches; the cell feeds the XIAO’s BAT pads.

2026 · Web app · self-hosted AI

Trip

A family trip planner everyone edits together

One shared page per trip where plans, lists, photos and documents live under their day, edited live by the whole family. A budget splits expenses across currencies, an assistant turns a brainstorm or a booking into events, and the whole trip prints as a PDF that also works offline.

Self-hosted AI. Every AI feature runs on a small Qwen 3.5 model on my own server (Ollama behind Open WebUI). Bookings, receipts and plans never leave the house.

  • Live co-editing with presence and comments
  • Expenses with shares, settlements and currency rates
  • Local AI: organise notes, read bookings and receipts
  • Trip PDF and offline reading
SvelteKitSvelte 5SQLiteDrizzleYjsOllama

2026 · Web app · self-hosted AI

Generations

A family tree you can walk in any direction

A genealogy app that loads a person's whole family neighbourhood at once, ancestors, descendants, partners and siblings, and lets you keep walking from any relative without reloading. Writers edit with care: precise genealogical dates, a full audit trail with restore, and GEDCOM in and out.

Self-hosted AI. The family chat runs on a local model (Ollama behind Open WebUI) reading the tree through MCP, so living relatives stay in the house.

  • Navigable graph from any person
  • Approximate and ranged genealogical dates
  • Audit log with one-click restore
  • GEDCOM 5.5.1 and 7.0 import and export
  • Ask about the family in a chat, through an MCP server
SvelteKitSQLiteDrizzleGEDCOMMCPOllama

2026 · Web app · self-hosted AI

Revelado

A darkroom that develops photos with AI

Upload a photo, pick a film stock or describe the change you want, and an image-editing model develops it. Paint a mask to edit only part of the frame, compare before and after with a slider, and step back through every version.

Self-hosted AI. Photos are developed by Qwen-Image-Edit in ComfyUI on my own GPU. No photo is sent to a cloud service.

  • Film presets: Portra 400, Tri-X, CineStill 800T, Velvia 50 and more
  • Brush masks to edit only part of the image
  • Before and after compare slider
  • Version history for every edit
SvelteKitComfyUIQwen-Image-EditDocker

2026 · Web app

E-ink Card

A business card for an e-ink reader

Design a minimal business card for Xteink e-readers, preview it exactly as the e-ink panel will show it, and send it straight to the device over the local network, where it becomes the sleep screen. Everything renders in the browser; nothing leaves your phone except the upload to your own reader.

  • Pixel-exact preview for the X3 and X4 family
  • Optional QR code for a link of your choice
  • Finds a CrossPoint reader on the network and sends it
  • No accounts, no server-side data
SvelteKitCanvasBMP encoderCrossPoint

© JRG Tools - Jorge 2013 - 2026