Portfolio

Apps and projects I've built

follow.fast

Your app screens, turned into posts that post themselves

follow.fast logo: two white chevrons on a pink rounded square
Slideshows from real app screens
Publishes to 5 platforms
Approve in bulk or autopilot
Learns which formats work

follow.fast runs social media for apps. Paste an App Store link and it pulls in the name, icon, description and screenshots. Every day it drafts slideshow posts from the app's real screens and the push notifications the app really sends, rendered on a phone in the scene, and publishes them to TikTok, Instagram, Facebook, Threads and Bluesky. Approve the queue with one click, or switch on autopilot.

I built it because I ship apps and never had time to post about them. It has posted daily for four of my own apps since October 2026, across twelve slideshow formats: persona stories, notification stories, listicles, myth vs fact and more. Formats that beat the median get picked more often and the rest get retired. Any slide can be edited before it goes out, and the 4:5 feed and 9:16 TikTok versions update together. Currently in private beta.

follow.fast landing page: "Your app screens, turned into posts that post themselves", above a fan of real slideshow posts for BibleWise, Mockingjay and MyVisualRoutine

Built with

Next.js 16React 19TypeScriptPostgresDrizzle ORMpg-bossPlaywrightClaude AIStripeCloudflare R2

Platforms

WebSaaS

Puddlekin

A little less to remember.

Puddlekin app icon
Log feeds, sleep and diapers in a few taps
Share the log with every caregiver
Handover summary for whoever takes over
Free logging, no account needed
Puddlekin Today screen: a running sleep timer, Feed, Sleep and Diaper buttons with duckling illustrations, and the last feed, sleep and diaper

Puddlekin is a baby tracker built for the people taking turns. Feeds, naps, diapers, pumping, tummy time and notes go in with a few taps, timers keep running when the app is closed, and anything can be backdated. Today shows what's running and when the last feed, sleep and diaper happened, so nobody has to remember at 3 am.

All logging is free and stays on the phone, no account needed. Puddlekin Premium adds shared care: invite a partner, grandparent or nanny, approve every request, and see who did each feed. It also adds cloud restore, a 6, 12 or 24 hour Handover summary, and 7 and 30 day trends. It records care and never prescribes it: no ideal ranges, no "overdue", no predictions.

Built with

SwiftUISwift 6SwiftDataFirebaseCloud FirestoreCloud FunctionsSign in with AppleRevenueCat

Platforms

iOS

Gutrude

Was it the garlic? Your gut keeps the file.

Gutrude app icon
Log a poop in three taps
Blame a food in one tap
Keeps score on your suspects
On-device, no account
Gutrude App Store screenshot: 'Was it the garlic?' with the cranky Gutrude character and a sheet for picking the food you suspect

Gutrude is a poop tracker and trigger food log with a character: your gut, in a cardigan. Cranky, and she keeps the file. Log a poop in three taps, tap in meals and drinks, and when something sits badly, blame the food you suspect in one tap. Gutrude keeps score on your suspects and tells you honestly whether the numbers back you up.

Gutrude Plus also watches the foods you never blamed and shows a pattern only when your logs line up, with the real numbers. It's a tracker, not a doctor: no diagnosis, no advice, just a clean record to take to your doctor or dietitian. Everything is stored on the iPhone with SwiftData. No account, no camera, no ads, and no health data leaves the device.

Built with

SwiftUISwift 6SwiftDataWidgetKitApp IntentsFirebase AnalyticsRevenueCat

Platforms

iOS

Smia

Your company's Git & CI. Here in Europe.

Smia icon: a dwarf smith with crossed forge hammers
Dedicated instance per company
Hosted in the EU or Norway
Isolated microVM CI jobs
Backups you hold the key to
A repository on a Smia forge: file tree, commit messages and a green CI check on the latest commit

Smia (Norwegian for "the forge") is managed, private Git hosting and CI for European companies. Each company gets its own Forgejo instance on its own VM, hosted by European providers with the EU or Norway as the location, encrypted at rest, and priced per company rather than per seat. It started with a question I kept hearing in security questionnaires: where does our source code live, and who operates the platform? An EU region on a US platform answers the first half only.

The parts I build sit around an unmodified Forgejo: a Rust runner that boots a fresh Firecracker microVM for every CI job and destroys it afterwards, a Go control plane that provisions, backs up, restore-tests and offboards instances, and per-company backup keys so a customer's history opens with their key, not ours. Smia runs on Smia: its own source code and CI live on the forge it sells. Currently in the making and invite-only.

Built with

ForgejoGoRustFirecrackerKVMOpenTofuCaddyStripebunny.net

Platforms

Web

PadelIQ

Film a rally. Fix your game.

