Pet projects

termwire

A CLI that opens a ready workspace per task: a tmux session with Neovim and OpenCode, optionally in its own git worktree and branch.

  • One command (`termwire up <name>`) creates or attaches a tmux session for a task.
  • Optional git worktree and branch per session, so parallel tasks never share a checkout.
  • JSONC layouts per user or per project; an OpenCode plugin tool opens files in the session's Neovim.
stack TypeScriptBuntmuxNeovimOpenCodeBiome

SpeakTales

repo private

An AI storytelling platform that writes personalized children's stories and narrates them with a distinct voice for every character.

  • Story generation from a short prompt, tailored to themes, characters, age and educational goals.
  • Automatic character extraction and voice casting, with speech synthesis on ElevenLabs.
  • Rails 8 web app with Phlex components and a native iOS app on Hotwire Native.
  • English, Russian and Spanish; containerized and deployed with Kamal.
stack Ruby on RailsRubyLLMElevenLabsHotwire NativePhlexSolid QueueKamal

Event Craft

A Node.js package for domain logic with CQRS, event sourcing and Railway Oriented Programming.

  • Commands validate input with zod and return events or errors as fp-ts Either values.
  • Aggregates rebuilt from events, with versioned events for event sourcing.
  • Example application and Vitest matchers for Either results.
stack TypeScriptfp-tszodVitest