Skip to main content

Convex Setup: Building the Perfect Backend for Your Portfolio

Convex Setup: Building the Perfect Backend for Your Portfolio
0 likes
0 comments

When I decided to rebuild my portfolio site, I knew I didn't want to manage servers. I'd spent enough time wrestling with databases, migrations, and deployment pipelines. So I chose Convex, and honestly? It's been a game-changer.

Starting From Scratch

The old portfolio was built on WordPress, which served me well for years. But as I shifted toward React and Next.js, I realized I needed a backend that felt like a natural extension of my frontend code—something where I could define my data model in TypeScript and have everything just work.

Convex gave me exactly that. Instead of setting up PostgreSQL, managing migrations, and writing API routes, I could focus on what actually matters: building features.

Designing the Data Model

My first step was thinking through what my portfolio actually needs to store. Unlike a traditional blog with just posts and comments, a portfolio is more complex. I need:

  • My profile: Bio, social links, avatar
  • Project showcase: Descriptions, links, featured status
  • Career timeline: The journey from video production to React development
  • Resource links: Those browser tabs I'm always leaving open
  • Gallery photos: Memories from conferences and adventures
  • Contact messages: When people reach out
  • SEO metadata: Every page needs proper tags for search engines

What I love about Convex is how natural this feels. I just defined my tables, added some strategic indexes, and the database handles the rest. No wrestling with migrations or worrying about schema drift.

The Admin Dashboard Changed Everything

Before Convex, updating my portfolio meant editing files in my codebase. Now? I built an admin dashboard where I can:

  • Update my bio and social links live
  • Tweak SEO titles and descriptions per page
  • Drag photos into my gallery
  • Manage my career timeline with custom icons
  • Approve contact form messages

The beautiful part is how simple this became with Convex's mutations. Each action is just a function call. No API routes to maintain, no error handling boilerplate—just define what I want to change and Convex handles the rest safely.

Real-Time Updates That Actually Work

I remember the frustration with WordPress. You'd make a change and wonder: did it save? Is the cache clearing? When will users see it?

With Convex, it's instant. I update my profile and within milliseconds, every page that depends on that data reflects the change. The architecture just handles it through React Query and real-time subscriptions.

This matters more than you'd think. When I'm at a conference and want to update my bio to mention it, or fix a typo in my project description, I know it's live immediately. No build process, no deployment—just changes that propagate instantly.

Media Management Made Sensible

One of my favorite features is how Convex integrates with UploadThing for file storage. Instead of managing image optimization, CDN caching, and storage myself, I just:

  1. Upload via the admin dashboard
  2. Convex stores the metadata
  3. UploadThing handles delivery
  4. I drag-and-drop assignment to content

The gallery works especially well. I can position photos by order, add descriptions, and everything stays in sync. When I attended Render 2024 and wanted to add photos, I just uploaded them and positioned them. Done.

The Type Safety Advantage

Coming from WordPress, where a typo in a field name could break your site at runtime, Convex's TypeScript integration feels like a superpower.

I define my schema once, and the types cascade through my entire codebase. If I change a field name in Convex, I get immediate TypeScript errors everywhere it's used. No more hunting for breaking changes—the compiler catches it.

This is especially valuable for the admin dashboard. Every mutation is type-safe, every query is validated at compile time. It's reduced bugs significantly compared to my previous setup.

Seeding Data: The Developer Happiness Factor

One thing I didn't expect to love was the seed functions. When I was setting up my site initially, I could write seed mutations that populated my entire database with my career history, projects, and resources.

Now, when I'm testing a new feature or deploying to a new environment, I can reset to a known good state with a single command. It's such a small thing, but it saves so much manual clicking.

The No-DevOps Dream

Here's what I appreciate most: I never think about infrastructure. No database backups to manage, no server health monitoring, no midnight pages about performance issues.

Convex handles schema migrations automatically. Scaling is invisible to me—the system just handles it. I can focus entirely on building features instead of maintaining infrastructure.

For someone like me who spends most of their time in React and TypeScript, this is liberating. I'm not a DevOps person—I'm a builder. And Convex lets me build.

What Makes It Sing for a Portfolio

A portfolio site has unique needs. You want everything to be fast (good for impressions), real-time updates (you're constantly improving), and reliable (downtime is embarrassing).

Convex nails all three. The queries are snappy because of strategic indexing. Updates are real-time because of built-in subscriptions. Reliability is guaranteed because Convex handles the hard infrastructure problems.

Plus, there's something satisfying about building your portfolio with the same tools you'd use professionally. When someone visits my site and asks "what's this built with?", I can tell them: Next.js, React, Convex—the same stack enterprises use.

Looking Forward

I'm still discovering ways to use Convex better. The recent addition of vector search makes me think about how I could add semantic search to my blog. The roadmap looks exciting.

But even today, with just the core features, it's transformed how I think about backends. It's shifted my mindset from "building infrastructure" to "shipping features."

If you're building a portfolio, a SaaS product, or any modern web app, I'd seriously recommend checking it out. The development experience is genuinely delightful.

BackendConvexDatabaseFull-Stack

Comments (0)

No comments yet. Be the first to share your thoughts!