Browse documentation
Documentation
How to set up Emberstack, build your SaaS on Cloudflare Workers and D1, and ship it. New here? Start with the quick start.
Get started
What Emberstack is, how to run it locally and how it's laid out.
Build your app
Database, auth and teams, app features, email and payments.
Database
Define tables with Drizzle, generate D1 migrations and query data scoped to a team.
Auth and teams
How sign-in, sessions, teams, roles and invitations work with Better Auth.
Building app features
Add a page under /app with server-rendered partials, Datastar interactivity and activity logging.
Send transactional email with Cloudflare Email Sending, or switch to another provider.
Payments
Connect Stripe products to the pricing page, handle subscriptions and gate paid features.
Workers AI
Call AI models from your app through the AI binding.
Site and content
The CMS, marketing blocks, branding and analytics.
The CMS
Manage the marketing site, blog and docs in EmDash, and keep the seed in step.
Marketing blocks
Build pages from the hero, features, pricing and other blocks, and add your own.
Branding and themes
Change the name, logo, colors and email sender, on both the public site and the app.
Analytics
Add an analytics script to every page without touching the layouts.
Deploy and maintain
Cloudflare setup, configuration, going live and staying current.
Cloudflare setup
Create the D1 databases, R2 bucket and KV namespace for your own copy and wire them up.
Configuration
Where variables and secrets live, locally and in production, and how code reads them.
Going to production
Set secrets, migrate the database, deploy the Worker and finish setup in the CMS and Stripe.
Managing updates
Keep dependencies and EmDash current, and pull in starter improvements when you need them.