Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 5 additions & 80 deletions README.md
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,5 @@
# create-python-app

Composable scaffolding CLI for production-ready Python apps.

> **Status:** bootstrapping. Roadmap: [#1](https://github.com/Create-Python-App/create-python-app/issues/1).


## Install (preview)

Once published to PyPI:

```bash
uvx create-awesome-python-app@latest my-app
```

Until the first release, use the workspace CLI stub:

```bash
uv sync
uv run create-awesome-python-app
```

## License

MIT — see [LICENSE](./LICENSE).

## Monorepo layout (uv workspaces)

This repository is a **virtual uv workspace**: the root is not published; packages live under `packages/*` and share one `uv.lock` / `.venv`.

```text
create-python-app/ # virtual workspace root (no [project] table)
├── pyproject.toml # [tool.uv.workspace] members = ["packages/*"]
├── uv.lock
├── .venv/ # shared environment (gitignored later)
└── packages/
├── create-python-app-core/ # scaffolding engine
└── create-awesome-python-app/ # CLI (depends on core via workspace)
```

### Setup

```bash
# Requires uv: https://docs.astral.sh/uv/
uv sync
```



## Development commands

From the repo root (requires [uv](https://docs.astral.sh/uv/)):

| Task | Make | Equivalent |
|------|------|------------|
| Install workspace | `make sync` | `uv sync` |
| Tests | `make test` | `uv run pytest` |
| Lint | `make lint` | `uv run ruff check .` |
| Type-check | `make typecheck` | `uv run pyright` |
| Build packages | `make build` | `uv build --all` |

> Install git hooks: `uv run pre-commit install`
>
> Ruff, Pyright, and pytest are wired in Epic 2 (`#17`–`#20`). Until then, `make lint` / `test` / `typecheck` will fail if those tools are not installed yet — that is expected.

## Python version

- **Pin file:** `.python-version` → `3.12`
- **Constraint:** every workspace member sets `requires-python = ">=3.12"`
- **CI:** workflows (Epic 6 / #45) must install Python 3.12+ matching this pin

```bash
uv python install # respects .python-version when needed
uv sync
```

### Reference

- [uv workspaces handbook](https://pydevtools.com/handbook/how-to/how-to-set-up-a-python-monorepo-with-uv-workspaces/)
- Node parity: [Create-Node-App/create-node-app](https://github.com/Create-Node-App/create-node-app)
# create-python-app\n\n[![CI Tests](https://github.com/Create-Python-App/create-python-app/actions/workflows/test.yml/badge.svg)](https://github.com/Create-Python-App/create-python-app/actions/workflows/test.yml)

Check failure on line 1 in README.md

View workflow job for this annotation

GitHub Actions/ markdownlint

Headings should be surrounded by blank lines

README.md:1 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "# create-python-app\n\n[![CI Tests](https://github.com/Create-Python-App/create-python-app/actions/workflows/test.yml/badge.svg)](https://github.com/Create-Python-App/create-python-app/actions/workflows/test.yml)"] https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md022.md
[![Lint](https://github.com/Create-Python-App/create-python-app/actions/workflows/lint.yml/badge.svg)](https://github.com/Create-Python-App/create-python-app/actions/workflows/lint.yml)
[![Typecheck](https://github.com/Create-Python-App/create-python-app/actions/workflows/type-check.yml/badge.svg)](https://github.com/Create-Python-App/create-python-app/actions/workflows/type-check.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
<!-- PyPI / coverage badges activate after first publish -->\nComposable scaffolding CLI for production-ready Python apps.\n\n> **Status:** bootstrapping. Roadmap: [#1](https://github.com/Create-Python-App/create-python-app/issues/1).\n\n\n## Install (preview)\n\nOnce published to PyPI:\n\n```bash\nuvx create-awesome-python-app@latest my-app\n```\n\nUntil the first release, use the workspace CLI stub:\n\n```bash\nuv sync\nuv run create-awesome-python-app\n```\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n\n## Monorepo layout (uv workspaces)\n\nThis repository is a **virtual uv workspace**: the root is not published; packages live under `packages/*` and share one `uv.lock` / `.venv`.\n\n```text\ncreate-python-app/ # virtual workspace root (no [project] table)\n├── pyproject.toml # [tool.uv.workspace] members = ["packages/*"]\n├── uv.lock\n├── .venv/ # shared environment (gitignored later)\n└── packages/\n ├── create-python-app-core/ # scaffolding engine\n └── create-awesome-python-app/ # CLI (depends on core via workspace)\n```\n\n### Setup\n\n```bash\n# Requires uv: https://docs.astral.sh/uv/\nuv sync\n```\n\n\n\n## Development commands\n\nFrom the repo root (requires [uv](https://docs.astral.sh/uv/)):\n\n| Task | Make | Equivalent |\n|------|------|------------|\n| Install workspace | `make sync` | `uv sync` |\n| Tests | `make test` | `uv run pytest` |\n| Lint | `make lint` | `uv run ruff check .` |\n| Type-check | `make typecheck` | `uv run pyright` |\n| Build packages | `make build` | `uv build --all` |\n\n> Install git hooks: `uv run pre-commit install`\n>\n> Ruff, Pyright, and pytest are wired in Epic 2 (`#17`–`#20`). Until then, `make lint` / `test` / `typecheck` will fail if those tools are not installed yet — that is expected.\n\n## Python version\n\n- **Pin file:** `.python-version` → `3.12`\n- **Constraint:** every workspace member sets `requires-python = ">=3.12"`\n- **CI:** workflows (Epic 6 / #45) must install Python 3.12+ matching this pin\n\n```bash\nuv python install # respects .python-version when needed\nuv sync\n```\n\n### Reference\n\n- [uv workspaces handbook](https://pydevtools.com/handbook/how-to/how-to-set-up-a-python-monorepo-with-uv-workspaces/)\n- Node parity: [Create-Node-App/create-node-app](https://github.com/Create-Node-App/create-node-app)\n

Check failure on line 5 in README.md

View workflow job for this annotation

GitHub Actions/ markdownlint

Files should end with a single newline character

README.md:5:2368 MD047/single-trailing-newline Files should end with a single newline character https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md047.md
Loading