0%
Aymen
Back to Works
WebShipped2026

Landing Agents

AI landing-page builder for Arabic sellers — it plans a sales page section by section, generates the visuals with Gemini, then publishes it to Cloudflare Pages with a WooCommerce checkout attached.

My Role
Full Stack Developer
Timeline
May 2025 — Apr 2026
Status
Shipped
Landing Agents
Overview

Landing Agents turns a plain-language business description into a working sales page. A seller writes a few sentences about what they sell; a set of Gemini-driven agents plans the page structure, writes each section, generates the imagery, and keeps iterating with the user until the page is ready — ending with a live deployment on Cloudflare Pages and a WooCommerce checkout wired in.

The backend is a Fastify server organized around DDD and CQRS: generation and publishing run as commands on the write side, while the builder UI reads through dedicated query handlers. The React client follows MVVM — views stay purely presentational and ViewModels own the builder's state and logic — so the interface can evolve without touching the business rules underneath.

The Challenge

The problem to solve

Most sellers who need a landing page cannot write conversion copy, design page sections, or set up hosting and checkout — and a single one-shot LLM prompt hands them a generic wall of text they cannot meaningfully revise. The real problem was structural: turning an open-ended business description into a page that is planned, generated, and revised piece by piece, while keeping the generation workflow, the editing state, and the publishing pipeline coherent behind one API.

The Solution

How it was built

The generation flow is split into agents with narrow jobs: one plans the page as an ordered sequence of sections, others generate the copy and Gemini visuals per section, and the iteration loop lets the user push back on any single section without regenerating the whole page. On the server, DDD keeps the domain model separate from the transport layer, and CQRS separates the mutation-heavy generation commands from the reads the builder UI depends on. The client is MVVM React: pages render state, ViewModels orchestrate the agent calls and edits.

Publishing is a command like any other — the finished page ships to Cloudflare Pages with a WooCommerce checkout attached, so the output sells instead of just displaying.

Key Features

What it does

💬

Describe-to-build input

A seller describes their business in plain language, and that description is the only input the system needs — the agents derive the page plan, copy, and visuals from it.

🧠

Section-by-section planning

An agent plans the sales page as an ordered sequence of sections before any content is generated, so the result has deliberate structure instead of one long block of AI text.

🎨

Gemini visual generation

Page imagery is generated with Gemini to fit the planned sections, so each page gets visuals specific to the business rather than stock photos.

🔁

Agent-driven iteration

Generation is a loop, not a one-shot: the user pushes back and the agents revise the page, section by section, until it fits the business.

☁️

Cloudflare Pages publishing

The finished page is deployed to Cloudflare Pages as part of the flow — hosting is handled by the product, not left as homework for the seller.

🛒

Attached WooCommerce checkout

Every published page ships with a WooCommerce checkout attached, so the landing page works as a point of sale rather than a brochure.

Technologies Used

Built with

Frontend

Next.js

Next.js hosts the MVVM React client, providing routing and rendering out of the box while page components stay presentational and all builder logic lives in ViewModels.

Backend

Fastify

Fastify's low-overhead, schema-validated routes give the DDD + CQRS server a clean transport layer, with each command and query mapping onto a typed endpoint.

Data

PostgreSQL

PostgreSQL backs the write side with relational, transactional storage, keeping pages, sections, and generation state consistent as commands mutate them.