I built an infinite jigsaw puzzle ad board using Cursor Composer (Next.js + SVG)

Hi everyone! :waving_hand:

I wanted to share a project I’ve been building almost entirely using Cursor Composer. It’s called The Puzzle Ads – think “The Million Dollar Homepage” but as an infinite, procedurally generated jigsaw puzzle.

:link: Link: https://www.thepuzzleads.com/app

What’s under the hood?

The core challenge was generating unique, interlocking puzzle pieces that work on an infinite canvas. I used Cursor to help write the SVG path logic so that:

  1. Every piece has a unique ID and shape.
  2. The “Tabs” (knobs) and “Slots” (holes) mathematically match their neighbors perfectly (no gaps!).
  3. It supports infinite pan & zoom (like Figma or Miro).

How Cursor helped:

I’m using the “Composer” feature heavily. One of my favorite moments was prompting it to “fix the sub-pixel gaps between SVG paths by rewriting the coordinate logic,” and it successfully refactored the entire rendering function to be pixel-perfect.

It handled the complex math for the cubic bezier curves (to make the puzzle pieces look “bulbous” and real) much faster than I could have calculated manually.

Tech Stack:

  • Framework: Next.js (App Router)
  • Styling: Tailwind CSS
  • Database: Postgres (via Neon)
  • Payments: Stripe (Webhooks for auto-claiming pieces)

I’ve seeded the board with some favorite dev tools (Ray.so, Iconoir, etc.) to show how the logo masking works.

Would love to hear your feedback on the UX/performance! :puzzle_piece: