Atlas

One source. Every screen.

Atlas is a headless CMS. Define the shape of your content once, then read it from anywhere you build.

A corporate site built on Atlas, shown at full width

Your content, finished.

Every word and image on this page came out of a content type somebody set up in a few minutes.

A full page built on Atlas, from the top of the page to the footer

Built once. Fits everywhere.

The same content, laid out for a desk, a lap and a pocket. You write it one time.

Phone
Tablet
Desktop

What you get.

Eight things. The three that can be shown are shown.

  1. Content types

    Name the fields once and every entry follows them.

  2. Entries

    Drafts, scheduling and publishing, with a record of who changed what.

  3. Media library

    Upload once, reuse anywhere, served straight from object storage.

  4. Pages

    Compose a page out of blocks without redeploying the frontend.

  5. Public API

    Read-only, scoped to a key, cached and built to sit in front of real traffic.

  6. TypeScript SDK

    Point the CLI at your workspace and it writes the interfaces for you, so a typo in a field name fails the build instead of the page.

  7. Agent access

    Install the plugin and a coding agent works in your workspace the way a teammate would: defining types, writing and publishing entries, uploading media, composing pages, and previewing a field change before it runs.

  8. Webhooks

    Tell your build or your cache the moment something changes.

  • Content types

    The field editor, where a type is named once.

    The field editor in Atlas, defining a News Article content type
  • Entries

    The same type from the other side, with status and edit times.

    A list of published entries in Atlas, with status and edit times
  • TypeScript SDK

    What the CLI writes from a type like that one.

    npx @latellu/atlas-cli generate --api-key=atlas_live_xxx --output=./srcsrc/atlas.types.ts
    // Generated by @latellu/atlas-cliexport type Locale = "en" | "ja"; /** Article (content type: "article") */export interface Article {  title: string;  category?: "News" | "Event";  published_at?: string;  cover_image?: string;} /** Maps each content-type slug to its entry interface. */export interface AtlasContentTypes {  "article": Article;}

One entry. Five languages.

Translations live on the entry itself, not in a second copy of your site. Ask for Japanese and you get Japanese, with a fallback for anything nobody has translated yet.

The same page of the inn in 日本語The same page of the inn in EnglishThe same page of the inn in Bahasa IndonesiaThe same page of the inn in FrançaisThe same page of the inn in Deutsch

箱根の風に吹かれて、心洗われる休日を。

Blown by the Hakone wind, a holiday that cleanses the soul.

Tertiup angin Hakone, liburan yang membersihkan jiwa.

Porté par le vent de Hakone, des vacances qui purifient l'âme.

Vom Wind Hakones umweht, ein Urlaub, der die Seele reinigt.

Start with one content type.

Open the dashboard and make your first one. It takes a few minutes.