Website and help center
Your users need three things outside the extension: a page that says what
it is, answers when they’re stuck, and the privacy policy the Chrome Web
Store requires. The site template (apps/site) ships all of them, plus
the welcome page every install opens.
The site template
Section titled “The site template”A static Astro site on the same design tokens and fonts as the extension,
rebranded from apps/site/src/site.ts:
| Page | What it is |
|---|---|
/ | the landing page, with the install button |
/help/ | the help center (below) |
/privacy/ | the privacy policy template your store listing links |
/terms/ | terms of service |
/changelog/ | release notes |
/welcome/ | the first-run tour every install opens (details) |
/pay | Paddle only: the checkout page Paddle opens (details) |
The wizard gives the site your extension’s name, and its Firebase step
fills in the address. Set supportEmail in apps/site/src/site.ts, and
replace every highlighted [FILL IN] before you publish your extension.
On Firebase, the site is already live: the wizard’s Firebase step
deploys it to your project’s Hosting at https://<project-id>.web.app,
next to the checkout return and uninstall pages, and every
pnpm firebase:deploy redeploys it. To deploy only the site, from
backend/firebase-hosting: firebase deploy --only hosting. Connect
your own domain in the Firebase console (Hosting → Add custom domain),
then point url in apps/site/src/site.ts and the urls in
apps/extension/site.config.ts at it. On Supabase, deploy apps/site/dist to any static host.
The landing page
Section titled “The landing page”The landing page shows your extension at work. Your first store screenshot sits in the hero, inside a drawn browser window with your icon pinned in the toolbar. Below it: three setup steps, feature rows, plans, reviews, FAQ, and a closing band with the install button.
Every section reads from apps/site/src/site.ts. It ships with sample
copy for an AI side-panel assistant; the setup wizard writes only your
name and one-line description into it. Replace the rest with yours,
section by section, and put your Chrome Web Store screenshots in
apps/site/public/screenshots/. crop on each feature row picks the
part of a screenshot in view. The first step’s picture is Chrome’s
install prompt: steps.installWarning is the line it shows for your
extension’s access to websites, cleared by the wizard when the on-page
demo goes. Before the store submission, the prep-store-submission
recipe reads the whole page against your product.
Nothing on the page claims numbers you don’t have. The rating, rating
count, and user count stay hidden until you fill them in, and so does the
reviews section. An empty plans list hides pricing. Type your plan
amounts by hand and keep them in sync with your payment provider: the
extension’s plan picker shows live prices, and this static page can’t.
The install button links to urls.chromeWebStore and says “Coming soon”
until you set it. It adapts to the visitor’s browser:
| Visitor | Button |
|---|---|
| Chrome, Brave, Arc, Opera | Add to Chrome |
| Edge | Add to Edge: your urls.edgeAddons listing, or the Chrome Web Store |
| Firefox | Add to Firefox, when urls.firefoxAddons is set |
| Phone or tablet | Send to my computer: opens the share sheet with your site’s address |
The help center
Section titled “The help center”/help/ lists the Markdown articles in apps/site/src/content/help/.
Five starters describe what the kit does out of the box: getting started,
your account, plans and billing, privacy and your data, troubleshooting.
Edit them, delete what your extension doesn’t have, and add an article by
adding a file; order in its frontmatter sorts the list.
The extension links here: the account menu’s “Help & support” opens
urls.docs in apps/extension/site.config.ts, which the wizard’s
Firebase step sets to https://<your-site>/help/. The sign-in form links
urls.privacy (/privacy/), and every install opens urls.welcome
(/welcome/). On Supabase, set all three by hand. Empty values hide the
link, and /prep-store-submission flags any kit address left, so the
extension never points at someone else’s site. To send “Help & support”
to full product docs elsewhere, set urls.docs to their address.