Important Notes
You must follow these rules. Official code will continue to be maintained and updated by us.
Do not modify
Section titled “Do not modify”Frontend apps
Section titled “Frontend apps”apps/adminapps/web
These are official templates. If you modify them directly, it becomes difficult to merge future upstream updates cleanly.
Recommended: Copy apps/web to your own project, for example apps/ai-saas, and customize the copy.
If you copy apps/web, also do these 4 things
Section titled “If you copy apps/web, also do these 4 things”This is the current correct workflow for a new brand site:
-
Create the tenant in Admin first
- Admin
Projectsis the tenant registry - Editing frontend files alone does not register a tenant
- Admin
-
Add or update
zship.app.jsonin the copied app- Set
appKeyto the Admin tenantapp_key - Set
domain,siteUrl, and brand metadata there
- Set
-
Change
wrangler.toml- Update the
namefield for the copied frontend - Otherwise you may overwrite the original
webdeployment target
- Update the
-
Redeploy the copied app as a separate site
- Bind its own domain
- Push its own env and secrets
Short version:
- Admin owns tenant creation
zship.app.jsonowns frontend-to-tenant mappingwrangler.tomlowns the Worker deploy target
Backend services
Section titled “Backend services”Do not modify any of these official services:
backend/node1-auth-servicebackend/node2-support-servicebackend/node3-pay-servicebackend/node4-notify-servicebackend/node5-blog-servicebackend/node6-cdn-servicebackend/node7-site-servicebackend/node8-prompt-servicebackend/node9-checkin-servicebackend/node10-ai-servicebackend/zship-provider1-service
These are official services. We will update them with new features and fixes. Do not change them directly.
Security and secrets
Section titled “Security and secrets”- Never commit
.envfiles, signing keys, or cookie secrets to a public repo. Use Cloudflare Secrets,wrangler secret put, or Dev Console push for production. - Rotate
ADMIN_SECRET, JWT secrets, and payment/provider keys on a sensible schedule, then redeploy the Workers that read those values. - Prefer operator accounts and RBAC in admin (docs) instead of sharing the root secret across many people.
- Layer Cloudflare protections such as WAF and IP rules on top of least-privilege access for admin and sensitive APIs.