Framework Development active

Build the Juphjacs Web Framework

Exploring a different way to build web applications: small, composable, and closer to how we actually think.

Progress 70%
Status active
Started Jan 2024

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

completed

File-based routing with no magic-just map URLs to files.

Custom route handlers

completed

Allow developers to define how requests are handled with simple methods defined on the page objects.

Create page object design

completed

Simple Page class that handles rendering, layout, and metadata.

Static Site Rendering (SSR) first

completed

Render pages on the server.

Develop plugin architecture

in progress

Simple lifecycle hooks for extending functionality without framework lock-in.

Build developer tooling

in progress

Hot reload, error reporting, and debugging helpers.

Document patterns and best practices

not started

Real 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.

🔍 ⌘K or /