Skip to content

Generate a project

OpenProductKit's first job is to render a named product, not to be cloned and edited in place.

uvx copier copy gh:ravipurohit1991/OpenProductKit my-product

The destination directory is created if it does not exist. If it does exist, it must be writable.

Template sources

Source Command
GitHub shortcut uvx copier copy gh:ravipurohit1991/OpenProductKit my-product
Full Git URL uvx copier copy https://github.com/ravipurohit1991/OpenProductKit.git my-product
Local clone uvx copier copy . ../my-product
Specific ref uvx copier copy --vcs-ref v0.1.0 gh:ravipurohit1991/OpenProductKit my-product

For released tags, prefer stable semantic-version tags. Copier uses Git metadata when it later computes template updates.

Questions

Question Default Used for
project_name OpenProductKit Human-readable product name in docs and UI
project_slug Derived from project_name Directory names, npm package names, Docker names
pkg_slug Derived from project_slug Python import packages such as <pkg>_core
cli_name opk Generated command-line entry point
project_description Product one-liner README and package metadata
author_name Your Name Package metadata
author_email you@example.com Package metadata
python_version 3.12 Python package metadata and generated targets
desktop_framework pywebview Desktop shell: pywebview (in-process, recommended), electron or tauri (sidecar backend), or none — see Desktop
database sqlite What the Docker stack runs: sqlite or postgres (dev/tests always work with SQLite)
include_docker true Generate the Docker stack + stack CLI group — see Deployment
include_tunnel true Add the Cloudflare quick-tunnel service so stack share prints a public URL (asked only if Docker is on)

Generated layout

my-product/
  apps/
    backend/      FastAPI adapter, SQLModel persistence, Alembic
    cli/          Typer command surface and project task runner
    frontend/     React + Vite UI over generated API types
    desktop*/     your chosen shell: desktop/ (pywebview),
                  desktop-electron/ or desktop-tauri/ (sidecar)
  packages/
    core/         Framework-free domain, ports and services
    plugin-api/   Extension contract and registry
    licensing/    License providers and signed token support
  extensions/     Example plugins (incl. the on-demand marketplace demo)
  marketplace/    catalog.json — what the Marketplace tab offers
  docker-compose.yml  One-command stack (if Docker was selected)
  docs/           Generated product docs
  AGENTS.md       Agent instructions rendered with your project names
  CLAUDE.md       Companion agent instructions

First run

cd my-product
uv sync --dev
uv run opk doctor
uv run opk dev

In another terminal:

pnpm install
pnpm -C apps/frontend dev

The backend serves API routes on http://127.0.0.1:8000; the richer web UI runs on http://127.0.0.1:5173.

Regenerating during template development

When you are editing OpenProductKit itself, generate from the local checkout:

uvx copier copy . ../scratch-product

Use this to smoke-test prompt changes, newly added files, and Jinja-rendered package names before publishing a tag.