diff --git a/.cspell.json b/.cspell.json
index 61b9577..cbcd0d6 100644
--- a/.cspell.json
+++ b/.cspell.json
@@ -7,11 +7,14 @@
"alstr",
"animatedgradient",
"Behaviour",
+ "bunx",
+ "celery",
"Chakra",
"checkov",
"clsx",
"cmdk",
"cna",
+ "Codegen",
"codepaths",
"commitlint",
"contenido",
@@ -22,6 +25,8 @@
"cspell",
"csvg",
"dangerfile",
+ "deployables",
+ "django",
"dompurify",
"dotenv",
"Elipssis",
@@ -30,6 +35,7 @@
"eslintcache",
"extraida",
"extraída",
+ "fastapi",
"grype",
"hookform",
"interactiva",
@@ -39,38 +45,42 @@
"jspm",
"jumpstart",
"linaria",
+ "Lingui",
"lintstagedrc",
"lucide",
+ "makepkg",
"megalinter",
"mermaid",
"minimatch",
"misconfig",
+ "mypy",
"nextjs",
"npmjs",
"nums",
"Pagespeed",
+ "paru",
"PBAC",
"pgvector",
"picomatch",
"pids",
+ "PKGBUILD",
"preconfigured",
+ "pydantic",
+ "pyright",
+ "pytest",
"radix",
"Reakit",
"recharts",
- "bunx",
- "Codegen",
- "Lingui",
- "makepkg",
- "paru",
- "PKGBUILD",
+ "ruff",
"saas",
- "Supabase",
"Selenoid",
"shadcn",
"sonner",
+ "sqlalchemy",
"srcset",
"SSCCE",
"stefanzweifel",
+ "Supabase",
"syft",
"tailwindcss",
"transpiling",
@@ -78,6 +88,7 @@
"trufflehog",
"turborepo",
"Turborepo",
+ "typer",
"ulises",
"ulisesjeremias",
"unmemoized",
diff --git a/AGENTS.md b/AGENTS.md
index 7261a00..801e831 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -2,7 +2,7 @@
## Overview
-Marketing and documentation site for create-node-app.
+Marketing and documentation site for create-python-app.
## Tech Stack
diff --git a/README.md b/README.md
index 6cfafce..a2e4e67 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,25 @@
-# Create Awesome Node App - Official Website
+# Create Awesome Python App - Official Website
-[](https://www.npmjs.com/package/create-awesome-node-app)
-[](https://www.npmjs.com/package/create-awesome-node-app)
-[](https://github.com/Create-Node-App/cna-templates)
-[](https://github.com/Create-Node-App)
+[](https://pypi.org/project/create-awesome-python-app/)
+[](https://github.com/Create-Python-App/cpa-templates)
+[](https://github.com/Create-Python-App)
-This is the official website for [Create Awesome Node App](https://www.npmjs.com/package/create-awesome-node-app), a tool that helps you quickly set up Node.js projects with best practices and modern tooling.
+This is the official website for [Create Awesome Python App](https://pypi.org/project/create-awesome-python-app/), a tool that helps you quickly set up Python projects with best practices and modern tooling (uv-first).
## Project Links
-- [Official website](https://create-awesome-node-app.vercel.app)
-- [CLI package on npm](https://www.npmjs.com/package/create-awesome-node-app)
-- [Main Create-Node-App repository](https://github.com/Create-Node-App/create-node-app)
-- [Templates and extensions catalog](https://github.com/Create-Node-App/cna-templates)
-- [Create-Node-App GitHub organization](https://github.com/Create-Node-App)
+- [Official website](https://create-awesome-python-app.vercel.app)
+- [CLI package on PyPI](https://pypi.org/project/create-awesome-python-app/)
+- [Main Create-Python-App repository](https://github.com/Create-Python-App/create-python-app)
+- [Templates and extensions catalog](https://github.com/Create-Python-App/cpa-templates)
+- [Create-Python-App GitHub organization](https://github.com/Create-Python-App)
> [!TIP]
-> This project was initialized with [create-awesome-node-app](https://www.npmjs.com/package/create-awesome-node-app). **DO NOT USE THIS TEMPLATE DIRECTLY!** Instead, create your own project using the command and following the interactive menu options. For more information, refer to the documentation!
+> Scaffold new apps with [`create-awesome-python-app`](https://pypi.org/project/create-awesome-python-app/) — do not clone template snapshot repos for production work. Prefer:
+>
+> ```bash
+> uvx create-awesome-python-app my-api --template fastapi-starter
+> ```
## Features
@@ -66,12 +69,12 @@ Scripts for preparing and viewing the production version:
## Contributing
-Bug reports, feature requests, and pull requests are welcome on the [Create-Node-App/website](https://github.com/Create-Node-App/website) repository!
+Bug reports, feature requests, and pull requests are welcome on the [Create-Python-App/website](https://github.com/Create-Python-App/website) repository!
## 👥 Contributors
-
-
+
+
-Made with [contributors-img](https://contrib.rocks).
\ No newline at end of file
+Made with [contributors-img](https://contrib.rocks).
diff --git a/docs/PROJECT_CONFIGURATION.md b/docs/PROJECT_CONFIGURATION.md
index 3b72e15..40fa59d 100644
--- a/docs/PROJECT_CONFIGURATION.md
+++ b/docs/PROJECT_CONFIGURATION.md
@@ -1,6 +1,6 @@
# ⚙️ Project Configuration
-The application has been bootstrapped using [create-awesome-node-app](https://www.npmjs.com/package/create-awesome-node-app) for simplicity reasons. It allows us to create applications quickly without dealing with a complex tooling setup such as bundling, transpiling etc.
+The application has been bootstrapped using [create-awesome-python-app](https://pypi.org/project/create-awesome-python-app/) for simplicity reasons. It allows us to create applications quickly without dealing with a complex tooling setup such as bundling, transpiling etc.
You should always configure and use the following tools:
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 5be0571..2a2e918 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -5,45 +5,45 @@ import '@/app/globals.css';
import { LayoutShell } from '@/components/layout-shell';
import { jsonLdScript, organizationJsonLd, websiteJsonLd } from '@/lib/seo';
-const siteUrl = 'https://create-awesome-node-app.vercel.app';
+const siteUrl = 'https://create-awesome-python-app.vercel.app';
export const metadata: Metadata = {
metadataBase: new URL(siteUrl),
title: {
- default: 'Create Awesome Node App',
- template: '%s | Create Awesome Node App',
+ default: 'Create Awesome Python App',
+ template: '%s | Create Awesome Python App',
},
description:
- 'One command. Any stack. Choose a template, add addons, and ship production-ready Node, Web, and AI-ready apps.',
+ 'One command. Any stack. Choose a template, add addons, and ship production-ready Python APIs, CLIs, and workers.',
keywords: [
- 'node templates',
- 'node.js starter',
- 'create node app',
- 'typescript boilerplate',
- 'next.js template',
- 'nestjs starter',
- 'node extensions',
+ 'python templates',
+ 'python starter',
+ 'create python app',
+ 'fastapi boilerplate',
+ 'django api template',
+ 'celery worker starter',
+ 'python extensions',
],
- authors: [{ name: 'Create Awesome Node App Team', url: siteUrl }],
- creator: 'Create Awesome Node App',
- publisher: 'Create Awesome Node App',
+ authors: [{ name: 'Create Awesome Python App Team', url: siteUrl }],
+ creator: 'Create Awesome Python App',
+ publisher: 'Create Awesome Python App',
openGraph: {
- title: 'Create Awesome Node App',
- description: 'One command. Any stack. Compose templates and addons into production-ready Node.js apps.',
+ title: 'Create Awesome Python App',
+ description: 'One command. Any stack. Compose templates and addons into production-ready Python apps.',
url: siteUrl,
- siteName: 'Create Awesome Node App',
+ siteName: 'Create Awesome Python App',
images: [
{
url: '/og-default.png', // raster fallback
width: 1200,
height: 630,
- alt: 'Create Awesome Node App – Templates & Extensions',
+ alt: 'Create Awesome Python App – Templates & Extensions',
},
{
url: '/og-default.svg', // some platforms now support SVG (fallback above covers others)
width: 1200,
height: 630,
- alt: 'Create Awesome Node App – Templates & Extensions',
+ alt: 'Create Awesome Python App – Templates & Extensions',
type: 'image/svg+xml',
},
],
@@ -52,8 +52,8 @@ export const metadata: Metadata = {
},
twitter: {
card: 'summary_large_image',
- title: 'Create Awesome Node App',
- description: 'Discover Node.js templates and extensions to accelerate your development workflow.',
+ title: 'Create Awesome Python App',
+ description: 'Discover Python templates and extensions to accelerate your development workflow.',
images: ['/og-default.png', '/og-default.svg'],
creator: '@',
},
diff --git a/src/app/robots.ts b/src/app/robots.ts
index 1de0483..223493b 100644
--- a/src/app/robots.ts
+++ b/src/app/robots.ts
@@ -1,6 +1,6 @@
import type { MetadataRoute } from 'next';
-const siteUrl = 'https://create-awesome-node-app.vercel.app';
+const siteUrl = 'https://create-awesome-python-app.vercel.app';
export default function robots(): MetadataRoute.Robots {
return {
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
index 7d09adc..d007553 100644
--- a/src/app/sitemap.ts
+++ b/src/app/sitemap.ts
@@ -1,7 +1,7 @@
import type { MetadataRoute } from 'next';
import { getTemplatesData } from '@/lib/data';
-const siteUrl = 'https://create-awesome-node-app.vercel.app';
+const siteUrl = 'https://create-awesome-python-app.vercel.app';
export default async function sitemap(): Promise {
const { templates, extensions, categories } = await getTemplatesData();
diff --git a/src/lib/__tests__/schemas.test.ts b/src/lib/__tests__/schemas.test.ts
index e11ad31..aad50a9 100644
--- a/src/lib/__tests__/schemas.test.ts
+++ b/src/lib/__tests__/schemas.test.ts
@@ -25,26 +25,26 @@ describe('categorySchema', () => {
describe('templateSchema', () => {
it('should validate a valid template', () => {
const validTemplate = {
- name: 'React Vite Starter',
+ name: 'FastAPI Starter',
description: 'A fast React boilerplate with Vite.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/templates/react-vite-starter',
+ url: 'https://github.com/Create-Python-App/cpa-templates/tree/main/templates/fastapi-starter',
type: 'react',
category: 'frontend-applications',
labels: ['React', 'Vite', 'TypeScript'],
- slug: 'react-vite-starter',
+ slug: 'fastapi-starter',
};
expect(templateSchema.safeParse(validTemplate).success).toBe(true);
});
it('should reject a template with invalid url', () => {
const invalidTemplate = {
- name: 'React Vite Starter',
+ name: 'FastAPI Starter',
description: 'A fast React boilerplate.',
url: 'not-a-url',
type: 'react',
category: 'frontend-applications',
labels: ['React'],
- slug: 'react-vite-starter',
+ slug: 'fastapi-starter',
};
expect(templateSchema.safeParse(invalidTemplate).success).toBe(false);
});
@@ -55,7 +55,7 @@ describe('extensionSchema', () => {
const validExtension = {
name: 'Tailwind CSS',
description: 'Add Tailwind CSS.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/extensions/react-tailwindcss',
+ url: 'https://github.com/Create-Python-App/cpa-templates/tree/main/extensions/python-docker',
type: 'react',
category: 'UI',
labels: ['Tailwind', 'CSS'],
@@ -68,7 +68,7 @@ describe('extensionSchema', () => {
const validExtension = {
name: 'GitHub Setup',
description: 'Add GitHub automation.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/extensions/all-github-setup',
+ url: 'https://github.com/Create-Python-App/cpa-templates/tree/main/extensions/github-setup',
type: ['react', 'nextjs', 'backend'],
category: 'Tooling',
labels: ['GitHub', 'CI/CD'],
@@ -83,13 +83,13 @@ describe('templatesDataSchema', () => {
const validData = {
templates: [
{
- name: 'React Vite Starter',
+ name: 'FastAPI Starter',
description: 'A fast React boilerplate.',
url: 'https://github.com/example/react-vite',
type: 'react',
category: 'frontend-applications',
labels: ['React'],
- slug: 'react-vite-starter',
+ slug: 'fastapi-starter',
},
],
extensions: [
diff --git a/src/lib/__tests__/utils.test.ts b/src/lib/__tests__/utils.test.ts
index 23c3457..55d6852 100644
--- a/src/lib/__tests__/utils.test.ts
+++ b/src/lib/__tests__/utils.test.ts
@@ -21,17 +21,17 @@ describe('validateTemplate', () => {
it('should return data for valid template', () => {
const validData = {
- name: 'React Vite Starter',
+ name: 'FastAPI Starter',
description: 'A fast React boilerplate.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/templates/react-vite-starter',
+ url: 'https://github.com/Create-Python-App/cpa-templates/tree/main/templates/fastapi-starter',
type: 'react',
category: 'frontend-applications',
labels: ['React', 'Vite'],
- slug: 'react-vite-starter',
+ slug: 'fastapi-starter',
};
const result = validateTemplate(validData);
expect(result).not.toBeNull();
- expect(result?.name).toBe('React Vite Starter');
+ expect(result?.name).toBe('FastAPI Starter');
});
});
@@ -45,7 +45,7 @@ describe('validateExtension', () => {
const validData = {
name: 'Tailwind CSS',
description: 'Add Tailwind CSS.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/extensions/react-tailwindcss',
+ url: 'https://github.com/Create-Python-App/cpa-templates/tree/main/extensions/python-docker',
type: 'react',
category: 'UI',
labels: ['Tailwind'],
diff --git a/src/lib/data.ts b/src/lib/data.ts
index d082cfd..50bddc8 100644
--- a/src/lib/data.ts
+++ b/src/lib/data.ts
@@ -1,7 +1,7 @@
import { getFallbackData } from './mock-data';
import { type TemplatesData, templatesDataSchema } from './schemas';
-const TEMPLATES_URL = 'https://raw.githubusercontent.com/Create-Node-App/cna-templates/main/templates.json';
+const TEMPLATES_URL = 'https://raw.githubusercontent.com/Create-Python-App/cpa-templates/main/templates.json';
export async function getTemplatesData(): Promise {
try {
diff --git a/src/lib/mock-data.ts b/src/lib/mock-data.ts
index fe7c025..69bdf03 100644
--- a/src/lib/mock-data.ts
+++ b/src/lib/mock-data.ts
@@ -3,107 +3,188 @@ import type { TemplatesData } from './schemas';
export const mockTemplatesData: TemplatesData = {
categories: [
{
- slug: 'frontend-applications',
- name: 'Frontend Applications',
- description: 'Templates for building modern web interfaces',
- details: 'Discover templates for React, Vue, and other frontend frameworks to build beautiful user interfaces.',
- labels: ['Frontend', 'UI', 'React', 'Vue', 'Web'],
+ slug: "backend-applications",
+ name: "Backend Applications",
+ description: "API and service starters for FastAPI and similar Python backends.",
+ details: "Use when the deliverable is an HTTP API or background worker — FastAPI for async APIs with OpenAPI docs.",
+ labels: ["Backend", "API", "Python", "FastAPI"],
},
{
- slug: 'backend-applications',
- name: 'Backend Applications',
- description: 'Templates for building robust server-side applications',
- details: 'Explore templates for Node.js, Express, NestJS, and other backend frameworks to build powerful APIs.',
- labels: ['Backend', 'API', 'Server', 'Node.js', 'Express', 'NestJS'],
+ slug: "ci",
+ name: "CI",
+ description: "Continuous integration and repository automation.",
+ details: "GitHub Actions, Dependabot, and related repository workflows.",
+ labels: ["CI", "GitHub", "DevOps"],
},
{
- slug: 'fullstack-applications',
- name: 'Full Stack Applications',
- description: 'Templates for building complete web applications',
- details: 'Find templates for Next.js, Remix, and other full stack frameworks to build end-to-end applications.',
- labels: ['Fullstack', 'Next.js', 'Remix', 'SSR', 'API Routes'],
+ slug: "containers",
+ name: "Containers",
+ description: "Docker and Compose packaging for the app.",
+ details: "Add when you want container images and compose stacks for the API.",
+ labels: ["Docker", "Compose", "DevOps"],
},
{
- slug: 'monorepo-boilerplate',
- name: 'Monorepo Boilerplate',
- description: 'Templates for managing multiple packages in a single repository',
- details:
- 'Streamline development with monorepo templates using tools like Nx, Turborepo, and Lerna for efficient code sharing.',
- labels: ['Monorepo', 'Nx', 'Turborepo', 'Lerna', 'Workspace'],
+ slug: "database",
+ name: "Database",
+ description: "Database services and connection scaffolding.",
+ details: "Pair with the app when you need Postgres (or similar) locally/in compose.",
+ labels: ["PostgreSQL", "Database"],
},
{
- slug: 'user-acceptance-testing',
- name: 'User Acceptance Testing',
- description: 'Templates with built-in testing frameworks for end-to-end validation',
- details:
- 'Ensure your applications meet user requirements with templates featuring Cypress, Playwright, or Selenium for comprehensive testing.',
- labels: ['Testing', 'UAT', 'Cypress', 'Playwright', 'Selenium', 'E2E'],
+ slug: "editor",
+ name: "Editor",
+ description: "Editor and remote development ergonomics.",
+ details: "Dev Containers and related IDE integrations.",
+ labels: ["DevContainer", "VS Code"],
},
{
- slug: 'web-extension',
- name: 'Web Extension',
- description: 'Templates for building browser extensions and add-ons',
- details:
- 'Develop cross-browser extensions with templates that support Chrome, Firefox, and Edge with modern web technologies.',
- labels: ['Extension', 'Browser', 'Chrome', 'Firefox', 'Edge', 'Add-on'],
+ slug: "cli-applications",
+ name: "CLI Applications",
+ description: "Command-line tools and console scripts.",
+ details: "Use for Typer/Click CLIs and internal utilities shipped as entry points.",
+ labels: ["CLI", "Python", "Typer"],
+ },
+ {
+ slug: "observability",
+ name: "Observability",
+ description: "Error tracking, metrics, and tracing integrations.",
+ details: "Add when you need production diagnostics such as Sentry.",
+ labels: ["Observability", "Sentry", "Monitoring"],
+ },
+ {
+ slug: "security",
+ name: "Security",
+ description: "Authentication and authorization scaffolds.",
+ details: "JWT/session auth skeletons and related security helpers.",
+ labels: ["Auth", "JWT", "Security"],
+ },
+ {
+ slug: "monorepo",
+ name: "Monorepo",
+ description: "Multi-package workspaces with shared tooling and one lockfile.",
+ details: "Use when you need multiple libraries and apps in one repo — uv workspaces link members locally with a single virtual environment.",
+ labels: ["Monorepo", "uv", "Workspace", "Python"],
},
],
templates: [
{
- slug: 'react-vite-boilerplate',
- name: 'React Vite Boilerplate',
- description: 'A highly opinionated React boilerplate with Vite, TypeScript, ESLint, Prettier, and more.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/templates/react-vite-starter',
- type: 'react',
- category: 'frontend-applications',
- labels: ['React', 'Vite', 'TypeScript', 'ESLint', 'Prettier'],
+ slug: "fastapi-starter",
+ name: "FastAPI Starter",
+ description: "Production-ready FastAPI API with uv, Ruff, pytest, mypy, pyright, and pydantic-settings",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=templates/fastapi-starter",
+ type: "fastapi-backend",
+ category: "backend-applications",
+ labels: ["FastAPI", "API", "Python", "uv", "Backend", "Type Hints", "mypy", "pyright"],
},
{
- slug: 'nestjs-boilerplate',
- name: 'NestJS Boilerplate',
- description: 'A progressive Node.js framework for building efficient and scalable server-side applications.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/templates/nestjs-starter',
- type: 'nestjs',
- category: 'backend-applications',
- labels: ['NestJS', 'TypeScript', 'API', 'REST', 'Swagger'],
+ slug: "cli-starter",
+ name: "CLI Starter",
+ description: "Typer CLI with uv, Ruff, pytest, and a console script entry point",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=templates/cli-starter",
+ type: "cli-app",
+ category: "cli-applications",
+ labels: ["CLI", "Typer", "Python", "uv"],
},
{
- slug: 'nextjs-starter',
- name: 'Next.js Starter',
- description: 'The React framework for production with server-side rendering and static site generation.',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/templates/nextjs-starter',
- type: 'nextjs',
- category: 'fullstack-applications',
- labels: ['Next.js', 'React', 'TypeScript', 'SSR', 'API Routes'],
+ slug: "celery-worker",
+ name: "Celery Worker",
+ description: "Celery worker with Redis defaults, pydantic-settings, and eager-mode tests",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=templates/celery-worker",
+ type: "celery-worker",
+ category: "backend-applications",
+ labels: ["Celery", "Worker", "Redis", "Python", "uv"],
+ },
+ {
+ slug: "django-api",
+ name: "Django API",
+ description: "Django + DRF API starter with uv, Ruff, pytest-django, and health probes",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=templates/django-api",
+ type: "django-backend",
+ category: "backend-applications",
+ labels: ["Django", "DRF", "API", "Python", "uv"],
+ },
+ {
+ slug: "uv-workspace-starter",
+ name: "uv Workspace Starter",
+ description: "Python monorepo using uv workspaces: shared packages/ libraries and apps/ deployables with one lockfile, Ruff, Pyright, and pytest",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=templates/uv-workspace-starter",
+ type: "uv-workspace",
+ category: "monorepo",
+ labels: ["Monorepo", "uv", "Workspace", "Python", "Typer"],
},
],
extensions: [
{
- slug: 'material-ui',
- name: 'Material UI',
- description: 'Extension to add Material UI to your React app',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/extensions/react-material-ui',
- type: 'react',
- category: 'UI',
- labels: ['React', 'Material UI', 'Components', 'Theming'],
- },
- {
- slug: 'tailwindcss',
- name: 'Tailwind CSS',
- description: 'Add Tailwind CSS to your project for utility-first styling',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/extensions/tailwindcss',
- type: ['react', 'nextjs', 'vue'],
- category: 'UI',
- labels: ['Tailwind CSS', 'Styling', 'Utility Classes'],
- },
- {
- slug: 'github-setup',
- name: 'GitHub Setup',
- description: 'Configure GitHub Actions, PR templates, and more',
- url: 'https://github.com/Create-Node-App/cna-templates/tree/main/extensions/github-setup',
- type: ['react', 'nextjs', 'nestjs', 'express', 'vue'],
- category: 'DevOps',
- labels: ['GitHub', 'CI/CD', 'Actions', 'Templates'],
+ slug: "github-setup",
+ name: "GitHub Setup",
+ description: "GitHub Actions CI, MegaLinter, Danger PR review, todo-to-issue, Dependabot, and issue/PR templates",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/github-setup",
+ type: ["celery-worker", "cli-app", "django-backend", "fastapi-backend", "uv-workspace"],
+ category: "ci",
+ labels: ["GitHub", "CI", "DevOps", "MegaLinter", "Danger"],
+ },
+ {
+ slug: "python-docker",
+ name: "Python Docker",
+ description: "Dockerfile, compose.yml, and compose.prod.yml for local and containerized runs",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/python-docker",
+ type: ["celery-worker", "cli-app", "fastapi-backend"],
+ category: "containers",
+ labels: ["Docker", "DevOps", "Container"],
+ },
+ {
+ slug: "python-postgres",
+ name: "Python Postgres",
+ description: "PostgreSQL service under docker/postgres/compose.yml plus env examples",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/python-postgres",
+ type: ["celery-worker", "django-backend", "fastapi-backend"],
+ category: "database",
+ labels: ["PostgreSQL", "Database", "Docker"],
+ },
+ {
+ slug: "python-devcontainer",
+ name: "Python Dev Container",
+ description: "VS Code Dev Container with Python 3.12 and uv",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/python-devcontainer",
+ type: ["celery-worker", "cli-app", "django-backend", "fastapi-backend", "uv-workspace"],
+ category: "editor",
+ labels: ["DevContainer", "VS Code", "uv"],
+ },
+ {
+ slug: "python-sqlalchemy",
+ name: "Python SQLAlchemy",
+ description: "SQLAlchemy 2.x session helpers and Alembic migrations for FastAPI",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/python-sqlalchemy",
+ type: ["fastapi-backend"],
+ category: "database",
+ labels: ["SQLAlchemy", "Alembic", "ORM", "Database"],
+ },
+ {
+ slug: "python-redis",
+ name: "Python Redis",
+ description: "Redis client helper and local Compose service",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/python-redis",
+ type: ["fastapi-backend"],
+ category: "database",
+ labels: ["Redis", "Cache", "Queue"],
+ },
+ {
+ slug: "python-sentry",
+ name: "Python Sentry",
+ description: "Sentry SDK for FastAPI with env-driven init helper",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/python-sentry",
+ type: ["fastapi-backend"],
+ category: "observability",
+ labels: ["Sentry", "Observability", "Errors"],
+ },
+ {
+ slug: "python-auth-jwt",
+ name: "Python Auth JWT",
+ description: "JWT auth feature skeleton with password hashing helpers",
+ url: "https://github.com/Create-Python-App/cpa-templates?subdir=extensions/python-auth-jwt",
+ type: ["fastapi-backend"],
+ category: "security",
+ labels: ["Auth", "JWT", "Security"],
},
],
};
diff --git a/src/lib/seo.ts b/src/lib/seo.ts
index 5c0111b..1c04633 100644
--- a/src/lib/seo.ts
+++ b/src/lib/seo.ts
@@ -1,7 +1,7 @@
-export const SITE_URL = 'https://create-awesome-node-app.vercel.app';
-export const SITE_NAME = 'Create Awesome Node App';
+export const SITE_URL = 'https://create-awesome-python-app.vercel.app';
+export const SITE_NAME = 'Create Awesome Python App';
export const SITE_DESCRIPTION =
- 'Discover production-ready templates and extensions to jumpstart your next Node.js project. Combine starters and add-ons to build faster.';
+ 'Discover production-ready templates and extensions to jumpstart your next Python project. Combine starters and add-ons to build faster with uv.';
export function organizationJsonLd() {
return {
diff --git a/tools/danger/package.json b/tools/danger/package.json
index 5a1f145..6717b5b 100644
--- a/tools/danger/package.json
+++ b/tools/danger/package.json
@@ -1,5 +1,5 @@
{
- "name": "create-node-app",
+ "name": "create-python-app-website",
"version": "1.0.0",
"description": "",
"main": "index.js",
@@ -8,14 +8,14 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/Create-Node-App/create-node-app.git"
+ "url": "git+https://github.com/Create-Python-App/website.git"
},
"author": "ulises-jeremias",
"license": "MIT",
"bugs": {
- "url": "https://github.com/Create-Node-App/create-node-app/issues"
+ "url": "https://github.com/Create-Python-App/website/issues"
},
- "homepage": "https://github.com/Create-Node-App/create-node-app#readme",
+ "homepage": "https://github.com/Create-Python-App/website#readme",
"dependencies": {
"danger": "^13.0.10"
},