Skip to content

Commit ea76a17

Browse files
Merge pull request #137 from Create-Python-App/fix/readme-formatting
fix: README formatting
2 parents 32ff4d6 + dad244b commit ea76a17

1 file changed

Lines changed: 79 additions & 2 deletions

File tree

README.md

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,89 @@
1-
# 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)
1+
# create-python-app
2+
3+
[![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)
24
[![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)
35
[![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)
46
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
5-
<!-- 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
7+
8+
<!-- PyPI / coverage badges activate after first publish -->
9+
10+
Composable scaffolding CLI for production-ready Python apps.
11+
12+
> **Status:** bootstrapping complete. Roadmap: [#1](https://github.com/Create-Python-App/create-python-app/issues/1).
13+
14+
## Install (preview)
15+
16+
Once published to PyPI:
17+
18+
```bash
19+
uvx create-awesome-python-app@latest my-app
20+
```
21+
22+
Until the first release, use the workspace CLI:
23+
24+
```bash
25+
uv sync
26+
uv run create-awesome-python-app --help
27+
```
28+
29+
## License
30+
31+
MIT — see [LICENSE](./LICENSE).
32+
33+
## Monorepo layout (uv workspaces)
34+
35+
This repository is a **virtual uv workspace**: the root is not published; packages live under `packages/*` and share one `uv.lock` / `.venv`.
36+
37+
```text
38+
create-python-app/ # virtual workspace root (no [project] table)
39+
├── pyproject.toml # [tool.uv.workspace] members = ["packages/*"]
40+
├── uv.lock
41+
├── .venv/
42+
└── packages/
43+
├── create-python-app-core/ # scaffolding engine
44+
└── create-awesome-python-app/ # CLI (depends on core via workspace)
45+
```
46+
47+
### Setup
48+
49+
```bash
50+
# Requires uv: https://docs.astral.sh/uv/
51+
uv sync --group dev
52+
```
53+
54+
## Development commands
55+
56+
From the repo root (requires [uv](https://docs.astral.sh/uv/)):
57+
58+
| Task | Make | Equivalent |
59+
|------|------|------------|
60+
| Install workspace | `make sync` | `uv sync --group dev` |
61+
| Tests | `make test` | `uv run pytest` |
62+
| Lint | `make lint` | `uv run ruff check .` |
63+
| Type-check | `make typecheck` | `uv run pyright` |
64+
| Build packages | `make build` | `uv build --all` |
65+
66+
Install git hooks: `uv run pre-commit install`
67+
68+
## Python version
69+
70+
- **Pin file:** `.python-version``3.12`
71+
- **Constraint:** every workspace member sets `requires-python = ">=3.12"`
72+
- **CI:** workflows install Python 3.12+ matching this pin
73+
74+
```bash
75+
uv python install
76+
uv sync --group dev
77+
```
78+
679
## Docker
780

881
```bash
982
docker build -t create-awesome-python-app .
1083
docker run --rm create-awesome-python-app --help
1184
```
1285

86+
### Reference
87+
88+
- [uv workspaces handbook](https://pydevtools.com/handbook/how-to/how-to-set-up-a-python-monorepo-with-uv-workspaces/)
89+
- Node parity: [Create-Node-App/create-node-app](https://github.com/Create-Node-App/create-node-app)

0 commit comments

Comments
 (0)