Quickstart¶
This guide walks you through building a small Python monorepo from scratch using pascal. It takes about five minutes.
Prerequisites¶
pascalinstalled (see Installation)uvinstalled (curl -LsSf https://astral.sh/uv/install.sh | sh)
Step 1 — Bootstrap a workspace¶
┌──────────────────────────────────────────┐
│ Pascal — Initializing Workspace │
└──────────────────────────────────────────┘
create packages/
create apps/
create pascal.toml
create pyproject.toml
create .gitignore
✓ Workspace 'shop' initialized
This creates:
shop/
pascal.toml # workspace manifest
pyproject.toml # UV workspace root (auto-managed)
.gitignore
packages/
apps/
Step 2 — Add a reusable package¶
create packages/cart/pyproject.toml
create packages/cart/src/cart/__init__.py
create packages/cart/tests/test_cart.py
✓ Package 'cart' created
Step 3 — Add a deployable app¶
create apps/storefront/pyproject.toml
create apps/storefront/src/storefront/__init__.py
create apps/storefront/src/storefront/main.py
create apps/storefront/tests/test_storefront.py
✓ App 'storefront' created
Step 4 — Wire the package into the app¶
This updates apps/storefront/pyproject.toml to declare cart as a dependency and adds the [tool.uv.sources] entry so UV resolves it from the workspace:
Then sync the UV lockfile:
Step 5 — Inspect and validate¶
Workspace: shop (python 3.12)
├── packages
│ └── cart 0.1.0
└── apps
└── storefront 0.1.0
└── depends on: cart
Step 6 — Run tests¶
Pascal calls uv run pytest for each brick in dependency order.
To run tests only for packages that changed since the last git tag:
What's next?¶
- Explore the full command reference
- Understand the workspace layout
- See how to use pascal in CI/CD pipelines