Remove GitHub Actions and SEO addons

This commit is contained in:
Aman Varshney
2025-03-20 23:32:40 +05:30
parent 3172b5bebb
commit 17db765a02
12 changed files with 49 additions and 242 deletions

View File

@@ -19,11 +19,11 @@ export const DEFAULT_CONFIG: ProjectConfig = {
export const dependencyVersionMap = {
// Authentication
"better-auth": "^1.1.16",
"better-auth": "^1.2.4",
// Database - Drizzle
"drizzle-orm": "^0.38.4",
"drizzle-kit": "^0.30.4",
"drizzle-kit": "^0.30.5",
// Database - SQLite/PostgreSQL
"@libsql/client": "^0.14.0",

View File

@@ -6,19 +6,6 @@ export async function setupAddons(projectDir: string, addons: ProjectAddons[]) {
if (addons.includes("docker")) {
await setupDocker(projectDir);
}
if (addons.includes("github-actions")) {
await setupGithubActions(projectDir);
}
if (addons.includes("SEO")) {
// log.info(
// pc.yellow(
// "SEO feature is still a work-in-progress and will be available in a future update.",
// ),
// );
await setupSEO(projectDir);
}
}
async function setupDocker(projectDir: string) {
@@ -103,181 +90,3 @@ node_modules
dockerignoreContent,
);
}
async function setupGithubActions(projectDir: string) {
const workflowsDir = path.join(projectDir, ".github/workflows");
await fs.ensureDir(workflowsDir);
const ciWorkflowContent = `name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Type check
run: npm run check-types
- name: Build
run: npm run build
`;
const deployWorkflowContent = `name: Deploy
on:
push:
branches: [ main ]
# Enable manual trigger
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
# Add your deployment steps here
# This is just a placeholder for your actual deployment logic
- name: Deploy
run: echo "Add your deployment commands here"
`;
await fs.writeFile(path.join(workflowsDir, "ci.yml"), ciWorkflowContent);
await fs.writeFile(
path.join(workflowsDir, "deploy.yml"),
deployWorkflowContent,
);
}
async function setupSEO(projectDir: string) {
const robotsContent = `# Instructions: Customize this file to control how search engines crawl your site
# Learn more: https://developers.google.com/search/docs/advanced/robots/create-robots-txt
# Allow all crawlers (default)
User-agent: *
Allow: /
# Disallow crawling of specific directories (uncomment and customize as needed)
# Disallow: /admin/
# Disallow: /private/
# Specify the location of your sitemap
Sitemap: https://yourdomain.com/sitemap.xml
`;
await fs.writeFile(
path.join(projectDir, "packages", "client", "robots.txt"),
robotsContent,
);
const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yourdomain.com/</loc>
<lastmod>2025-03-01</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://yourdomain.com/about</loc>
<lastmod>2025-03-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
`;
await fs.writeFile(
path.join(projectDir, "packages", "client", "sitemap.xml"),
sitemapContent,
);
const metaContent = `<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TanStack Router</title>
<meta name="description"
content="Replace this with your page description - keep it between 150-160 characters for optimal display in search results." />
<meta name="keywords" content="keyword1, keyword2, keyword3, customize based on your content" />
<meta name="robots" content="index, follow" />
<link rel="icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<!-- OPEN GRAPH TAGS: Optimize how your content appears when shared on Facebook, LinkedIn, etc. -->
<meta property="og:title" content="Replace with your page title" />
<meta property="og:description"
content="Replace with your page description (typically the same as meta description)" />
<meta property="og:image" content="path-to-image" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Your Site Name" />
<!-- TWITTER CARD TAGS: Optimize how your content appears when shared on Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Replace with your page title" />
<meta name="twitter:description" content="Replace with your page description" />
<meta name="twitter:image" content="path-to-image" />
<meta name="twitter:creator" content="@yourtwitterhandle" />
<!-- STRUCTURED DATA: Help search engines understand your content better (JSON-LD format) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "Replace with your page title",
"description": "Replace with your page description",
"url": "https://yourdomain.com/your-page-url"
}
</script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
`;
await fs.writeFile(
path.join(projectDir, "packages", "client", "index.html"),
metaContent,
);
}

View File

@@ -99,10 +99,6 @@ function generateFeaturesList(
for (const feature of features) {
if (feature === "docker") {
featuresList.push("- **Docker** - Containerized deployment");
} else if (feature === "github-actions") {
featuresList.push("- **GitHub Actions** - CI/CD workflows");
} else if (feature === "SEO") {
featuresList.push("- **SEO** - Search engine optimization tools");
}
}

View File

@@ -31,8 +31,6 @@ async function main() {
.option("--auth", "Include authentication")
.option("--no-auth", "Exclude authentication")
.option("--docker", "Include Docker setup")
.option("--github-actions", "Include GitHub Actions")
.option("--seo", "Include SEO setup")
.option("--no-addons", "Skip all additional addons")
.option("--git", "Include git setup")
.option("--no-git", "Skip git initialization")
@@ -72,18 +70,11 @@ async function main() {
...("git" in options && { git: options.git }),
...("install" in options && { noInstall: !options.install }),
...("turso" in options && { turso: options.turso }),
...((options.docker ||
options.githubActions ||
options.seo ||
options.addons === false) && {
...((options.docker || options.addons === false) && {
addons:
options.addons === false
? []
: ([
...(options.docker ? ["docker"] : []),
...(options.githubActions ? ["github-actions"] : []),
...(options.seo ? ["SEO"] : []),
] as ProjectAddons[]),
: ([...(options.docker ? ["docker"] : [])] as ProjectAddons[]),
}),
};

View File

@@ -15,16 +15,6 @@ export async function getAddonsChoice(
label: "Docker setup",
hint: "Containerize your application",
},
{
value: "github-actions",
label: "GitHub Actions",
hint: "CI/CD workflows",
},
{
value: "SEO",
label: "Basic SEO setup",
hint: "Search engine optimization configuration",
},
],
required: false,
});

View File

@@ -1,7 +1,7 @@
export type ProjectDatabase = "sqlite" | "postgres" | "none";
export type ProjectOrm = "drizzle" | "prisma" | "none";
export type PackageManager = "npm" | "pnpm" | "yarn" | "bun";
export type ProjectAddons = "docker" | "github-actions" | "SEO";
export type ProjectAddons = "docker";
export interface ProjectConfig {
projectName: string;