Quick reminder: ayb makes it easy to create databases, share them with collaborators, and query them from anywhere.

I’m excited to announce v0.1.11 of ayb (full release notes), which now includes a web frontend bundled into the ayb server command line! Bundling a web interface for managing and querying databases is in line with my goal of expanding the set of people that can use ayb. Since a video of the experience says it all, here’s the new ayb in a minute:

It’s amazing what having a frontend wrapper around an API can do for a demo. In introducing a web interface, I haven’t added any new functionality to ayb, and the commands to do everything in the demo have existed in the documentation for a long time. But it’s one thing to explain that you can do something using the terminal, and it’s another to visually walk someone through what you mean with a user interface.

Beyond the web interface, this release includes a public_url to expose your instance behind a load balancer/CDN, a database_details endpoint/command line option to include some details about databases that the interface required, a way to run ayb without setting up a mail server for testing/a personal deployment, and a protected list of usernames to prevent scammy registration. And in a first experience for me, I’ve fully covered the frontend in Playwright tests.

Since I want ayb to be accessible from anywhere, it was important to me that the web frontend relies entirely on the existing ayb API without giving it special access to ayb data. The views that render the interface call the same endpoints that the command line interface does. I also wanted the interface to require no additional build / compilation steps in order to avoid adding to a user’s setup and operational load. To that end, the entire experience is rendered on the backend via views served from the same ayb server that serves the API, and the frontend flow are progressively and smoothly served using htmx. The implementation has minimal vanilla JavaScript, and the component library is all thanks to Franken UI, which also offers a subset of Tailwind. I’m happy with how things turned out: I didn’t have to compromise too much to work within the constraints of no frontend build and all rendering happening on the backend, and the user ends up getting a complete no-setup-required frontend packaged into their binary.

Try it out and let me know how it works for you. Next up, I’m planning on hosting a version of ayb on a server that friends and curious colleagues can use. I got a pretty sweet domain name for it, and am excited to share it when it’s up!