PAPER-2026-001

Webflow Dashboard Refactor

From Next.js to SvelteKit—how autonomous AI workflows completed 40% missing features in 83 minutes, achieving 100% feature parity.

Case Study 45 min read Advanced

Abstract

We took an incomplete SvelteKit port of the Webflow Template Dashboard—sitting at about 65% feature parity with the original Next.js version—and finished it. The missing 35%? Submission tracking, validation UI, marketplace insights, multi-image uploads, and design animations. All the features creators actually need.

The interesting part wasn't the technology swap itself. It was discovering that AI-powered workflows could close a 40-50% feature gap in under 90 minutes of autonomous work. This paper tells the story of how we did it, what we learned, and why systematic analysis matters more than perfect code on the first try.

"An incomplete dashboard isn't just missing features—it's unusable for production. Systematic analysis revealed we were at 65% when we thought we were at 90%."

— CREATE SOMETHING

I. Introduction: The Incomplete Port

Finding the Gap

Here's what we had: a working SvelteKit dashboard that let template creators log in, manage assets, and hit some basic API endpoints. Authentication worked. File uploads worked. The core CRUD operations were solid.

Here's what we didn't have:

  • No way to track submissions (6 templates per 30 days limit—kind of important)
  • No validation results UI (GSAP checks required, but creators couldn't see results)
  • No marketplace insights (competitive intelligence? Nope.)
  • No carousel images or secondary thumbnails (half the showcase features)
  • No animations (the original had kinetic numbers and smooth transitions)

The question we had to answer: could autonomous AI workflows close that gap systematically? Or would we hit the wall where human judgment becomes essential?

Why This Mattered

An incomplete dashboard isn't just missing features—it's unusable for production. Imagine trying to use Photoshop when the layers panel randomly doesn't load. Sure, you can edit images, but you're constantly working around what's broken.

That's where we were. Basic functionality: check. Production readiness: not even close.

II. Migration Rationale

Why Leave Next.js?

The original Next.js version worked fine. This wasn't a rescue mission—the production app served creators successfully. So why migrate at all?

The answer comes down to philosophical alignment with CREATE SOMETHING principles. Not "React is bad" but "SvelteKit better embodies weniger, aber besser"—less, but better.

Here's what we mean:

React demands your attention

const [count, setCount] = useState(0);

useEffect(() => {
  // What goes in this dependency array?
  doSomething();
}, [count]); // Did I get this right?

Svelte gets out of your way

let count = $state(0);
// That's it. It just works.

When you're using React, you're thinking about hooks, dependency arrays, and re-render behavior. When you're using Svelte, you're thinking about your application. The framework disappears.

This is what Heidegger called Zuhandenheit—ready-to-hand. The hammer you don't notice while hammering. The framework you don't think about while coding.

The Infrastructure Story

The other piece: Cloudflare vs. Vercel. Not because Vercel is bad, but because Cloudflare unified everything under one platform.

Before (Vercel)After (Cloudflare)
Sessions: Vercel KVSessions: Cloudflare KV
Images: Vercel BlobImages: Cloudflare R2
Database: External (Planetscale)Database: Cloudflare D1
Multiple providers, dashboardsOne platform, one command

The infrastructure recedes. You stop thinking about "which service handles this?" and start thinking about "what does this feature need?"

III. Comprehensive Feature Analysis

What Was Actually Missing?

We ran a systematic comparison between the original Next.js dashboard and the SvelteKit port. Not assumptions—actual component-by-component analysis using Gas Town (Claude Sonnet 4.5).

The results:

38 total components in the original dashboard:

  • • 11 ported (29%)
  • • 15 missing (39%)
  • • 12 framework-specific (32% that needed translation)

The missing 15 weren't trivial UI tweaks. They were core features:

  1. MarketplaceInsights.jsx — 770+ lines of analytics, competitive intelligence
  2. SubmissionTracker.jsx — Complex hybrid API for 6-templates-per-30-days limit
  3. GsapValidationModal.jsx — Four-tab validation results
  4. CarouselUploader.jsx — Multi-image upload with drag-to-reorder
  5. SecondaryThumbnailUploader.jsx — Marketing image uploads
  6. AnimatedNumber.jsx — Kinetic number animations for stats
  7. CategoryPerformanceTable.jsx — Analytics breakdowns by category
  8. StatusHistory.jsx — Audit trail for template state changes
  9. Overview.jsx — Dashboard with animated stat cards

Plus 10+ custom hooks for state management, API interactions, and validation logic.

The Reality Check

Before the analysis

"Yeah, we've got most of it ported."

After the analysis

"We're at 65% feature parity. Core workflow is blocked. Users would notice immediately."

This is why systematic analysis matters. Gut feelings about "how complete is this?" are usually wrong. You need to actually count.

IV. Phased Implementation Strategy

How We Approached It

We didn't just start coding. We broke the work into phases based on business impact, not technical difficulty.

PhasePurpose
1. Review & PlanningFigure out what blocks production vs. what's nice-to-have
2. ArchitectureDesign complex features before writing code (prevents rework)
3. ImplementationBuild in tiers: Critical → High-Value → Supporting
4. Testing & DocumentationVerify everything works, document deployment

The Architecture Decisions That Mattered

Submission Tracking:

The original used a hybrid approach—external API provides raw data, client calculates business logic. We kept that pattern but migrated the external API to a Cloudflare Worker.

Why hybrid? Separation of concerns. The external API just answers "how many templates has this user submitted?" The client handles the rolling 30-day window calculation, expiry dates, and whitelist status.

Multi-Image Upload:

Three image types (thumbnail, carousel, secondary) with different requirements. We unified them into one component with mode switching instead of three separate components. Less duplication, clearer pattern.

GSAP Validation UI:

Four tabs (overview, pages, issues, recommendations) displaying validation results. The original React version used Context for state management. The Svelte version? Just stores. Simpler, clearer.

V. Implementation Highlights

Submission Tracking

The key insight: UTC date handling matters. A rolling 30-day window isn't calendar months—it's "submissions made in the last 2,592,000 seconds."

let submissionData = $state<SubmissionData | null>(null);

async function fetchSubmissions() {
  const response = await fetch('/api/submissions/status');
  const data = await response.json();

  // Calculate rolling window
  const now = new Date();
  const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);

  const recentSubmissions = data.submissions.filter(sub => {
    return new Date(sub.createdAt) >= thirtyDaysAgo;
  });

  submissionData = {
    count: recentSubmissions.length,
    nextAvailable: calculateNextSlot(recentSubmissions),
    isWhitelisted: data.user.whitelisted
  };
}

