Static Serving, H3, and the Last Piece of v0.1

Published: (February 18, 2026 at 01:20 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

Static Serving

The Host now serves files from src/ – just serving. No fallback logic, no integration detection. The entry point is src/index.html.

For later, this will be moved to the fallback section – once integrations are real, static serving becomes the baseline when nothing else claims the request. For now, it is the only thing running.

I also added a simple JSON endpoint – "$path/__json" – to return a small JSON object about the app itself. It’s useful for debugging and may become part of the public API later.

Static serving is now the baseline. Every project in a Velnora workspace gets it for free, with no configuration needed.

velnora init

H3 Framework

H3 is the HTTP framework I chose for Velnora’s Host early on, but this was the first time I actually went deep with it. The experience is different from Express:

  • There is no req and res. You receive an event object.
  • You don’t call res.send(). You return the response.
  • Returning nothing triggers the next handler.

Middleware isn’t a stack you push onto; it’s a set of event handlers composed together. The framework decides what runs; you just define handlers and compose them.

At first, my muscle memory kept reaching for Express patterns that don’t exist in H3. The documentation is minimal – the UnJS ecosystem expects you to read the source code – but once I stopped mapping H3 onto Express and started thinking in its own terms, things clicked. The code became shorter, the composition cleaner, and static serving slotted in naturally alongside the Vite middleware.

Workspace Initialization (v0.1)

With serving working, the last piece for v0.1 was a way to start a workspace from scratch.

I implemented the command:

velnora init 
  • The “ argument is required for now.
  • The command creates the two files that constitute a valid Velnora workspace: a configuration file and a package.json.
  • No additional scaffolding is performed; the rest is manual until a future questionnaire (including integration‑specific questions) is added.

This minimal approach keeps the init command honest and unobtrusive.

v0.1 Summary

v0.1 is complete. There’s no flashy UI, dashboard, or demo, but the core pipeline is functional:

  • Kernel boots.
  • Host serves static files.
  • Project discovery works.
  • velnora init scaffolds a workspace.

I’ll tag the repository as v0.1 but won’t publish it yet—there’s no rush. The code and tag mark the milestone.

Next steps: Analyze the scope for v0.2 to decide which task to tackle first. The skeleton is standing; now it needs muscle.

0 views
Back to Blog

Related posts

Read more »