PadelIQ app icon
On-device computer vision
Positioning heatmaps
Numbers-backed verdicts
Drills for your weaknesses
PadelIQ results screen showing a court positioning heatmap, stats and a coaching verdict

PadelIQ turns the phone-against-the-glass footage padel players already record into coaching. Film one rally, and within a minute you get a positioning heatmap for every player, stats like time at net and how often the middle was left open, and a verdict with the top three things to fix — each one citing numbers from your own clip, never generic advice.

The entire computer vision pipeline — player detection with YOLOv8 on Core ML, court homography, tracking and statistics — runs on the iPhone. Footage never leaves the device; only the measured numbers are sent to an LLM to word the verdict like a coach would. Detected weaknesses map to a library of 38 drills, and a progress view tracks how the numbers move over time.

Built with

SwiftUICore MLYOLOv8VisionAVFoundationFirebase FunctionsClaude APIRevenueCatRemotion

Platforms

iOS

Plask

A private P&L for makers who run more than one product

Plask logo
Revenue, costs and profit per product
Weekly Focus cards
Money alerts and digests
MCP server for AI agents

Plask is one private profit-and-loss view for every app and site you run. Revenue comes in from Stripe, RevenueCat, App Store Connect and Google Play, traffic from GA4, and ad spend from Apple Search Ads, Meta and Google Ads. Fixed costs come out, and you see revenue, costs and profit per product and for the whole portfolio.

Every Monday, up to three Focus cards point at the products that need you, each with the numbers behind it: revenue falling while traffic holds, a product that earns well but gets no attention, ads that cost more than they bring in. Markers on releases and campaigns answer "did it work?", and an MCP server lets Claude Code or Cursor read the P&L and log ad spend.

Plask portfolio view with sample data: revenue, ad spend, fixed costs and profit across six products, with three Focus cards for the products that need attention this week

Built with

Next.js 16React 19TypeScriptSupabaseDrizzle ORMClaude AIStripeRevenueCatGA4 Data APIMCP

Platforms

WebSaaS

APIDrift

API breaking change alerts & migration guides

APIDrift logo
25+ APIs monitored
AI-powered classification
Migration guides
Slack & email alerts
APIDrift dashboard showing monitored APIs and breaking change alerts

APIDrift automatically watches third-party API changelogs for breaking changes and alerts you before your integrations break. It scrapes changelogs daily, uses AI to classify changes by type and severity, and generates step-by-step migration guides.

Get multi-channel alerts via email digests, Slack notifications, and webhooks. Track API health scores across your dependencies, export deprecation deadlines to your calendar, and stay ahead of breaking changes from Stripe, GitHub, Twilio, AWS, and 25+ other APIs.

Built with

Next.js 16React 19TypeScriptSupabaseDrizzle ORMGoogle GeminiStripeTailwind CSS

Platforms

WebSaaS

Linetris

Daily line puzzle

Linetris app icon
Daily shared puzzle
Global leaderboards
Head-to-head challenges
Medal ranking system
Linetris gameplay showing Tetromino pieces on an 8x8 grid

Linetris is a daily puzzle game that combines Tetris-style block placement with Wordle's shared daily challenge format. Every day, all players receive the same puzzle — place Tetromino pieces onto an 8×8 grid to clear as many rows and columns as possible before running out of valid placements.

Compete on global leaderboards, earn medals from Bronze to Diamond based on your daily performance, and challenge friends with custom puzzle boards via shareable challenge codes. Strategic power-ups like Skip, Swap, and One Cell add depth to gameplay. Works fully offline with automatic score sync when reconnected.

Built with

SwiftUIFirebaseCloud FirestoreRevenueCat

Platforms

iOSiPad

Neimr

Find the perfect name together

Neimr app icon
Swipe to vote
Collaborative sessions
Smart matching
6 name categories
Neimr app showing swipe interface for name selection

Neimr helps people discover names they love through an intuitive Tinder-style swipe interface. Whether you're naming a baby, pet, business, or creative project, swipe right on names you like and left on ones you don't.

Create surveys and invite your partner, family, or friends to participate. The app shows which names everyone agreed on, making it easy to find the perfect name together. Features include super-likes for favorites, smart matching algorithms, and a demo mode to try before signing up.

Built with

FlutterRiverpodFirebaseRevenueCat

Platforms

iOS

Biblewise

Test your Biblical knowledge through fun trivia

Biblewise app icon
3 game modes
Daily challenges
20 adventure levels
Streak tracking
Biblewise app showing quiz interface

Biblewise is an engaging Bible trivia app that helps users deepen their Biblical knowledge through gamified learning. Answer questions across categories like Old Testament, New Testament, Characters, Miracles, and Parables while earning stars and maintaining streaks.

