---
title: What you can build
description: A catalog of app ideas with copy-paste starter prompts — and which guides each one needs.
---

Every example below fits one of the two [templates](/get-started/templates) and
Outer's bindings. Copy a prompt, swap in your own idea, and tell your agent
which guides to read.

Building it? The agent reads Agents → [Quickstart](/agents/start-here/quickstart).

## Start here

**[Family dashboard](/frontend/interactive-pages)**

Links, birthdays, a dinner poll — static pages plus one form. Your agent reads: quickstart, Ilha.

> Build a family dashboard on Outer: links to everyone's school pages, a
> birthday list, and a Friday-dinner poll with three options. One page per
> section, daisyUI cards. Read the Outer quickstart and Ilha guides first.

## Data-backed apps

D1 is on by default. Pages read from it and forms write to it
([D1 guide](/backend/database)). KV fits sessions, counters, and flags
([Files and storage](/backend/files-storage)).

**[Sign-up sheet](/backend/database)**

Rows in D1, one form per slot. Your agent reads: quickstart, Ilha, D1.

**[Book club votes](/backend/database)**

Nominations plus a tally, seeded from a migration. Your agent reads: D1.

> Build a potluck sign-up sheet: 12 slots, each takes a name and a dish.
> Store it in D1 with a migration, seed the 12 empty slots. Read the Outer
> D1 guide first.

## Scheduled and background work

Cron wakes a sleeping app and runs your scheduled job ([Cron](/backend/scheduled-jobs)).
Queues fan out slow work like sending messages ([Queues](/backend/background-jobs)).

**[Morning digest](/backend/scheduled-jobs)**

A cron job emails the day's items every morning. Your agent reads: cron, email.

**[Welcome messages](/backend/background-jobs)**

A form enqueues a job; the queue consumer sends it. Your agent reads: queues.

> Every weekday at 7am, read the grocery table and email the open items to
> the family via Resend. Read the Outer cron and email guides first, and
> ask me for the Resend key before creating the app.

## Realtime

Chat rooms and live updates over WebSockets, one-way streams over SSE
([Realtime](/backend/realtime)). Both ride the same app. No extra services.

**[Family chat](/backend/realtime)**

One room per channel, names required to join. Your agent reads: websockets, auth.

**[Live scoreboard](/backend/realtime)**

Scores stream to every viewer without polling. Your agent reads: SSE.

> Build a family chat room: one room, nicknames, message history in D1.
> Read the Outer websockets guide first. No login yet — nicknames only, and
> keep it to non-private chatter: unlisted apps open for anyone with the
> link. Add sign-in ([User sign-in](/backend/user-sign-in)) before any private messages.

## Files and accounts

Uploads land in R2 ([Files and storage](/backend/files-storage)); sign-in for your app's own
users runs on your app's database ([User sign-in](/backend/user-sign-in)).

**[Photo wall](/backend/files-storage)**

Uploads in R2, thumbnails on the page. Your agent reads: storage.

**[Members area](/backend/user-sign-in)**

Email + Google sign-in for readers, public pages stay open. Your agent reads: auth, D1.

> Build a holiday photo wall: uploads go to R2, the front page shows the
> latest 20. Add a members page behind email sign-in. Read the Outer
> storage and auth guides first.

## Content sites

Prerendered pages on the `website` template ([Website](/frontend/websites)):
mostly static, with small interactive parts and a database only where a page needs data.

**[Portfolio + blog](/frontend/websites)**

Markdown posts, newest first, one island for the newsletter form. Your agent reads: quickstart, website.

**[Event page](/frontend/websites)**

Static schedule plus a D1-backed RSVP form. Your agent reads: website, D1.

> Build a portfolio site on Outer with the website template: a landing
> page, a Markdown blog, and a newsletter form that saves to D1. Read the
> Outer website guide first.

## Not yet

- **Code execution sandboxes** — not available.
- **AI in your app** (Workers AI, Vectorize) — not available; no binding key passes deploy validation.
- **Native email sending** — use Resend over HTTP ([Sending email](/backend/sending-email)).
- Native mobile apps, branches, and git push — out of scope ([Limits](/deploy/limits)).
