Settings

Theme

Show HN: Next.js-like Python web framework, built for Htmx with FastAPI

volfpeter.github.io

6 points by volfpeter 2 months ago · 6 comments · 1 min read

Reader

It's very early days for the project, but I wanted to share it to see if there is interest.

It is the final piece of the FastAPI server-side rendering stack I started building with FastHX and htmy (the two dependencies of this project besides FastAPI).

Think of it as a more powerful and convenient alternative to tools like FastHTML, powered by FastAPI (without any modifications). I hope you'll like it.

lauryakonguina 2 months ago

Would be cool if it was opiniated with ready to use and interactive components like in FastUI (https://github.com/pydantic/FastUI)

If you do this, i'll use it. But maybe that's not the goal?

That’s how I like to use them framework to quickly bootstrap a project in Python only.

I've started working on a FastAPI with HTMX wrapper also 4 days ago, it's not as advanced as your projects tho. There's not much there yet, but here's the link: https://github.com/lakonguina/devanture

  • volfpeterOP 2 months ago

    Well, the thing is, FastHX, htmy, and holm should be powerful an unopinionated. Think of them like ReactDOM, React, and Next.js.

    On the other hand, I already thought about building a component library for htmy. I'd prefer to do it with TailwindCSS and DaisyUI, or I could use for example BasecoatUI https://basecoatui.com/ as a template, because it already offers Jinja-like component snippets.

    Now that I have holm as well, I may eventually do it. It's a lot of work though, finding so much spare time is hard.

    FastUI is now Reflex. They essentially build a FastAPI + NextJS app combo from your code (maybe they already swapped NextJS for something else). NiceGUI is similar as well.

    For my projects, I really want to avoid a big JavaScript companion app, so interactivity will remain HTMX, pure JS where needed, or AlpineJS for example. I'm also thinking about a server-component concept for HTMX with holm, but I don't have a clear plan just yet. I can think about these more now that I have holm.

    • hunvreus 2 months ago

      Thanks for mentioning Basecoat.

      Funny enough, I've used a very similar stack (HTMX + FastAPI) for /dev/push [1]. Code is available there: https://github.com/hunvreus/devpush

      Planning on checking out holm soon.

      [1]: https://devpu.sh

      • volfpeterOP 2 months ago

        It's a shame you did all the rendering manually :) FastHX would have simplified your life a bit.

        devpush seems really interesting! I wasn't aware of it, but I'll check it out! It also looks great (no surprise there, it's Basecoat).

        Although I usually go with DaisyUI, Basecoat is a vey good source for ideas and more complex component patterns. This is why I feel translating Basecoat snippets to htmy wouldn't be that much trouble, and I'm seriously considering starting it.

        • hunvreus 2 months ago

          I believe I checked FastHX while building it, but wasn't clear what the main advantage was. Can you help me understand what problems I'd solve with it?

          • volfpeterOP 2 months ago

            It's just sugar.

            It hides the manual template selection, context creation, and rendering logic behind a simple decorator. This way you always write standard FastAPI routes (or you add HTML rendering to existing JSON APIs without changing the route or breaking the existing functionality).

            With htmy, it does a bit more, like adding some utilities to the rendering context, adding context processor support, simplify rendering, letting you statically check whether your components receive the correct properties.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection