I wanted a writing platform that felt calmer than a CMS dashboard but still had the real pieces: auth, editor, drafts, published posts, and public SEO pages.
How I fixed it
I built public blog pages and an admin area in Next.js, with Supabase for auth and data, Tiptap for the editor, category filters, and a dark minimal UI.
What it can do
Public blog index and detail pages
Category filtering
Supabase Auth
Admin post dashboard
Tiptap rich-text editor
Draft and publish flow
The stack that shipped it
Next.js handled public pages and admin routes cleanly. Supabase made auth and RLS straightforward, while Tiptap gave enough editor power without building one from scratch.
What changed
Writly demonstrates an end-to-end content product, from writing and publishing to reading and filtering posts.
What I learned
I learned that editor UX is full of small edges: empty states, formatting control, saved content shape, and how public pages render rich text safely.