Official CaretCMS demo theme showing the complete way to connect an Astro site to CaretCMS
sterling-district — Astro Ecommerce Template
By web-stacked
Sterling District is the official CaretCMS demo theme, built with Astro for a jewelry e-commerce storefront, with content stored in Cloudflare KV, media in R2, and inline editing plus a Studio admin.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Content is defined by Zod schemas in src/content-schema.ts and can be edited in the Studio at /admin/cms
Content is stored in Cloudflare KV (CMS_KV), and media is uploaded to R2 (CMS_R2)
Templates support inline editing through data-caret attributes generated by caretize
Includes seed pages, a product catalog with details, FAQ, testimonials, and global site settings
Frontend is server-rendered with Tailwind CSS 4 and can be deployed to Cloudflare Workers
Template Details
Sterling District is the official CaretCMS demo theme, used to demonstrate how CaretCMS integrates end-to-end with an Astro site. The theme targets jewelry e-commerce scenarios and includes seed pages (home, collections, luxury, services, contact), a product catalog with detail pages, FAQ, customer testimonials, and global site settings. The content structure is defined by Zod schemas in src/content-schema.ts and can be edited in the Studio at /admin/cms; frontend pages are server-rendered with Tailwind CSS 4, content is stored in Cloudflare KV (CMS_KV), media is uploaded to R2 (CMS_R2), and templates connect to inline editing through data-caret attributes generated by caretize.
In terms of usage, it can serve as a starting point for a CaretCMS + Cloudflare site: clone it, replace the seed content, then deploy to Cloudflare Workers. Local development requires Node 20+ and npm; after running npm run dev, visit /admin; if CARET_EDIT_PASSWORD is not set, the development password is printed in the terminal. Environment variables must be written to both .env (read by Astro) and .dev.vars (read by Wrangler), including CARET_EDIT_PASSWORD, CARET_SESSION_SECRET, R2_PUBLIC_DOMAIN, and the optional PUBLIC_CONTACT_FORM_ENDPOINT (when not configured, the contact form is UI only). Before deployment, create a KV namespace and an R2 bucket, copy wrangler.production.toml.example and fill in the KV id and R2 bucket name, then run npm run deploy:production; editor authentication is set on the Cloudflare side via wrangler secret.
Limitations to note: the peer dependency range of @caretcms/core is Astro 5/6, while this theme uses Astro 7, so legacy-peer-deps=true is set in .npmrc; astro build may emit warnings about provider exports from @caretcms/cloudflare 0.1.x, and these exports are resolved at runtime. The repository uses the MIT license, and the free scope is the code in this version; third-party assets such as demo images, fonts, and icons, as well as external services such as domains, hosting, databases, payments, or AI, require separate license and cost verification.
Is it right for your project?
Use Cases
- Use as a starting template for a CaretCMS + Cloudflare site, replacing seed content to build your own storefront
- Demonstrate how an Astro project defines content with Zod schemas and edits it in the Studio
- Demonstrate a Cloudflare deployment structure with content in KV and media in R2
- Serve as a reference implementation for jewelry e-commerce pages (home, collections, product details, services, contact)
Suitable For
- Developers who need an example combining CaretCMS with Cloudflare Workers
- Teams preparing to build a content-editable e-commerce site with Astro
- Astro projects looking for a reference on Zod schemas and inline editing integration
- Developers who need a reference for jewelry e-commerce page structure
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node 20+ and npm; locally, run npm install then npm run dev, and visit /admin
- 2
Copy .env.example to .env and .dev.vars, and fill in the same values in both: CARET_EDIT_PASSWORD, CARET_SESSION_SECRET, R2_PUBLIC_DOMAIN, and the optional PUBLIC_CONTACT_FORM_ENDPOINT
- 3
If CARET_EDIT_PASSWORD is not set, the development password is printed in the terminal
- 4
Before deployment, create a KV namespace and an R2 bucket, copy wrangler.production.toml.example and fill in the KV id and R2 bucket name, then run npm run deploy:production
- 5
After modifying templates, run npm run caretize to rebind the data-caret attributes
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code in this version and does not mean external services or third-party assets are free.
Must comply with when using
- You may use, modify, commercialize, and distribute the code in this version for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
- This theme uses Astro 7, but the peer dependency range of @caretcms/core is only Astro 5/6, so legacy-peer-deps=true is set in .npmrc to bypass peer dependency conflicts.
- During build, astro build may emit warnings about provider exports from @caretcms/cloudflare 0.1.x, and these exports are resolved only at runtime.
- PUBLIC_CONTACT_FORM_ENDPOINT is an optional environment variable; when not configured, the contact form is UI only and will not actually submit.
- Deployment requires a Cloudflare account and the creation of a KV namespace and an R2 bucket, which are external service dependencies.
- Editor authentication must be set on the Cloudflare side via wrangler secret, not configured in GitHub Actions.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
`@caretcms/core` peer range is Astro 5/6 — this theme uses Astro 7; `.npmrc` sets `legacy-peer-deps=true`
Original README
`astro build` may warn on `@caretcms/cloudflare` 0.1.x provider exports — they resolve at runtime
Original README
`PUBLIC_CONTACT_FORM_ENDPOINT` — optional; form is UI-only without it
Original README
Cloudflare account for deploy.
Original README
https://github.com/web-stacked/sterling-district/blob/main/LICENSEhttps://github.com/web-stacked/sterling-district/blob/main/README.mdSet editor auth once in Cloudflare (not in GitHub Actions):
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-12. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 80 / 100
- Technologies
- Astro
- Website type
- E-commerce
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-06-26
- Screenshot last checked
- 2026-10-12
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-13
Inspect the recorded source material
SHA-256: db6cdbaff6fd80c229486431d0d2959192e62fbaedeb9a35c22555d2aea9caee
2026-10-12T22:26:37.414Z
Source file / repository# Sterling District CaretCMS starter theme — Astro 7 storefront on Cloudflare Workers with inline editing, Studio, and Zod schemas. Sterling District is a production-ready jewelry storefront built to show how CaretCMS fits an Astro site end to end. The theme ships with seeded pages (home, collections, luxury, services, contact), a product catalog with detail views, FAQs, testimonials, and global site settings — all typed from Zod schemas in `src/content-schema.ts` and editable in Studio at `/admin/cms`. On the front end, pages are server-rendered with Tailwind CSS 4; on the back end, content lives in Cloudflare KV, media uploads go to R2, and templates are wired for inline editing via `data-caret` attributes from `caretize`. Clone it as a starting point for your own CaretCMS + Cloudflare site, swap the seed content, and deploy to Workers. | | | | --- | --- | | Inline editing | `/admin` | | Studio | `/admin/cms` | | Schemas | `src/content-schema.ts` | | Storage | KV (`CMS_KV`) + R2 (`CMS_R2`) | | Templates | `data-caret` from `caretize --all` | [`@caretcms/core`](https://www.npmjs.com/package/@caretcms/core) · [`@caretcms/cloudflare`](https://www.npmjs.com/package/@caretcms/cloudflare) · [`@caretcms/zod`](https://www.npmjs.com/package/@caretcms/zod) · [`@caretcms/caretize`](https://www.npmjs.com/package/@caretcms/caretize) Node 20+, npm. Cloudflare account for deploy. ## Local ```sh npm install npm run dev ``` Open `/admin`. Without `CARET_EDIT_PASSWORD`, the dev password prints in the terminal. ```sh cp .env.example .env cp .env.example .dev.vars ``` Same values in both — Astro reads `.env`, Wrangler reads `.dev.vars`: - `CARET_EDIT_PASSWORD` - `CARET_SESSION_SECRET` — `openssl rand -base64 32` - `R2_PUBLIC_DOMAIN` - `PUBLIC_CONTACT_FORM_ENDPOINT` — optional; form is UI-only without it Preview on the Workers runtime: `npm run preview:cf` ## Deploy ```sh npx wrangler kv namespace create CMS_KV npx wrangler r2 bucket create sterling-district-uploads cp wrangler.production.toml.example wrangler.production.toml # fill KV id + R2 bucket npm run deploy:production ``` Set editor auth once in Cloudflare (not in GitHub Actions): ```sh npx wrangler secret put CARET_EDIT_PASSWORD npx wrangler secret put CARET_SESSION_SECRET ``` ### CI Pushes to `main` → [`.github/workflows/deploy.yml`](.github/workflows/deploy.yml) | Name | Type | | --- | --- | | `CLOUDFLARE_API_TOKEN` | Secret — [Edit Cloudflare Workers](https://dash.cloudflare.com/profile/api-tokens) template | | `CLOUDFLARE_ACCOUNT_ID` | Secret | | `CF_KV_NAMESPACE_ID` | Variable | | `CF_R2_BUCKET_NAME` | Variable | ## Content Seeds in `src/content/seeds`. Schemas in `src/content-schema.ts`. Mirror in `.caret/data` for bundled Worker fallback before KV has data. After template changes: `npm run caretize` ## Scripts | Command | | | --- | --- | | `npm run dev` | Dev server | | `npm run build` | Production build | | `npm run preview` | Local preview | | `npm run preview:cf` | Workers runtime preview | | `npm run deploy:production` | Deploy with `wrangler.production.toml` | | `npm run caretize` | Re-bind `data-caret` attributes | ## Gotchas - `@caretcms/core` peer range is Astro 5/6 — this theme uses Astro 7; `.npmrc` sets `legacy-peer-deps=true` - `astro build` may warn on `@caretcms/cloudflare` 0.1.x provider exports — they resolve at runtime ## License MIT
Explore similar templates
Compare previews and descriptions within the same stack and category.

astro-shopify
A lightweight Shopify headless ecommerce starter template built with Astro and Svelte, integrating the Shopify Storefront API for product and inventory data, with built-in cart state management and basic add-to-cart and checkout flow.
Astro · E-commerce

astro-ecommerce
Astro Ecommerce is a Creative Tim e-commerce Astro starter template under the MIT license, with 70+ coded elements, 30+ blocks, and landing, product, and shopping cart example pages.
Astro · E-commerce

astro-medusa-starter
An open-source e-commerce storefront starter built on Astro and Medusa v2, using a static-first architecture with React islands, multi-region routing, Stripe checkout, and Cloudflare Workers deployment.
Astro · E-commerce

sanity-astro-club
An Astro template for showcasing and selling digital works, with content managed through an extensible Sanity Studio and checkout sessions generated via the Polar API.
Astro · E-commerce

atelier-ko
Atelier Kō is a minimalist Astro ecommerce theme for small furniture workshops and craft catalogs with a limited body of work.
Astro · E-commerce

starter-astro
An Astro e-commerce storefront starter template that separates content from transactions: Markdown content collections manage pages, copy, and product images, generating static HTML at build time, while WireGum components handle live pricing, variants, cart, and Stripe Checkout.
Astro · E-commerce
