Studio Track
WordPress → Next.js migration for an Autodesk school — blog, sign-ups, ratings, and an admin panel the instructor runs herself.
An Autodesk instructor with 30+ years of experience was teaching the 3D software an entire industry runs on — from a website held together by WordPress plugins and hope.
Context
Studio Track is a Belgrade school for Autodesk software — AutoCAD 2D, Revit, and 3DS Max + V-Ray — run by Milena Petrović, a licensed Autodesk instructor with three decades in the field. She needed course pages, student sign-ups, reviews, and a blog she could run herself — without the plugin-update treadmill her old WordPress site demanded.
Decisions
- Retire WordPress, keep it only as the content reference. The new site is Next.js 15 + React 19 deployed to Cloudflare via @opennextjs/cloudflare — no plugins to patch, and hosting that costs effectively nothing.
- D1 + R2 as the entire backend. Blog posts, sign-ups, comments, and settings live in six SQLite tables on Cloudflare D1; images go to R2. Nothing to patch at 3 a.m.
- A custom admin panel instead of a CMS. Milena needed to do exactly four things: write posts (Tiptap editor), review course sign-ups, moderate comments and ratings, flip one moderation toggle. Building that beat teaching her someone else’s dashboard.
- Anti-spam without CAPTCHA. Three layers — a honeypot field, a cryptographically signed math challenge, and D1-backed rate limiting. Humans see no friction; bots hit three walls.
- Build it as a template. Every decision and every trap went into a lessons-learned document, so instructor site number two starts halfway to the finish line.
Build
I don’t write code — I direct AI agents that do. My job was the spec, the review, and the veto. The agents earned their keep on edge-runtime traps: jsonwebtoken and bcrypt simply don’t run on Cloudflare Workers (jose and bcryptjs do), and Tailwind v4 was so new that most online answers were wrong — text-dark silently does nothing because “dark” is a reserved word. Each fix was documented once so no agent pays for it twice.
Outcome
Built in February 2026, live at studiotrack.rs: three course pages with ratings, sign-up and contact forms, a self-serve blog, and a working admin panel. I won’t quote traffic or enrollment numbers I don’t track — what I can point to is the reusable playbook the project left behind.
Lesson
The file worth the most in this repo isn’t code — it’s the list of mistakes that are already paid for.