Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@
"alstr",
"animatedgradient",
"Behaviour",
"bunx",
"celery",
"Chakra",
"checkov",
"clsx",
"cmdk",
"cna",
"Codegen",
"codepaths",
"commitlint",
"contenido",
Expand All @@ -22,6 +25,8 @@
"cspell",
"csvg",
"dangerfile",
"deployables",
"django",
"dompurify",
"dotenv",
"Elipssis",
Expand All @@ -30,6 +35,7 @@
"eslintcache",
"extraida",
"extraída",
"fastapi",
"grype",
"hookform",
"interactiva",
Expand All @@ -39,45 +45,50 @@
"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",
"trivy",
"trufflehog",
"turborepo",
"Turborepo",
"typer",
"ulises",
"ulisesjeremias",
"unmemoized",
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Overview

Marketing and documentation site for create-node-app.
Marketing and documentation site for create-python-app.

## Tech Stack

Expand Down
35 changes: 19 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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

<a href="https://github.com/Create-Node-App/website/contributors">
<img src="https://contrib.rocks/image?repo=Create-Node-App/website"/>
<a href="https://github.com/Create-Python-App/website/contributors">
<img src="https://contrib.rocks/image?repo=Create-Python-App/website" alt="Contributors to Create-Python-App/website"/>
</a>

Made with [contributors-img](https://contrib.rocks).
Made with [contributors-img](https://contrib.rocks).
2 changes: 1 addition & 1 deletion docs/PROJECT_CONFIGURATION.md
Original file line number Diff line number Diff line change
@@ -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:

Expand Down
42 changes: 21 additions & 21 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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',
},
],
Expand All @@ -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: '@',
},
Expand Down
2 changes: 1 addition & 1 deletion src/app/robots.ts
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion src/app/sitemap.ts
Original file line number Diff line number Diff line change
@@ -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<MetadataRoute.Sitemap> {
const { templates, extensions, categories } = await getTemplatesData();
Expand Down
18 changes: 9 additions & 9 deletions src/lib/__tests__/schemas.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
Expand All @@ -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'],
Expand All @@ -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'],
Expand All @@ -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: [
Expand Down
10 changes: 5 additions & 5 deletions src/lib/__tests__/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
});
});

Expand All @@ -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'],
Expand Down
2 changes: 1 addition & 1 deletion src/lib/data.ts
Original file line number Diff line number Diff line change
@@ -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<TemplatesData> {
try {
Expand Down
Loading
Loading