DEV Community

Michael Egberts
Michael Egberts

Posted on

Building an AI-native web platform: 69 features in 11 days (solo dev log)

I'm building WebsitePublisher.ai — a platform where AI assistants build and publish complete websites through MCP (Model Context Protocol) tools. Here's what the last 11 days looked like.

The Visual Editor Problem
Users could build entire websites through conversation, but changing a single typo required asking the AI to patch the page. Terrible UX for small edits.
Solution: WPE v2 — a visual editor that loads the published page in an iframe, detects editable elements, and lets users click-to-edit text, drag-and-drop images, right-click for context menus, and save back through the same PAPI that AI assistants use.

Key decisions: httpOnly cookies instead of URL tokens, change count badge in dashboard, overlay detection for CSS-covered images.

The Integration Cookbook
Our integration engine (IAPI) supports http (external proxy) and internal (PHP handler) drivers. After shipping LinkedIn posting and SMTP email in the same week, I wrote an Internal Integration Cookbook:

  1. Create manifest JSON with endpoint definitions
  2. Implement handler extending InternalIntegrationHandler
  3. Define body_transform and response_transform hooks
  4. Register in engine

Result: the API Proxy integration took 2 hours from start to production.

MCP Session Stability
OAuth 2.1 + PKCE authentication. Claude's connector occasionally lost session state → 401 errors mid-conversation. Fixed with a 6-layer approach: token refresh, graceful 401 handling, session persistence, stale token detection, project selector refresh, frontend error boundaries.

Custom Domains with DNS Pre-validation
SSL certificate requests would fail when DNS hadn't propagated. Now we validate CNAME resolution before calling certbot. Clear error messages instead of cryptic failures.
Numbers
Tasks completed (11 days): 69
Total MCP tools: 55
AI platforms supported: 9
API layers: 10
Directory listings: 15+

→ websitepublisher.ai

Top comments (0)