# Uniweb ## Pages - [Agents build it. Uniweb runs it. You can edit it too.](https://uniweb.io/index.md): Uniweb is an open-source framework for building websites with an AI agent. Your agent builds the site, Uniweb hosts it, and you can edit it yourself. It can start with a few pages and grow into a full platform. - [For developers](https://uniweb.io/developers.md): How a Uniweb project works: Markdown parsed into typed content, thin section types over ordinary React, meta.js as the interface, and commands that check it. - [Blog](https://uniweb.io/blog.md): Writing on web architecture, from the team behind Uniweb. - [Privacy Policy](https://uniweb.io/privacy.md): What uniweb.io measures when you visit, what it keeps in your browser, what it sends to others, and how to reach us about it. ## Getting Started - [What is Uniweb](https://uniweb.io/docs/getting-started/what-is-uniweb.md): Uniweb is an open-source framework for building websites with an AI agent. Your agent builds the site, Uniweb hosting runs it, and you and the people you work with can edit it in a visual app. - [Why Uniweb](https://uniweb.io/docs/getting-started/why-uniweb.md): A Uniweb site can start as a few pages and grow into a full platform, with more languages, editors, live content, members and payments, without plugins and without redoing what was built. - [Quickstart](https://uniweb.io/docs/getting-started/quickstart.md): Start a Uniweb site by giving your AI agent one prompt: it builds the site with you and takes it live when you're ready. Developers can also create the project themselves, in a few commands. - [Templates](https://uniweb.io/docs/getting-started/templates.md): A template is a working site to start from: its pages, the section types that draw them, and sample content that your agent replaces with yours. Name one when you start, or begin with the default. - [About This Documentation](https://uniweb.io/docs/getting-started/about-this-docs.md): This documentation site is built with Uniweb. That might sound obvious, but the way it's built demonstrates several patterns worth understanding — patterns you can apply to your own projects. ## Authoring - [Setting Up Your Site](https://uniweb.io/docs/authoring/site-setup.md): This guide walks you through configuring your Uniweb site — naming it, organizing pages, adding languages, enabling search, and deploying to different environments. - [Writing Content for Your Uniweb Site](https://uniweb.io/docs/authoring/writing-content.md): This guide walks you through writing content for a Uniweb site. No coding experience required — if you can write a text file, you can author content. - [Working with Records](https://uniweb.io/docs/authoring/collections.md): Records let you manage repeating content — blog posts, team members, products, case studies, bibliographic references — as a set of files (markdown, YAML, JSON, or BibTeX). - [Theming Your Uniweb Site](https://uniweb.io/docs/authoring/theming.md): This guide shows you how to customize your site's visual identity — colors, fonts, dark mode, and more. Everything happens in one file: theme.yml. - [Linking](https://uniweb.io/docs/authoring/linking.md): A robust linking system that survives content reorganization and works seamlessly in single-page applications. - [Site Search](https://uniweb.io/docs/authoring/search.md): Uniweb sites have built-in full-text search. By default it runs entirely in the browser against an index generated at build time — no server, no service, no crawler. - [Content Recipes](https://uniweb.io/docs/authoring/recipes.md): Copy-paste solutions for common content patterns. Each recipe shows the markdown you write and notes on key points. - [Translating Your Site](https://uniweb.io/docs/authoring/translating.md): This guide walks you through making your Uniweb site available in multiple languages. - [Predicates and Saved Views](https://uniweb.io/docs/authoring/predicates.md): When you want only some records — only featured articles, only members from one department, only events after a date — you write a predicate in a where: field: on a query in queries.yml, to decide… ## Development - [Building with Uniweb](https://uniweb.io/docs/development/building-with-uniweb.md): You know how to build a React app. You pick a bundler (Vite), write components, set up routes, and wire everything together. - [Thinking in Contexts](https://uniweb.io/docs/development/thinking-in-contexts.md): Most frameworks give you a dark mode toggle. Flip it, and the entire page switches between light and dark. It works — until your page has more than one visual mood. - [Creating Components](https://uniweb.io/docs/development/creating-components.md): Build custom components for your foundation. - [Receiving Content](https://uniweb.io/docs/development/receiving-content.md): When you write a section type, the content prop arrives already parsed: the author's markdown has been read into named pieces — title, pretitle, subtitle, body fields, items — before your component… - [CCA Component Patterns](https://uniweb.io/docs/development/component-patterns.md): CCA components tend to be shorter, more reusable, and more composable than their traditional React equivalents. - [Component Data Patterns](https://uniweb.io/docs/development/component-data-patterns.md): Uniweb supports two different ways a component ends up with data. They look similar from a distance but answer different questions about who knows what: - [Working with Data](https://uniweb.io/docs/development/working-with-data.md): Your components need data — articles, team members, products. In a typical React app you'd write a useEffect, manage loading state, handle errors and work out caching yourself. - [Data Schemas](https://uniweb.io/docs/development/data-schemas.md): A data schema is the shape of a content type — what fields a person has, what a product looks like. - [Schemas in Practice](https://uniweb.io/docs/development/schemas-in-practice.md): Data Schemas covers how to write a schema — fields, types, sections. - [Libraries: Code Several Foundations Share](https://uniweb.io/docs/development/libraries.md): When two foundations need the same pricing card, the same sign-up form or the same footer, a copy in each means every fix is made twice, and the copies drift apart the first time someone forgets. - [Data Sources](https://uniweb.io/docs/development/data-sources.md): Most Uniweb sites start with records in records/, named by queries in queries.yml. - [Receiving Form Submissions](https://uniweb.io/docs/development/receiving-form-submissions.md): A content author can describe a form in markdown — a yaml:form data block, or whatever shape your section type reads. Drawing it is your foundation's job. - [Content Handlers](https://uniweb.io/docs/development/content-handlers.md): Content handlers are a transform layer between data assembly and your component. They run per section, declared once in main.js, and let you reshape content before the component sees it. - [Data-Driven Sections](https://uniweb.io/docs/development/data-driven-sections.md): A data-driven section is a section whose content comes from data — records in YAML or JSON, an API's response — and is instantiated via Loom expressions. - [Custom Layouts](https://uniweb.io/docs/development/custom-layouts.md): The Layout component is the frame around your content. It controls where the header sits, whether there's a sidebar, how the footer is placed, and how all of that adapts on mobile. - [View Transitions](https://uniweb.io/docs/development/view-transitions.md): Uniweb animates page navigation with smooth crossfades using the browser's native View Transitions API. - [Foundation Categories](https://uniweb.io/docs/development/foundation-categories.md): Every Uniweb foundation is a Vite library project that builds to entry.js. But foundations vary in how much they know about the site they serve. - [Internationalization (i18n)](https://uniweb.io/docs/development/internationalization.md): Build multi-language sites with language-aware routing and localized content. - [Extending Your Site](https://uniweb.io/docs/development/extending-your-site.md): Your site is a Vite app. That means the entire Vite plugin ecosystem is available to you — PWA support, sitemaps, image optimization, bundle analysis, and anything else the community has built. - [Converting Existing Designs](https://uniweb.io/docs/development/converting-existing.md): You have a React file — maybe AI-generated, maybe hand-built, maybe inherited from a project. It renders a full page: nav, hero, features, testimonials, footer. - [Template Tour](https://uniweb.io/docs/development/template-tour.md): The official templates aren't just starter projects — they're worked examples of CCA conventions, each adopting a different mix. This guide maps what's where so you can find the pattern you need. - [Deploying to GitHub Pages](https://uniweb.io/docs/development/deploy-github-pages.md): GitHub Pages is the lowest-friction way to put a Uniweb site on the public web for free. - [Deploying](https://uniweb.io/docs/development/deploying.md): We recommend Uniweb hosting, with uniweb publish. - [Designing Data Schemas](https://uniweb.io/docs/development/designing-data-schemas.md): A data schema defines a content type — the shape of a thing your project is about. A course. A lesson. An instructor. - [Theming and Color Migration](https://uniweb.io/docs/development/migrating-colors.md): This is the complete reference for Uniweb's theming system and for translating color systems from existing React projects. - [Project Structures](https://uniweb.io/docs/development/project-structures.md): A Uniweb project is a pnpm workspace. Building with Uniweb introduces the two-package setup — foundation and site, side by side. That's the starting point for most projects. - [Registering a Foundation](https://uniweb.io/docs/development/publishing-and-clients.md): This page covers catalog registration — making a foundation available as a product that other developers can use across their sites. - [Redirects and Subsites](https://uniweb.io/docs/development/redirects-and-subsites.md): Not every route in a site serves content. Some routes redirect to another page — a parent category that sends you to its first child, or a legacy URL that points to a new location. - [Sites with Accounts](https://uniweb.io/docs/development/sites-with-accounts.md): Some sites are read by everyone and edited by their author. Others have members — people who sign in, have something of their own, and create content the site shows back to them. - [Theming Architecture](https://uniweb.io/docs/development/theming-architecture.md): Internal reference for the Uniweb theming system. Covers the two-axis model (context × scheme), the Auto context, a section's own theme, and how it reaches the page. ## Marketing - [Measuring Visits](https://uniweb.io/docs/marketing/measuring-visits.md): You want to know which pages help, where visitors come from, and whether the ones a campaign brings stay to read. - [Conversions and Engagements](https://uniweb.io/docs/marketing/conversions.md): Page views say what visitors read. A conversion says one of them did what the site is there for: signed up, booked a call, asked for a quote, copied the install command. - [Advertising](https://uniweb.io/docs/marketing/advertising.md): An ad platform decides who sees your ad, and it learns from what you tell it. ## Reference - [Site Configuration](https://uniweb.io/docs/reference/site-configuration.md): The site.yml file in your site root defines global settings, page ordering, language support, and feature toggles. - [Page Configuration](https://uniweb.io/docs/reference/page-configuration.md): The page.yml file in each page folder defines metadata, layout options, SEO settings, and data sources for that page. - [Content Structure](https://uniweb.io/docs/reference/content-structure.md): This guide explains how markdown content is parsed and delivered to your components. - [Foundation Configuration](https://uniweb.io/docs/reference/foundation-config.md): The main.js file at the foundation package's source root defines customizable CSS variables and configuration for your foundation. Layout components live in src/layouts/ and are auto-discovered. - [Component Metadata Guide](https://uniweb.io/docs/reference/component-metadata.md): This guide explains how to write meta.js files for Uniweb components. - [Kit & Core Reference](https://uniweb.io/docs/reference/kit-reference.md): @uniweb/kit is the developer-facing API for Uniweb foundations. It provides React hooks for accessing site context, primitive components (Link, Image, Icon), and utility functions. - [Site Theming](https://uniweb.io/docs/reference/site-theming.md): Customize your site's colors, typography, and appearance through a theme.yml file. The theming system generates CSS custom properties at build time, enabling consistent branding across all components. - [Records](https://uniweb.io/docs/reference/content-collections.md): Blog posts, team members, schedules, references — any repeating structured content — are records: one file each in records/, reached by a query. - [Queries](https://uniweb.io/docs/reference/queries.md): A query is a named question over the site's records — or over a public JSON endpoint. Pages and sections never read a file or a URL: they name a query, and the query says what it selects. - [Data Fetching](https://uniweb.io/docs/reference/data-fetching.md): Pages and sections get their data by naming a query. - [Parametric Pages](https://uniweb.io/docs/reference/dynamic-routes.md): One page, many URLs — one per record. Blogs, product catalogs, team directories, anything where each record needs its own URL. - [Navigation Patterns](https://uniweb.io/docs/reference/navigation-patterns.md): This guide covers patterns for building navigation components—navbars, sidebars, menus, and other hierarchical link structures. - [Layout Areas](https://uniweb.io/docs/reference/layout-areas.md): Layout areas render on every page. They provide site-wide navigation, branding, and persistent UI elements like sidebars. - [Documentation Versioning](https://uniweb.io/docs/reference/versioning.md): Keep the docs for an older release available beside the current ones. - [CLI Commands Reference](https://uniweb.io/docs/reference/cli-commands.md): The Uniweb CLI (uniweb) scaffolds projects, builds foundations and sites, generates documentation, diagnoses issues, and manages translations. - [AGENTS.md and the Guides](https://uniweb.io/docs/reference/agent-guides.md): Every Uniweb project has an AGENTS.md at its root: the manual for that project and its version of Uniweb, for developers and for AI agents. - [Framework Versions](https://uniweb.io/docs/reference/framework-versions.md): How Uniweb's own packages are numbered — the uniweb CLI and the @uniweb/* packages your project depends on — and how your project moves from one version to the next. - [Deployment Reference](https://uniweb.io/docs/reference/deployment.md): Per-host recipes for deploying Uniweb sites — Vercel, Netlify, Cloudflare Pages, GitHub Pages, S3 + CloudFront, and self-hosted servers. - [AWS S3 + CloudFront — one-time setup](https://uniweb.io/docs/reference/aws-s3-cloudfront-setup.md): This page walks through provisioning the AWS resources that uniweb deploy --host=s3-cloudfront expects. You only do this once per site. After it's done, every deploy is uniweb deploy and that's it. - [Blueprint](https://uniweb.io/docs/reference/blueprint.md): blueprint.yml sits beside site.yml in a site that has its own backend, the backend service. - [Entity Content Structure](https://uniweb.io/docs/reference/entity-content.md): The structure every content record — a blog post, a document, any content-as-data artifact — follows: how you write one in a file (YAML, JSON, Markdown frontmatter, BibTeX), and the shape your… - [Glossary](https://uniweb.io/docs/reference/glossary.md): Quick reference for Uniweb terminology. Each entry links to the page where the concept is explained in detail. - [Site Services](https://uniweb.io/docs/reference/site-services.md): A service is a named slot for an address your site does not hardcode. Search, form submissions, analytics, accounts — each is a name, and whoever runs the site says where that name answers. ## Architecture - [Component Content Architecture](https://uniweb.io/docs/architecture/component-content-architecture.md): Uniweb is built on a pattern called the Component Content Architecture (CCA). This page explains the idea — what it is, why it works, and how its principles show up across the framework. - [Data Schemas as Contracts](https://uniweb.io/docs/architecture/data-schemas-as-contracts.md): Component Content Architecture separates content from components (see Component Content Architecture). - [Data Fetcher Architecture](https://uniweb.io/docs/architecture/data-fetcher-architecture.md): How Uniweb's data-fetching layer works end to end — dispatcher, default fetcher, cache keys, placeholder substitution, delivery paths, gotchas. For the "how to use it" view, see Data Sources. - [CCA as a Translation Architecture](https://uniweb.io/docs/architecture/cca-translation-architecture.md): The Content-Component Architecture is often described as a separation of content and code. That's accurate but incomplete. - [Extensions and the Portability Paradox](https://uniweb.io/docs/architecture/extensions-architecture.md): A portable foundation is valuable because it's general-purpose. A marketing foundation that handles hero sections, feature grids, CTAs, and testimonials can serve dozens of sites.