Scaffolded layout
What you get after create-propeller-shop my-shop:
my-shop/
frontend/ # ← the runnable shop
propeller.json # ← the shop manifest, read by `propeller doctor`
package.json
.env.example
.env.local # ← gitignored; fill in
README.md
next.config.ts # (Next) or vite.config.ts (Vue)
app/ # (Next)
src/ # (Vue)
components/ # (Next)
public/ # (Next)
…
cms/ # ← CMS install lives here
README.md # per-adapter install instructions
No public_html/. That segment was a cPanel-era holdover and was
dropped in 0.3.2.
frontend/
The runnable shop. Everything you'd commit and deploy.
propeller.jsonis the shop manifest — see propeller.json schema.propeller doctorresolves it from./or./frontend/.package.jsonpins the major Propeller UI packages at the version the CLI was at scaffold time. No^ranges — reproducibility is the rule for now..env.examplelists every env var the shop reads..env.localis gitignored; copy.env.exampleto.env.localand fill in the values before the firstnpm run dev.
cms/
The companion CMS install. Not wired by the CLI — you install the
CMS (Strapi / Propeller CMS / something custom) yourself in this
folder. The CLI writes a cms/README.md with per-adapter instructions:
- For
--cms=strapi:npx create-strapi-app@latest .and the env-var list the frontend expects. - For
--cms=cms: link to the Propeller CMS install guide. - For
--cms=none: instructions for adding a CMS later.
The CMS folder is a sibling of frontend/ so the shop can deploy both
behind one origin without subdirectory routing — a typical layout
proxies /admin and /api/cms to the CMS container.
What's NOT scaffolded
- No
Dockerfile. Deployment story is shop-specific. The Propeller default-deployment templates ship separately. - No CI config (
.gitlab-ci.yml,.github/workflows). Same reason — shops vary too much for a useful default. - No Playwright / Vitest config beyond what the framework default ships. Add your own when you start writing tests.
- No analytics, error tracking, or feature-flag wiring. Pluggable
— wire whatever you use (PostHog, Sentry, GrowthBook, …) in your own
app/providers.tsx(Next) /src/main.ts(Vue).
What you should change first
In rough order:
- Fill in
.env.local. - Pick a brand colour and replace the placeholder in
data/config.ts→theme. - If
--cms != none: install the adapter (see CMS). - Run
npm run devand click through the catalog. - Run
npx propeller doctorto verify the shop matches its manifest.
After that you're scaffolded — diverge freely.