apps/siteAstro
Your public website
Static pages, content, metadata, and responsive images.
The Forma frontend starter
An Astro website, a React Router app, and a FastAPI + Postgres backend. Start with the everyday product work connected, then make it your own.
Source you can change. Guides you can follow. Hosting you can choose.
Built with familiar tools.
All in one source repository.
Independent surfaces. One considered starting point.
apps/siteYour public website
Static pages, content, metadata, and responsive images.
apps/productYour product interface
Server rendering, loaders, actions, and native forms.
apps/apiYour backend logic
Protected operations, validated inputs, and clear API contracts.
SQL + migrationsYour durable data
Explicit queries, transactions, and database constraints.
What's included
Working examples for the things products need. Configure the integrations you choose, and build your own rules on top.
Provider sign-in, registration, recovery, profile settings, sessions, and account deletion with fresh identity verification.
Owner, admin, and member roles. Verified-email invitations, shared plans, and ownership transfer, with access checked on the server.
A Stripe subscription example with monthly and yearly plans, hosted Checkout, a customer portal, and verified payment events.
Queued welcome and invitation messages, a separate SMTP worker, retries, and a local mailbox to test the complete journey.
Shared CSS tokens, accessible native controls, and a component catalog. Public pages ship without client JavaScript.
Strict TypeScript and Python checks, unit tests, browser tests, accessibility checks, and generated API contracts checked for drift.
For you and your coding agent
Give the next person—or the agent working with you—a map of the decisions already made.
apps/Public site, product, and APIpackages/Shared design and contentextensions/Integrations you can selectdocs/Setup through deploymenttests/Behavior you can verifyAGENTS.mdYour agent's starting pointStart with a public page.
$ bun run setup --name "Acme"
$ bun run dev:siteUse the tool versions pinned in your release.
A portable foundation
The same product routes run on Cloudflare or Node. The API and Postgres stay on a conventional host.
Choose how you build
Buy the current source once, or subscribe independently for releases and support. Actual prices are shown in your buyer account before Stripe Checkout.
One-time purchase
For a clear starting point you can build on at your own pace.
Monthly or yearly subscription
For new source releases and support while your subscription is active.
Every release you acquire stays yours after cancellation. A subscription ending stops future release and support access; it does not remove releases you already acquired.
A full refund or payment dispute can remove downloads funded by that payment. Deleting your account removes its library access.
Current source license: MIT. Read what that means.
Yes. Monthly and yearly subscriptions are independent purchase options. A paid period includes the latest source release at its start, new releases during that paid period, and support during that period.
Every release you acquired stays in your library after cancellation. After your paid period ends, future releases and ongoing support require an active subscription. Full refunds, payment disputes, and account deletion can remove library access as described above.
Your buyer account shows the currently configured one-time, monthly, and yearly purchase options. Review the actual price there before continuing to Stripe Checkout.
See purchase optionsThe current starter uses the MIT License. Preserve its copyright and permission notice. Third-party dependencies retain their own licenses. Purchasing access does not replace those source permissions.
Read the licenseUse the Bun, Node.js, uv, and Python versions pinned in your release. The public site runs with local content. Database features use PostgreSQL; accounts, billing, and email need the providers you choose and configure.
Read the release notes, compare the source with your current starting version, and apply relevant changes on a branch. Run the included checks before merging into your customized application.
From the build notes
Clear service boundaries and useful repository context leave more room for the feature your customer actually needs.
Your next chapter