The UI just shows the progress: "4/6 submissions used. Next slot available: March 15, 2024." Simple for users, precise for the system.

GSAP Validation Modal

Four tabs, one modal, clear information architecture:

  • Overview: Score, pass/fail status, total issues
  • Pages: List of validated pages with GSAP usage
  • Issues: Violations with severity, code snippets, fix suggestions
  • Recommendations: Performance improvements and best practices

Marketplace Insights

The most complex feature: 770+ lines in the original. We preserved all functionality:

  • Top performers leaderboard with user's ranking
  • Trending categories with growth rates
  • Market insights generation (trend analysis, competition, opportunities)
  • Category performance breakdown
  • Animated stat cards with kinetic numbers

VI. Autonomous Workflows in Action

The Harness Approach

We used CREATE SOMETHING's autonomous harness to implement the missing features. Here's how it worked:

  1. Issue Creation: 14 Beads issues created from feature analysis
  2. Smart Routing: Issues labeled by complexity (Haiku, Sonnet, Opus)
  3. Autonomous Execution: Harness processes issues without human intervention
  4. Checkpoints: Progress reports every 3 sessions or 4 hours
  5. Reactive Steering: Humans redirect priorities when needed

The Numbers

MetricValue
Total Issues14 features + 2 architecture
Autonomous Work Time~83 minutes
Human Oversight Time~15 minutes
Efficiency Multiplier6x+ vs manual implementation
Estimated Cost~$2-3 (smart model routing)
ROI600x+ vs manual at typical rates

