Skip to main content

Documentation 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 is under active development and is not yet recommended for production use. Use the steps below for development and evaluation.
The fastest way to get an 86d store running is docker compose up. It starts PostgreSQL, MinIO object storage, and the store app with zero configuration. If you prefer a local dev setup with hot reload and direct access to the codebase, follow the CLI path below.
Want to skip the prerequisites entirely? Jump straight to the Docker Compose alternative section.
1

Check prerequisites

Before you start, install the following:
ToolMinimum version
Bunv1.3.6 or newer
Node.jsv23 or newer
PostgreSQLv15 or newer
You can skip the PostgreSQL install by using the Docker Compose path below; it provisions the database for you.
2

Clone the repository and install dependencies

Clone the 86d monorepo and install all workspace dependencies with Bun:
git clone https://github.com/86d-app/86d
cd 86d
bun install
The monorepo contains the store app (apps/store/), all modules (modules/), and supporting packages including the CLI.
3

Initialize your local store

Run 86d init to configure your environment, run database migrations, and seed demo data:
bun run 86d init
The init command:
  • Creates a .env file from .env.example if one does not exist
  • Generates a random BETTER_AUTH_SECRET if the placeholder is still in place
  • Installs dependencies with bun install
  • Runs code generation to wire up module imports
  • Prompts you to run database migrations against your DATABASE_URL
  • Optionally seeds the database with demo products, categories, and an admin user
To skip all interactive prompts (useful in scripts or CI), run bun run 86d init --yes.
After initialization, the seed output prints your default admin credentials:
Admin credentials:
  Email:    admin@example.com
  Password: password123
Change the admin password immediately in any environment that is reachable from the internet.
4

Start the development server

Start the store with hot reload:
bun run dev
Once running, open:Sign in with admin@example.com / password123.
5

Add your first module

Modules are enabled by listing them in your active template’s config.json. Open that file and add a module package name to the modules array:
templates/<theme>/config.json
{
  "name": "My Store",
  "modules": [
    "@86d-app/cart",
    "@86d-app/products",
    "@86d-app/checkout",
    "@86d-app/loyalty"
  ]
}
After saving, regenerate the module imports and API router:
bun run 86d generate
The module’s components are now available in your MDX storefront templates, and its admin pages appear automatically in the sidebar at http://localhost:3000/admin.To scaffold a brand-new custom module from scratch:
bun run 86d module create my-feature
This creates modules/my-feature/ with the full module structure: entry point, schema, store and admin endpoints, and component stubs. See Build a custom module for the full workflow.

Docker Compose alternative

If you want zero-configuration setup (no local PostgreSQL, no manual .env), use Docker Compose. A single command starts PostgreSQL, MinIO object storage, and the store app, and runs migrations and seeds demo data on first boot:
docker compose up
Once the containers are healthy, the following services are available: Default admin credentials are admin@example.com / password123.
In the Docker Compose setup, file uploads are stored in MinIO and served at same-origin /uploads/... URLs. You do not need to expose the raw MinIO bucket URL to your shoppers.
If any default ports conflict with services already running on your machine, override them:
POSTGRES_PUBLISH_PORT=5433 STORE_PUBLISH_PORT=3001 docker compose up

Next steps

Deploy to production

Push your store to Railway, Vercel, or a self-hosted Docker server.

Browse the module catalog

Explore every module you can enable in your store.