Devlog
A development diary. What was built, why it was built, and the decisions that shaped it.
- Motivka
Hetzner VPS Production Deployment
Deployed Motivka to a Hetzner VPS with Docker Compose, Caddy reverse proxy with automatic TLS, and a CI/CD pipeline via GitHub Actions.
- Motivka
Two-Way Blog Status Sync
Built bidirectional sync between PocketBase blog posts and Substack, keeping draft/published status consistent across both platforms.
- Motivka
Experiments Page Design Refactor
Refactored the experiments section layout and card design for better visual consistency with the rest of the site.
- Motivka
Admin Light Mode Bleed Fix
Fixed admin panel tokens bleeding into public pages when colour mode switched, establishing the admin/public token namespace separation.
- Motivka
Storybook Full Coverage
Achieved complete Storybook coverage across all 107 UI components in 9 phases, covering atoms, forms, cards, chat, admin, content, widgets, visuals, and demos.
- Motivka
Design System Redesign
Comprehensive design system overhaul across 7 phases: token consolidation, brand colours, card system, missing atoms, form system, navigation, and cleanup. 46 tasks completed.
- Motivka
Experiments App Shell
Created a shared experiments layout with persistent header, contextual backlinks, and scoped cellophane background via a SvelteKit layout group.
- Motivka
Page Transitions and Element Reveal
Added View Transitions cross-fade navigation and a use:reveal Svelte action with IntersectionObserver for staggered element entrance animations across all public pages.
- Motivka
Experiments Agent Gallery
Flattened the experiments hierarchy into an agent-first gallery with a hero landing page, dedicated gallery page, and consolidated design agent Coming Soon page.
- Imouto
Imouto: Multi-Country AI Job Exposure Pipeline
Built the core Imouto pipeline: source-agnostic Python scorer with O*NET and OSCA/JSA data sources, Claude-powered task scoring, US-AU occupation matching, and a SvelteKit frontend.
- Imouto
Imouto: Solarpunk Glassmorphic Redesign
Redesigned the imouto frontend with the Alfons/motivka solarpunk glassmorphic design system — glass nav shell, glass-panel cards, and warm token palette.
- Imouto
Imouto: Motivka Embedding
Ported the imouto frontend into motivka's SvelteKit at /experiments/imouto with SSR data loading, Motif token alignment, and layout polish across 10 phases.
- Imouto
Imouto: Explorer Redesign
Redesigned the occupation explorer with industry filters, score bracket sections, sort controls, and a new card layout featuring large score numbers and accent borders.
- Imouto
Imouto: Explorer Card and Section Refresh
Restyled bracket section headings with accent underlines, replaced proportion bars with static dot strips on cards, and made occupation cards fully clickable.
- Imouto
Imouto: Local Model Scoring and Eval Framework
Built an eval framework to objectively compare local Ollama models against Anthropic baselines, with n=100 stratified eval sets, multi-model sweep, and Haiku-anchored quality thresholds.
- Imouto
Imouto: OpenRouter Council Scoring
Scored all 18,615 remaining US tasks using a 3-model OpenRouter council (gemma4:e4b + llama3.2 + mistral) with majority voting, achieving 79% Sonnet agreement at a fraction of the cost.
- Imouto
Imouto: AU Dataset Expansion
Expanded the Australian dataset from 20 hand-picked occupations to all 1,156 in the OSCA classification, with full AU-to-US matching via OpenRouter council.
- Encyclopedia Brown
Encyclopedia Brown: Plans Dashboard
Built a standalone SvelteKit dashboard that reads motivka's .plans/ directory and displays project status — roadmap, PRDs, tasks, bugs, decisions, and architecture.
- Encyclopedia Brown
Encyclopedia Brown: Cross-Project Aggregation
Extended the dashboard with cross-project aggregation — API endpoints per agent, combined PRD view with filtering and activity signals, and MCP tools for Claude queries.
- Encyclopedia Brown
Encyclopedia Brown: Dashboard Redesign
Rebuilt the dashboard with a kanban board for plans, timeline views for roadmap and decisions, data tables for PRDs/tasks/bugs, and a cross-project aggregate home page.
- Motivka
Subscriber Capture System
Added email subscriber capture via footer signup, contact form opt-in, and chat signup flow, with a PocketBase subscribers collection and admin management page.
- Motivka
Substack Chat Gate
Implemented a subscribe-before-chat gate on the homepage AI agent, requiring visitors to provide their email before engaging in conversation.
- Motivka
Fix: Cursor Not Following Text Across Chat Interface
Fixed the blinking underscore cursor across all chat input components so it follows typed text rather than staying fixed to the left, and unified the streaming cursor to use a thin underscore matching the brand style.
- Imouto
Explorer Card and Section Refresh
Restyled the explorer page bracket sections and occupation cards -- accent underlines replacing left borders, static dot strips replacing proportion bars, fully clickable cards, and compare links removed. Ported to motivka embed with visual parity confirmed.
- Motivka
Storybook Full Component Coverage
Achieved 100% Storybook coverage across all 107 UI components, organised into 9 domain-based phases with full variant stories and mocked dependencies.
- Motivka
Design System Cleanup
Resolved all open bugs and 32 ad-hoc tasks accumulated across six phases of the design system redesign, covering token cleanup, card deduplication, form accessibility, navigation hardening, and motif atom fixes.
- Motif
Motif Design Library
Built @motif/design as a standalone design library with CSS tokens, Svelte 5 atoms, and Storybook catalogue. Migrated motivka to consume it as its single source of truth.
- Imouto
Motivka Embed and UX Overhaul
Ported the imouto frontend into motivka as an embedded route, overhauled the explorer UX with default AU sorting and proportional task bars, built a dot strip chart for the detail page, and aligned everything to the Motif design system.
- Imouto
Dockerise Imouto for Local Server Deployment
Containerised the imouto SvelteKit frontend with a multi-stage Docker build (Bun builder plus Caddy static server) and wired it into a docker-compose setup accessible at localhost/imouto.
- Field Notes
Concept Capture: Building an On-Device Voice-to-Knowledge iOS App
Built a local-first iOS app that transforms voice recordings into structured knowledge using on-device transcription (SFSpeechRecognizer), automatic concept categorisation (NaturalLanguage embeddings), dynamic collections, and an active recall review feed. Six phases, 27 tasks, 17 bugs resolved, 192 tests. No backend required.
- Motivka
Planning Workflow Refactor
Restructured the global planning workflow to separate plan creation from task generation, migrated from .planning/ to .plans/, and removed legacy project-level planning skills.
- Motivka
Storybook Docker Integration
Integrated Storybook into the Docker Compose stack with Caddy HTTPS, admin sidebar CTA, and MCP server verification.
- Imouto
Ad-Hoc Cleanup Pass
Resolved 26 deferred code quality issues across the motivka embed and imouto standalone -- layout fixes, duplicate type consolidation, Zod validation on server loaders, colour token extraction, and tightened Python test assertions.
- Imouto
Caddy Routing Fix and Design System Preparation
Wired imouto into the Motivka Caddy reverse proxy so https://localhost/imouto resolves correctly, and prepared placeholder layout hooks for the upcoming Alfons design system integration.
- Imouto
Explorer Redesign
Redesigned the imouto explorer page with industry filtering, score bracket sections, a two-row filter toolbar, and a card layout featuring large score numbers with colour-coded accents -- all synced between standalone and motivka embed.
- Imouto
Solarpunk Glassmorphic Frontend Redesign
Replaced imouto's bespoke design tokens with the shared Alfons/motivka solarpunk glassmorphic design system -- glass nav shell, explorer hero section, and consistent glass-panel treatment across all components with a navy accent override.
- Motivka
Kinetic Cellophane Effect for Experiments
Ported a React prototype of iridescent floating SVG shapes into the Svelte 5 stack, adding a caustic background effect with mouse interactivity and an admin-only configuration panel to the experiments landing page.
- Motivka
Refactor Experiments Design Page
Refactored the experiments design page to match the blog page layout, replacing custom components with PageHeader, BlogFilterBar, and CardCompact from the design system.
- Motivka
Fix: Light Mode Colours Bleed into Admin Pages
Fixed a CSS token architecture bug where toggling light mode on the public site caused admin pages to inherit light colours, breaking the always-dark admin theme.
- Motivka
Fix: Local Reconciliation Overwrites Production Blog Statuses
Fixed a high-severity data loss bug where syncing blog posts to a local PocketBase instance would overwrite Obsidian frontmatter statuses, which then corrupted production on the next sync. Added a --local flag to disable reconciliation for development instances.
- Motivka
Substack Subscription in Chat Gate
Extended the chat signup gate to subscribe visitors to the Substack newsletter alongside creating a PocketBase subscriber record, using a non-blocking server-side POST so chat access is never delayed.
- Imouto
Iceberg App -- Multi-Country AI Job Exposure Pipeline and Frontend
Built a multi-country AI job exposure dataset pipeline (US via O*NET, AU via OSCA/JSA) with Claude-based task scoring and a static SvelteKit frontend featuring job explorer, task breakdown, and country comparison views.