Skip to content

Commit a57065a

Browse files
docs: rewrite product docs for Create-Python-App CLI and catalog (#3)
* chore: rebrand site identity and catalog to Create-Python-App Point SEO/site URLs, README, AGENTS, catalog fetch, mock fallback data, and danger metadata at CPA / cpa-templates / PyPI. Co-authored-by: Cursor <cursoragent@cursor.com> * feat: adapt homepage and UI copy for Create-Python-App Replace Node/SaaS flagship framing with FastAPI-first recipes, ecosystem sibling links, and PyPI-oriented chrome while keeping the existing site layout. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: rewrite product docs for Create-Python-App CLI and catalog Align installation, getting started, templates, extensions, contributing, and customization pages with uvx/PyPI, Python 3.12+, and the live cpa-templates catalog instead of Node package-manager workflows. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: unblock MegaLinter cspell and README markdown checks Add CPA/Python dictionary words and contributor image alt text so the identity rebrand CI can pass MegaLinter. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: add pyproject/uvicorn to cspell and format README tables Co-authored-by: Cursor <cursoragent@cursor.com> * fix: expand cspell dictionary for CPA docs terminology Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 52e1769 commit a57065a

10 files changed

Lines changed: 575 additions & 695 deletions

File tree

.cspell.json

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
"language": "en",
44
"words": [
55
"addons",
6+
"addopts",
67
"AGENTS",
78
"alstr",
89
"animatedgradient",
10+
"asyncio",
11+
"asyncpg",
912
"Behaviour",
1013
"bunx",
1114
"celery",
@@ -29,6 +32,7 @@
2932
"dangerfile",
3033
"deployables",
3134
"django",
35+
"docstrings",
3236
"dompurify",
3337
"dotenv",
3438
"Elipssis",
@@ -38,8 +42,10 @@
3842
"extraida",
3943
"extraída",
4044
"fastapi",
45+
"filterwarnings",
4146
"grype",
4247
"hookform",
48+
"httpx",
4349
"interactiva",
4450
"jeremias",
4551
"jscoverage",
@@ -65,12 +71,14 @@
6571
"pgvector",
6672
"picomatch",
6773
"pids",
74+
"pipx",
6875
"PKGBUILD",
6976
"preconfigured",
7077
"pydantic",
78+
"pyenv",
7179
"pygobject",
72-
"PyPI",
7380
"pypi",
81+
"PyPI",
7482
"pyproject",
7583
"pyright",
7684
"pytest",
@@ -90,11 +98,12 @@
9098
"Supabase",
9199
"syft",
92100
"tailwindcss",
101+
"testpaths",
93102
"transpiling",
94103
"trivy",
95104
"trufflehog",
96-
"Turborepo",
97105
"turborepo",
106+
"Turborepo",
98107
"typer",
99108
"ulises",
100109
"ulisesjeremias",
@@ -104,6 +113,8 @@
104113
"uvx",
105114
"vaul",
106115
"vercel",
116+
"viewsets",
117+
"virtualenv",
107118
"vite",
108119
"vitest",
109120
"vlang",

src/app/docs/advanced/usage/page.tsx

Lines changed: 68 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import { Button } from '@/components/ui/button';
77
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
88

99
export const metadata = {
10-
title: 'Advanced Usage | Create Awesome Node App Documentation',
11-
description: 'Advanced usage guide for create-awesome-node-app',
10+
title: 'Advanced Usage | Create Awesome Python App Documentation',
11+
description: 'Advanced usage guide for create-awesome-python-app',
1212
};
1313

1414
export default function AdvancedUsagePage() {
@@ -18,85 +18,73 @@ export default function AdvancedUsagePage() {
1818
<div className="space-y-2">
1919
<h1 className="text-3xl font-bold tracking-tight sm:text-4xl">Advanced Usage</h1>
2020
<p className="text-lg text-muted-foreground">
21-
Advanced techniques and configurations for create-awesome-node-app
21+
Advanced techniques and configurations for create-awesome-python-app
2222
</p>
2323
</div>
2424

2525
<div className="space-y-8">
26-
<section id="package-managers" className="space-y-4">
27-
<h2 className="text-2xl font-bold tracking-tight">Using Different Package Managers</h2>
26+
<section id="uv-workflow" className="space-y-4">
27+
<h2 className="text-2xl font-bold tracking-tight">Working with uv in Generated Projects</h2>
2828
<p>
29-
create-awesome-node-app supports multiple package managers. You can choose the one that best fits your
30-
workflow:
29+
Every CPA template is uv-first: dependencies live in <code>pyproject.toml</code>, the lockfile is{' '}
30+
<code>uv.lock</code>, and day-to-day commands go through <code>uv run</code>.
3131
</p>
3232

33-
<Tabs defaultValue="npm" className="w-full mt-4">
33+
<Tabs defaultValue="sync" className="w-full mt-4">
3434
<TabsList className="grid w-full grid-cols-3">
35-
<TabsTrigger value="npm">npm</TabsTrigger>
36-
<TabsTrigger value="yarn">Yarn</TabsTrigger>
37-
<TabsTrigger value="pnpm">pnpm</TabsTrigger>
35+
<TabsTrigger value="sync">uv sync</TabsTrigger>
36+
<TabsTrigger value="run">uv run</TabsTrigger>
37+
<TabsTrigger value="add">uv add</TabsTrigger>
3838
</TabsList>
39-
<TabsContent value="npm" className="mt-2">
39+
<TabsContent value="sync" className="mt-2">
4040
<div className="rounded-md bg-muted p-4">
4141
<pre className="text-sm overflow-x-auto">
42-
{`# Create a new project with npm
43-
npx create-awesome-node-app my-app
42+
{`# Create a project (uv sync runs automatically unless --no-install)
43+
uvx create-awesome-python-app@latest my-app --template fastapi-starter
4444
45-
# Specify package manager explicitly
46-
npx create-awesome-node-app my-app --use-npm
47-
48-
# Install dependencies
45+
# Install or refresh dependencies later
4946
cd my-app
50-
npm install
51-
52-
# Run development server
53-
npm run dev`}
47+
uv sync`}
5448
</pre>
5549
</div>
5650
</TabsContent>
57-
<TabsContent value="yarn" className="mt-2">
51+
<TabsContent value="run" className="mt-2">
5852
<div className="rounded-md bg-muted p-4">
5953
<pre className="text-sm overflow-x-auto">
60-
{`# Create a new project with Yarn
61-
yarn create awesome-node-app my-app
62-
63-
# Specify package manager explicitly
64-
npx create-awesome-node-app my-app --use-yarn
65-
66-
# Install dependencies
54+
{`# Run the dev server (FastAPI example)
6755
cd my-app
68-
yarn
56+
uv run uvicorn app.main:app --reload
57+
58+
# Run tests
59+
uv run pytest
6960
70-
# Run development server
71-
yarn dev`}
61+
# Run lint and type checks
62+
uv run ruff check .
63+
uv run mypy .`}
7264
</pre>
7365
</div>
7466
</TabsContent>
75-
<TabsContent value="pnpm" className="mt-2">
67+
<TabsContent value="add" className="mt-2">
7668
<div className="rounded-md bg-muted p-4">
7769
<pre className="text-sm overflow-x-auto">
78-
{`# Create a new project with pnpm
79-
pnpm create awesome-node-app my-app
70+
{`# Add a runtime dependency
71+
uv add httpx
8072
81-
# Specify package manager explicitly
82-
npx create-awesome-node-app my-app --use-pnpm
73+
# Add a dev dependency
74+
uv add --dev pytest-cov
8375
84-
# Install dependencies
85-
cd my-app
86-
pnpm install
87-
88-
# Run development server
89-
pnpm dev`}
76+
# Remove a dependency
77+
uv remove unused-package`}
9078
</pre>
9179
</div>
9280
</TabsContent>
9381
</Tabs>
9482

9583
<Alert className="mt-4">
96-
<AlertTitle>Package Manager Detection</AlertTitle>
84+
<AlertTitle>Skip automatic install</AlertTitle>
9785
<AlertDescription>
98-
create-awesome-node-app automatically detects the package manager you're using. If you want to override
99-
this behavior, use the <code>--use-yarn</code> or <code>--use-pnpm</code> flag.
86+
Use <code>--no-install</code> when scaffolding if you want to review <code>pyproject.toml</code> before
87+
running <code>uv sync</code> yourself.
10088
</AlertDescription>
10189
</Alert>
10290
</section>
@@ -117,27 +105,28 @@ pnpm dev`}
117105
</p>
118106
<div className="mt-4">
119107
<pre className="text-xs bg-muted p-2 rounded-md overflow-x-auto">
120-
npx create-awesome-node-app my-app --addons github-setup
108+
uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons github-setup
121109
</pre>
122110
</div>
123111
</div>
124112

125113
<div className="rounded-lg border p-4">
126-
<h3 className="text-lg font-semibold mb-2">Docker Compose</h3>
114+
<h3 className="text-lg font-semibold mb-2">Docker</h3>
127115
<p className="text-sm text-muted-foreground">
128-
The Docker Compose Setup extension adds Docker environments for development and production.
116+
The <code>python-docker</code> extension adds a Dockerfile and Compose files for local and production
117+
container runs.
129118
</p>
130119
<div className="mt-4">
131120
<pre className="text-xs bg-muted p-2 rounded-md overflow-x-auto">
132-
npx create-awesome-node-app my-app --addons docker-compose-setup
121+
uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons python-docker
133122
</pre>
134123
</div>
135124
</div>
136125
</div>
137126

138127
<div className="mt-6">
139128
<h3 className="text-xl font-semibold">Deployment Workflow</h3>
140-
<p className="mt-2">Here's a typical deployment workflow for a create-awesome-node-app project:</p>
129+
<p className="mt-2">Here's a typical deployment workflow for a create-awesome-python-app project:</p>
141130

142131
<DiagramWorkflow
143132
className="mt-4"
@@ -163,30 +152,36 @@ graph TD
163152

164153
<section id="monorepo" className="space-y-4 mt-8">
165154
<h2 className="text-2xl font-bold tracking-tight">Monorepo Setup</h2>
166-
<p>create-awesome-node-app offers a Turborepo Boilerplate template for monorepo setups:</p>
155+
<p>
156+
create-awesome-python-app offers the <code>uv-workspace-starter</code> template for Python monorepos with a
157+
single lockfile and shared tooling:
158+
</p>
167159

168160
<div className="rounded-md bg-muted p-4 mt-4">
169161
<pre className="text-sm overflow-x-auto">
170-
{`# Create a new monorepo project
171-
npx create-awesome-node-app my-monorepo --template turborepo-boilerplate
162+
{`# Create a new uv workspace monorepo
163+
uvx create-awesome-python-app@latest my-monorepo --template uv-workspace-starter
172164
173165
# Navigate to the project
174166
cd my-monorepo
175167
176-
# Run all packages in development mode
177-
npm run dev
168+
# Sync all workspace members
169+
uv sync
170+
171+
# Run a member app (example)
172+
uv run --package apps-api uvicorn app.main:app --reload
178173
179-
# Build all packages
180-
npm run build`}
174+
# Run tests across the workspace
175+
uv run pytest`}
181176
</pre>
182177
</div>
183178

184-
<p className="mt-4">The Turborepo Boilerplate template includes:</p>
179+
<p className="mt-4">The uv workspace starter includes:</p>
185180
<ul className="list-disc pl-6 space-y-2">
186-
<li>Turborepo configuration for efficient builds</li>
187-
<li>Workspace setup for managing multiple packages</li>
188-
<li>Shared configurations for TypeScript, ESLint, and other tools</li>
189-
<li>Example packages to demonstrate the monorepo structure</li>
181+
<li>uv workspace configuration with shared <code>pyproject.toml</code> tooling</li>
182+
<li>Separate <code>packages/</code> libraries and <code>apps/</code> deployables</li>
183+
<li>Shared Ruff, Pyright, and pytest configuration</li>
184+
<li>Example members demonstrating cross-package imports</li>
190185
</ul>
191186
</section>
192187

@@ -209,10 +204,10 @@ npm run build`}
209204
dependencies manually
210205
</p>
211206
<div className="rounded-md bg-muted p-2 mt-2">
212-
<code>npx create-awesome-node-app my-app --no-install</code>
207+
<code>uvx create-awesome-python-app my-app --no-install</code>
213208
</div>
214209
<div className="rounded-md bg-muted p-2 mt-2">
215-
<code>cd my-app && npm install</code>
210+
<code>cd my-app && uv sync</code>
216211
</div>
217212
</div>
218213
</div>
@@ -231,10 +226,10 @@ npm run build`}
231226
<strong>Solution:</strong> List available templates and extensions to check the correct names
232227
</p>
233228
<div className="rounded-md bg-muted p-2 mt-2">
234-
<code>npx create-awesome-node-app --list-templates</code>
229+
<code>uvx create-awesome-python-app --list-templates</code>
235230
</div>
236231
<div className="rounded-md bg-muted p-2 mt-2">
237-
<code>npx create-awesome-node-app --list-addons</code>
232+
<code>uvx create-awesome-python-app --list-addons</code>
238233
</div>
239234
</div>
240235
</div>
@@ -254,7 +249,7 @@ npm run build`}
254249
interactive mode
255250
</p>
256251
<div className="rounded-md bg-muted p-2 mt-2">
257-
<code>npx create-awesome-node-app my-app --interactive</code>
252+
<code>uvx create-awesome-python-app my-app --interactive</code>
258253
</div>
259254
</div>
260255
</div>
@@ -278,15 +273,15 @@ npm run build`}
278273

279274
<section id="templates-extensions-list" className="space-y-4 mt-8">
280275
<h2 className="text-2xl font-bold tracking-tight">Available Templates and Extensions</h2>
281-
<p>create-awesome-node-app offers a variety of templates and extensions. Here's how to list them:</p>
276+
<p>create-awesome-python-app offers a variety of templates and extensions. Here's how to list them:</p>
282277

283278
<div className="rounded-md bg-muted p-4 mt-4">
284279
<pre className="text-sm overflow-x-auto">
285280
{`# List all available templates
286-
npx create-awesome-node-app --list-templates
281+
uvx create-awesome-python-app --list-templates
287282
288283
# List all available extensions
289-
npx create-awesome-node-app --list-addons`}
284+
uvx create-awesome-python-app --list-addons`}
290285
</pre>
291286
</div>
292287

@@ -300,7 +295,7 @@ npx create-awesome-node-app --list-addons`}
300295
<p>The interactive mode provides a guided experience for creating projects:</p>
301296

302297
<div className="rounded-md bg-muted p-4 mt-4">
303-
<pre className="text-sm overflow-x-auto">{`npx create-awesome-node-app my-app --interactive`}</pre>
298+
<pre className="text-sm overflow-x-auto">{`uvx create-awesome-python-app my-app --interactive`}</pre>
304299
</div>
305300

306301
<p className="mt-4">In interactive mode, you'll be prompted to:</p>

0 commit comments

Comments
 (0)