OCMS · docs
Manual after install
The admin
The admin lives at /admin/. Sidebar: dashboard, pages, products, categories, orders, modules, themes, settings. The admin language is switched at the bottom of the sidebar, independently of the storefront.
Adding products
- Products → “New product”.
- SKU (unique stock id), slug (URL part), a title per language, price, stock and images.
- Set the status to “Active” to show it; “Draft” is admin-only.
Type the price as the customer sees it; it is converted to the smallest unit for you.
Arranging pages
Pages → a page (e.g. “Home”). Layers and blocks on one side, the preview in the middle, the selected block’s settings on the other.
- Drag a block from “Blocks” onto the preview or into the layers.
- Switch the screen size at the top to tune phone and desktop separately.
- Switch the preview language and write that language’s text.
- “Save” makes a draft; “Publish” makes it live. History keeps every revision.
Theme and colours
Themes → “Activate” to switch, “Customise tokens” for colours, spacing, fonts and shadows. Switching themes never touches content.
Modules and payment gateways
Modules → “Install”. The permissions a module asks for are shown before installing. Once installed, use the “Settings” button on its card:
| Module | What to enter |
|---|---|
| Zarinpal | Merchant ID. Turn “sandbox” on only for testing. |
| Stripe | The sk_live_… key and, optionally, the webhook secret (whsec_…) for /api/payments/stripe/webhook. |
| Bank transfer | How long an unpaid order is held. |
Secret values are never shown again in the browser. An empty field means “keep the stored value”.
Orders
Orders → an order. Only allowed next states are offered (e.g. paid → processing → shipped). Cancel and return restock. An unpaid online order is cancelled automatically after 30 minutes.
Languages and currency
Settings → storefront languages, main language, store name and currency.
Account security
Settings → “Two-factor sign-in” → current password → add the key to your authenticator app → the 6-digit code → keep the ten recovery codes somewhere safe.
Command line
# all prefixed with: docker compose exec ocms ocms setup-code # setup code (before install only) ocms create-admin you@ex.com # new admin; password from stdin ocms modules # list modules ocms module enable payment-manual ocms audit-verify # check the audit log was not tampered with ocms 2fa-reset you@ex.com # turn off 2FA for an account