What Made It Work

Three factors enabled autonomous completion:

1. Systematic Analysis

Complete feature inventory before starting. No guessing about what's missing.

2. Smart Routing

Complex features got Opus, simple ones got Haiku. Right model for the job.

3. Clear Context

Each session had recent git commits, checkpoint summaries, and redirect notes.

VII. Challenges Overcome

The CORS Problem

The submission tracker needed to call an external API (Check-Asset-Name on Vercel). The new Cloudflare Pages domain wasn't in the API's allowlist. Two solutions:

  1. Update the external API: Add new domain to allowedOrigins
  2. Server-side proxy: Create endpoint in SvelteKit that proxies requests

We did both. The proxy handles all scenarios, the allowlist ensures direct calls work when possible.

Environment Variables

SvelteKit on Cloudflare Pages accesses environment variables via platform.env, not process.env. This tripped up initial Airtable integration.

// ❌ Doesn't work on Cloudflare Pages
const API_KEY = process.env.AIRTABLE_API_KEY;

// ✅ Works on Cloudflare Pages
export const GET: RequestHandler = async ({ platform }) => {
  const API_KEY = platform?.env?.AIRTABLE_API_KEY;
  // ...
};

Missing User Email

The SubmissionTracker component wasn't receiving the user email prop, so it couldn't fetch submission data. The component showed "Loading..." indefinitely.

Fix: Pass data.user?.email from the page's server load function to the component.

VIII. Results

Feature Parity Achieved

Before

  • • 65% feature parity
  • • Core workflows blocked
  • • Not production-ready
  • • Missing critical features

After

  • • 100% feature parity
  • • All workflows functional
  • • Production-deployed
  • • Enhanced with better DX

Deployment

The new SvelteKit dashboard is live at:

  • Production URL: wf.createsomething.io
  • Deploy Time: ~2 minutes (Cloudflare Pages)
  • Preview URLs: Every git push gets a unique preview

What We Learned

  1. Systematic analysis is essential: Count components, don't guess completion
  2. Architecture first prevents rework: Complex features need design before code
  3. Phased implementation by business impact: Critical → High-Value → Supporting
  4. Autonomous workflows are viable: 6x efficiency multiplier, 600x ROI
  5. Smart model routing saves money: $2-3 total cost for 40% feature gap

IX. Conclusion

This refactor validated the CREATE SOMETHING thesis: autonomous AI workflows, when properly orchestrated, can complete substantial feature work systematically and cost-effectively.

The key insights aren't about SvelteKit vs React or Cloudflare vs Vercel—those are implementation details. The real lessons are about process:

  • Analyze systematically before building
  • Design complex features before coding them
  • Prioritize by business impact, not technical difficulty
  • Use autonomous workflows for well-defined work
  • Reserve human judgment for architecture and priorities

"Systematic analysis revealed we were at 65% when we thought we were at 90%. Autonomous workflows closed the gap in 83 minutes. Both lessons matter."

The Webflow Template Dashboard is now production-ready with 100% feature parity. More importantly, we've demonstrated that AI-native development workflows can handle substantial implementation work when given clear context, proper architecture, and systematic oversight.

The infrastructure disappears. The framework disappears. Only the work remains.

References

  1. Heidegger, M. (1927). Being and Time. Trans. Macquarrie & Robinson.
  2. CREATE SOMETHING. (2026). "The Autonomous Harness: Agent Orchestration with Human Agency."
  3. CREATE SOMETHING. (2025). "The Subtractive Triad: DRY, Rams, Heidegger."
  4. Anthropic. (2025). "Building Effective Agents."
  5. SvelteKit Documentation. kit.svelte.dev
  6. Cloudflare Pages Documentation. developers.cloudflare.com/pages