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 -[![npm](https://img.shields.io/npm/v/create-awesome-node-app?style=flat-square&color=cb3837)](https://www.npmjs.com/package/create-awesome-node-app) -[![npm downloads](https://img.shields.io/npm/dm/create-awesome-node-app?style=flat-square&color=cb3837)](https://www.npmjs.com/package/create-awesome-node-app) -[![Templates](https://img.shields.io/badge/templates-cna--templates-blue?style=flat-square)](https://github.com/Create-Node-App/cna-templates) -[![GitHub org](https://img.shields.io/badge/GitHub-Create--Node--App-black?style=flat-square&logo=github)](https://github.com/Create-Node-App) +[![PyPI](https://img.shields.io/pypi/v/create-awesome-python-app?style=flat-square&color=3776ab)](https://pypi.org/project/create-awesome-python-app/) +[![Templates](https://img.shields.io/badge/templates-cpa--templates-blue?style=flat-square)](https://github.com/Create-Python-App/cpa-templates) +[![GitHub org](https://img.shields.io/badge/GitHub-Create--Python--App-black?style=flat-square&logo=github)](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 - - + + Contributors to Create-Python-App/website -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" },