Hello, I'm
Stephan Langeveld
Builder & Engineer
I build open source tools, write about software engineering, and obsess over performance, developer experience, and the craft of making things well.
Open Source
View all projects →Easy File Transfer
A lightweight desktop app for transferring files over SSH using rsync. Dual-pane browser, drag-and-drop, resumable transfers, and connection profiles. Built with Tauri (Rust) and React.
TinyFlow
A visual workflow editor and runtime for designing, connecting, and running LLM-based agentic workflows. Drag-and-drop canvas, CLI tools, bundle builder, and built-in AI functions.
ktsx
A lightweight Kotlin Multiplatform UI framework with a JSX-inspired .ktsx syntax that compiles to idiomatic Kotlin DSL code at build time via a Gradle plugin and KSP processor.
PicoLauncher
A minimal Android home screen launcher. No icons cluttering the screen by default — just your apps as text, a live search bar, swipe shortcuts, and your wallpaper. Built with Kotlin.
Sjango
A minimal async web framework boilerplate that brings Django-style project structure (apps, models, views, urls) to Sanic with Tortoise ORM and Pydantic Settings.
tutor-cli
An AI-powered CLI study tutor that generates a question bank on any topic via the OpenAI API, then drills you using seven learning methods — flashcards, cloze deletion, Q&A, quizzes, matching, and more — with adaptive difficulty, SM-2 spaced repetition, and persistent progress between sessions.
Latest Writing
View all posts →Why I Ditched Next.js for TanStack Start + Nitro
Next.js is powerful, but the platform gravity around it is real. TanStack Start with Nitro gave me better architecture defaults and true deployment freedom.
Django Made Me a Better Developer
Django is old, opinionated, and not the coolest framework at the party. It also taught me more about software architecture than anything else I've learned.
Goodbye GitHub Copilot, Hello Claude Code
I cancelled my GitHub Copilot subscription after years of using it. Not because the product got worse — but because GitHub changed the terms of the deal I signed up for.