Files
automaker/apps/ui/src/lib/templates.ts

63 lines
2.2 KiB
TypeScript

/**
* Starter Kit Templates
*
* Define GitHub templates that users can clone when creating new projects.
*/
export interface StarterTemplate {
id: string;
name: string;
description: string;
repoUrl: string;
techStack: string[];
features: string[];
category: "fullstack" | "frontend" | "backend" | "ai" | "other";
author: string;
}
export const starterTemplates: StarterTemplate[] = [
{
id: "agentic-jumpstart",
name: "Agentic Jumpstart",
description: "A starter template for building agentic AI applications with a pre-configured development environment including database setup, Docker support, and TypeScript configuration.",
repoUrl: "https://github.com/webdevcody/agentic-jumpstart-starter-kit",
techStack: ["TypeScript", "Vite", "Drizzle ORM", "Docker", "PostCSS"],
features: [
"Pre-configured VS Code settings",
"Docker Compose setup",
"Database migrations with Drizzle",
"Type-safe development",
"Environment setup with .env.example"
],
category: "ai",
author: "webdevcody"
},
{
id: "full-stack-campus",
name: "Full Stack Campus",
description: "A feature-driven development template for building community platforms. Includes authentication, Stripe payments, file uploads, and real-time features using TanStack Start.",
repoUrl: "https://github.com/webdevcody/full-stack-campus",
techStack: ["TanStack Start", "PostgreSQL", "Drizzle ORM", "Better Auth", "Tailwind CSS", "Radix UI", "Stripe", "AWS S3/R2"],
features: [
"Community posts with comments and reactions",
"User profiles and portfolios",
"Calendar event management",
"Direct messaging",
"Member discovery directory",
"Real-time notifications",
"Tiered subscriptions (free/basic/pro)",
"File uploads with presigned URLs"
],
category: "fullstack",
author: "webdevcody"
}
];
export function getTemplateById(id: string): StarterTemplate | undefined {
return starterTemplates.find(t => t.id === id);
}
export function getTemplatesByCategory(category: StarterTemplate["category"]): StarterTemplate[] {
return starterTemplates.filter(t => t.category === category);
}