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.