How we built Hostl: the technical decisions behind the platform
Building a new kind of inbox required making some unconventional technical choices. Here is what we chose and why.
Next.js 16 with App Router
We chose Next.js 16 for its server components, which let us fetch data on the server and pass it directly to the client. This means the inbox loads with data already present — no loading spinners, no empty states.
Supabase for everything backend
Supabase gives us PostgreSQL, real-time subscriptions, auth, and storage in one platform. Row Level Security means every user can only see their own data, enforced at the database level.
Handle-based auth
We wanted no email required. Supabase Auth requires an email internally, so we generate a secure synthetic one that users never see. You sign in with your @handle and password.
Tiptap for rich text
The message editor needed to support rich text, HTML, and eventually interactive form elements. Tiptap gave us a headless editor we could style completely to match our design system.
Cloudinary for avatars
Avatar uploads go through Cloudinary with automatic face-aware cropping to a square. GIFs are supported and preserve their animation. The result is always a clean, consistent profile picture.
We will keep sharing technical decisions as we build. Follow the blog for updates.