Always human authored · no generative AI
Hello, World
Hello, World
Welcome to the first post on my blog. It’s a statically generated site built on my own frontend library, effex — every page here is pre-rendered to HTML at build time.
Why build my own framework?
Mostly because it’s fun, and because I wanted reactivity built directly on
Effect primitives. This very page is markdown, rendered
to HTML with markdown-it and syntax-highlighted with Shiki.
Some code
Here’s what a route looks like in this site:
const BlogPostRoute = Route.make("/blog/:slug").pipe(
Route.params(Schema.Struct({ slug: Schema.String })),
Route.static({
paths: () =>
Effect.gen(function* () {
const posts = yield* discoverPosts();
return posts.map((p) => ({ slug: p.slug }));
}),
load: ({ params }) =>
Effect.gen(function* () {
const post = yield* loadPost(params.slug);
return { post };
}),
render: (data) => BlogPostPage({ post: data.post }),
}),
);
And a little shell for good measure:
pnpm build && pnpm preview
Markdown features like blockquotes, lists, and tables all work out of the box.
That’s it for now — more soon.