Components Web App
Developers build the blocks.
Editors build the website.

The low-code website builder for custom web apps. Editors build pages right on the live site from components your developers made, and everything stays on brand. A new component starts at a few lines of code.

Terminal
pnpm create cwa my-project

That feeling when
all the hard work is done for you

Build on the live page
Editors add, arrange and edit components on the real site, not in a form somewhere else. Developers decide what can go where, so every page looks right.
Everything is included
Sign-in, users, forms, image uploads, SEO, sitemaps, share images, drafts, real-time updates and a deploy pipeline come ready on day one. That's why it's low-code: most of it is already written.
Fast by default
Almost every visit is served straight from cache, and publishing clears only the pages that changed. Sites stay fast on small servers, and edits appear the moment they're published.
Yours to own
Free, open source and MIT licensed. Host it on your own servers, keep your own data, and never pay per seat or get locked in.

The missing link in
website builders

Traditional website builders take control and crucial decisions away from the professionals while increasing complexity for users.
  • Build the website you want
    No hacking another builder to fit. Developers build the components your site needs, custom to your users.
  • On brand, every time
    Styles are set up in advance to match your branding, so editors choose from your design instead of inventing a new one.
  • New pages fit right in
    The right balance of freedom and guardrails means every new page looks like it belongs.
The missing link in<br><span class="text-primary-400">website builders</span>

A real editorial workflow,
included

The tools content teams usually pay extra for come with every site.
  • Draft, refine, publish
    Every change is a private draft until it's ready to go live.
  • Schedule it
    Choose when new content goes live, and it publishes itself.
  • Edit once, update everywhere
    Put one component on as many pages as you like, and change it in one place.
  • Work together, live
    Editors see each other's changes as they happen, and visitors are told the moment a page they're reading has changed.
A real editorial workflow,<br><span class="text-primary-400">included</span>

Supercharge your
business

The CWA reduces your team's workload and increases productivity.
  • For Agencies
    One predictable structure across every client site, so each new project starts further ahead and your clients are impressed.
  • For Developers
    Low-code components on frameworks you already enjoy, with advanced features in a few lines and you staying in control.
  • For Web Admins
    Updating the website or creating new pages is as easy as clicking on the page and typing.
Supercharge your<br><span class="text-primary-400">business</span>

Built on the
shoulders of giants

The CWA is built on the shoulders of giants, on the latest version of each, for maximum flexibility and extensibility.
  • The latest of everything
    Symfony 8, API Platform 5 and Nuxt 4, served by FrankenPHP. Years of support ahead, current security fixes, and no legacy code to fight.
  • Symfony bundle with API Platform
    An incredibly powerful and well maintained framework. Extend API Platform and Symfony functionality for services such as SAML authentication protocols or API proxies.
  • Front-end Nuxt module
    Nuxt and Vue are among the most enjoyable front-end frameworks to use. Our CWA Nuxt module provides easy to use composables along with a full management system.
Built on the<br><span class="text-primary-400">shoulders of giants</span>

How CWA compares

Five ways CWA differs from the tools teams usually weigh it against. The full table says why for every mark.
FeatureCWAWordPressStoryblokSanityPayloadWebflow
Editors work on the live page of your own front endYes: On the live site, in edit modePartly: In the block editor, styled like your theme; not for a separate front endPartly: Your site in a preview frame inside Storyblok; click a block to edit itPartly: Preview frame in Studio; overlays on your site open Studio to editPartly: Preview frame in the admin; a visual editor is coming for EnterprisePartly: On the live page, but only for sites built in Webflow
Publishing clears only the pages that changed, out to the CDNYes: Built in, by cache tag; Cloudflare's edge needs an API tokenNo: Left to caching plugins or your hostNo: Its API cache updates; your site's cache is webhooks you writePartly: Automatic on the Next.js App Router; elsewhere webhooks you writeNo: Its website template calls Next.js revalidation; the rest is yoursYes: Managed, on Webflow's own hosting
Drafts and scheduled publishing on the free versionYes: Drafts per component; scheduling for components and pagesYes: Drafts and scheduled posts in corePaid plan: Drafts free; scheduling on paid plansPaid plan: Drafts free; scheduled drafts on paid plansYes: Drafts and scheduling; scheduling needs a jobs runnerPaid plan: Scheduling on the CMS plans
Open source and self-hostedYes: MIT, on your own serversYes: GPLv2 or laterNo: Hosted servicePartly: The Studio is MIT; your content is hosted by SanityYes: MITNo: Hosted service
Sign-in, forms, image variants, SEO and deployment includedYes: All of them, with a deploy pipeline for Docker or KubernetesPartly: Users and image sizes in core; forms, SEO and caching are pluginsPartly: An image service; no visitor sign-in, forms or hostingPartly: An image pipeline; no visitor sign-in or formsPartly: Sign-in, image sizes, and form and SEO plugins; deployment is yoursPartly: Hosting, forms and SEO; member sign-in ended in January 2026
  • Yes
  • Partly
  • No
  • Paid plan
How CWA Compares, with all 8 products

Accurate as of October 2026.

Simply build individual UI components;
we do the rest

With our API built on top of API Platform and Symfony, it is incredibly simple to setup a component.

We provide helpful traits and attributes to quickly add advanced functionality such as draft/live components or handling file uploads.

api/src/Entity/Title.php
<?php

namespace App\Entity;

use ApiPlatform\Metadata\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Silverback\ApiComponentsBundle\Annotation as Silverback;
use Silverback\ApiComponentsBundle\Entity\Core\AbstractComponent;
use Silverback\ApiComponentsBundle\Entity\Utility\PublishableTrait;
use Symfony\Component\Validator\Constraints as Assert;

#[Silverback\Publishable]
#[ApiResource(mercure: true)]
#[ORM\Entity]
class Title extends AbstractComponent
{
  use PublishableTrait;

  #[Assert\NotBlank(groups: ['Title:published'])]
  #[ORM\Column(type: 'text', nullable: true)]
  public ?string $title = null;
}

With help from our amazing community

silverbackdanvincentchalamonp1pchenk0soyukalingxiankongdarkweakPierreRebeilleaupborrelimaxheliaschalasrSmoothengineerbofalke

Special thanks to our sponsors

Silverback Web Apps