I Tried Building a Fiverr Clone with Convex + Clerk

Here’s What Went Wrong

By Mark Truong

As a developer, I wanted to create a portfolio project that showcased my frontend chops with Next.js, React, Tailwind CSS, ShadCN, and my growing interest in newer backend stacks like Convex and Clerk.

The goal? Build a Fiverr clone – complete with service listings, subcategories, user authentication, and seller dashboards. I envisioned something sleek, scalable, and production-ready.

The Stack

•	Next.js – for routing and performance
•	React + TypeScript – for structure and reusability
•	Tailwind CSS + ShadCN – for clean, accessible UI
•	Convex – to manage backend functions without boilerplate
•	Clerk – for authentication, sessions, and user management

The Vision

I followed a promising Fiverr clone tutorial to jumpstart the backend logic. Convex seemed like the perfect fit: real-time data, built-in auth integration, and a “no-database-setup” developer experience. Clerk’s seamless user management felt like it would fit right in.

But then the cracks started to show.

What Went Wrong

🔐 Clerk + Convex Auth Issues

Clerk and Convex are both powerful—but getting them to play nicely together was more trouble than expected. The tutorial I followed had outdated or incomplete auth logic. User session state was inconsistent. Some requests went through authenticated, others failed silently.

Even after poring through Convex’s docs and tweaking middleware, the auth flow was unreliable.

🧩 Subcategories Not Populating

Another core feature—auto-populating subcategories under services—broke inexplicably. The frontend components were solid. The backend function for pulling category data should have worked. But Convex never seemed to trigger the right queries on page load or route transitions.

I wasted hours debugging data fetches, inspecting payloads, and rewriting functions from scratch. The issue might’ve been due to how Convex handles reactive queries—but at that point, I wasn’t sure if it was the stack or my understanding of it.

🛠 The App I Forked Was… Just Broken

After enough back-and-forth with bugs that felt unexplainable, I came to a tough but necessary realization: The app I based this off was fundamentally broken.

Whether due to version mismatches, incomplete code, or backend architecture that didn’t scale—I realized I was fixing someone else’s bad foundation instead of building my own.

What’s Next?

I’m cutting my losses (for now) and pivoting to a new portfolio project: a Spotify Clone. I’ll still be using Next.js, Tailwind CSS, TypeScript, and Supabase or PostgreSQL for the backend—something I know and trust. Music players, playlists, auth, and UI state? That’s my zone.

I might come back to Convex later with a fresh repo and my own architecture. Or maybe explore alternatives like: • Building a Trello-style Kanban board • A lightweight Notion clone with collaborative docs • A marketplace app, but with my own schema from scratch

Final Thoughts

If you’re a developer exploring new backend tools, don’t feel bad if things don’t click right away. Not every project works out—and not every tutorial is production-ready. Sometimes, walking away is progress.

Onward to the next build.

Share: X (Twitter) Facebook