Every feature in 86d is a module, including the ones that ship with the platform. You can write your own modules to add custom storefront components, admin pages, and API endpoints that behave identically to any officialDocumentation Index
Fetch the complete documentation index at: https://86d.app/docs/llms.txt
Use this file to discover all available pages before exploring further.
@86d-app/* module. Modules are isolated by design: they can only communicate with each other through declared contracts, never through direct imports.
Scaffold a new module
Implement your schema and endpoints
Define your Zod schema in
src/schema.ts, then add controllers and endpoints. Store endpoints are public; admin endpoints sit under /api/admin/... and require an authenticated admin session.src/schema.ts
Enable the module in the active template
@86d-app/my-feature to your active template’s config.json.Regenerate the wiring
/api/, and registers its MDX components.Module entry point
The defaultsrc/index.ts exports a factory that returns a Module object:
src/index.ts
moduleOptions in config.json.
Admin sidebar navigation
Admin pages appear in the store admin sidebar under the group you declare. The available top-level groups are: Catalog, Sales, Customers, Fulfillment, Marketing, Content, Finance, Support, and System. Each group has collapsible subgroups (for example Sales → Orders, Cart, Billing). You can assign a subgroup explicitly via thesubgroup field on an AdminPage declaration:
Cross-module communication
Modules are isolated; you cannot import another module’s code directly. Use therequires / exports contract system instead:
ctx.contracts in your handlers.
Database access
All database access goes throughModuleDataService, which the runtime provides as ctx.data inside the init function. Modules never import @86d-app/db or any ORM client directly. This keeps modules portable and testable:
@86d-app/core/test-utils, which provides an in-memory mock data service so you can test your module without a real database connection.
Publish to npm
Once your module is ready, publish it to npm so other 86d stores can install it:Update package.json
Set
"private": false, choose a stable version, and add a clear description and keywords. Add "86d-app" and the relevant category (for example "sales") to keywords so it surfaces in registry search.Next steps
- Modules for the conceptual model.
- Storefront for the MDX component registry order.
- Admin dashboard for the sidebar group taxonomy.