Features three game modes: Adventure Mode with 20 progressive levels, Daily Challenge for consistent practice, and Timed Mode for speed-based gameplay. Includes a hint system, detailed explanations with Bible references, and progress tracking.

Built with

SwiftUISwiftDataRevenueCatAdMobFirebase

Platforms

iOS

Mockingjay

Secure video recording with encrypted cloud backup

Mockingjay app icon
Real-time encrypted upload
AES-256-GCM encryption
Panic-start recording
Duress PIN protection
Mockingjay app showing secure recording interface

Mockingjay is an iOS app for secure, real-time video recording with encrypted cloud backup. Unlike traditional video apps that upload after recording, Mockingjay uploads encrypted chunks during recording—designed to preserve footage even if the device is confiscated or destroyed.

Features include Panic-Start for instant recording without password entry and a Duress PIN that wipes local keys while keeping cloud backups safe. All video is encrypted with AES-256-GCM and backed up to Google Drive in real-time.

Built with

SwiftUIAVFoundationCryptoKitGoogle Drive APIRevenueCatFirebase

Platforms

iOS

GraceLock

Pray Before You Scroll

GraceLock app icon
100+ curated prayers
Native Screen Time API
Mood-based prayer selection
Privacy-first, on-device
GraceLock app preview showing prayer prompts and app blocking

GraceLock is a Christian app blocker that turns screen time into prayer time. Block Instagram, TikTok, and other distracting apps until you pray first - building a daily prayer habit naturally.

Unlike punitive screen time apps, GraceLock transforms every unlock into an opportunity to connect with God. Features include mood-based prayer selection, prayer streak tracking, a personal prayer journal, and home screen widgets. All prayer data stays on-device for complete privacy.

Built with

SwiftUIFamilyControlsWidgetKitFirebaseRevenueCat

Platforms

iOS

MyVisualRoutine

Visual schedules and choice boards for families

MyVisualRoutine app icon
50+ preloaded activities
Privacy-first, no account
Custom photos & voice
Accessibility focused
MyVisualRoutine app preview showing visual schedules and choice boards

MyVisualRoutine helps parents, caregivers, and families of individuals with autism, developmental disabilities, or communication challenges manage daily routines through interactive visual schedules, choice boards, and First/Then boards.

Built on research-backed methodologies from ABA therapy and special education, the app works out-of-the-box with 50+ preloaded activities. Premium features include custom photos and voice recordings so children hear familiar voices. All data stays on-device with no account required, ensuring complete privacy for sensitive family information.

Built with

FlutterRiverpodIsarRevenueCatFirebase

Platforms

iOS

BuzzBlast

Turn your iPhone into the ultimate quiz game buzzer

BuzzBlast app icon
Instant audio-visual feedback
100+ sound effects
Large tap-responsive button
Premium sound packs

BuzzBlast transforms your iPhone or iPad into an interactive game show buzzer, perfect for trivia competitions, educational settings, and social gaming. With minimal latency sound feedback and visual screen effects, it's designed for competitive quizzing scenarios where every millisecond counts.

The app includes a variety of buzzer sounds from air horns and animal sounds to meme-worthy effects. Whether it's quiz night at the pub, classroom engagement activities, or family game night, BuzzBlast adds excitement to any competitive setting.

Built with

FlutterFirebaseRevenueCat

Platforms

iOS

Stao

Stand more. Sit less. Feel better.

Stao main timer screen showing standing modeStao statistics screen showing daily and weekly progressStao settings screen for customizing intervals

Stao is a standing desk companion app that helps you build healthier habits by providing smart reminders to balance sitting and standing throughout your workday.

Key features include customizable sitting/standing intervals, gentle non-intrusive notifications, detailed progress tracking with daily, weekly, and monthly statistics, and a privacy-first approach where all data stays on your device.

Built with

FlutterRiverpodFirebaseHive

Platforms

iOSAndroidmacOSWindowsLinux

Kvile

Lightweight HTTP debugging for developers

Kvile app icon
Native .http file support
Offline-first, no account
Monaco code editor
Git-friendly plain text
Kvile app screenshot showing HTTP request editor with syntax highlighting, collections sidebar, and JSON response

Kvile (Norwegian for "rest") is a lightweight, fast HTTP debugging tool built with Tauri and Rust. Unlike heavyweight alternatives like Postman, Kvile treats .httpfiles as first-class citizens.

Works seamlessly with JetBrains HTTP Client, VS Code REST Client, and Kulala (Neovim) formats. Features dual editor modes, JavaScript scripting for assertions, request history with search, and sub-second startup times. No telemetry, no cloud sync - just a fast, privacy-respecting tool for developers.

Built with

Tauri 2RustReactTypeScriptMonaco EditorSQLite

Platforms

LinuxmacOSWindows