The Problem
Modern web frameworks are powerful but often feel disconnected from how developers naturally think about building applications. They come with steep learning curves, opinionated architectures, and tight coupling that makes incremental adoption difficult.
Key Pain Points
- High cognitive overhead from framework-specific concepts
- Difficult to understand what's happening under the hood
- Hard to adopt incrementally in existing projects
- Too much magic, not enough clarity
The Vision
A web framework that feels like writing vanilla JavaScript with just enough structure to keep things organized. Something you can understand in an afternoon and adopt one piece at a time.
Guiding Principles
- Minimize abstraction layers between your code and the platform
- Make the framework transparent-you should see what it's doing
- Enable incremental adoption-use what you need, when you need it
- Prioritize developer clarity over framework cleverness
Mission Objectives
Build a minimal routing system
completedFile-based routing with no magic-just map URLs to files.
Custom route handlers
completedAllow developers to define how requests are handled with simple methods defined on the page objects.
Create page object design
completedSimple Page class that handles rendering, layout, and metadata.
Static Site Rendering (SSR) first
completedRender pages on the server.
Develop plugin architecture
in progressSimple lifecycle hooks for extending functionality without framework lock-in.
Build developer tooling
in progressHot reload, error reporting, and debugging helpers.
Document patterns and best practices
not startedReal examples, reasoning behind decisions, and migration guides.
Mission Updates
A chronological log of progress, decisions, and learnings.
Plugin lifecycle hooks working
Implemented pre template render, template rendered, and request hooks. BlogPlugin now cleanly extends base functionality.
Page class stabilized
Settled on a pattern: Page constructor takes template and context, render method handles layout composition.
Initial routing implementation
File-based routing working. Load .mjs files as page handlers, serve .html as templates.
Project kickoff
Started exploring what a minimal framework would look like. Initial experiments with template rendering.