@@ -7,8 +7,8 @@ import { Button } from '@/components/ui/button';
77import { Tabs , TabsContent , TabsList , TabsTrigger } from '@/components/ui/tabs' ;
88
99export 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
1414export 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
4946cd 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)
6755cd 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
174166cd 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