2024-11-24 00:22:10 -05:00
|
|
|
export interface TemplateConfig {
|
2024-11-29 13:05:35 -05:00
|
|
|
id: string
|
|
|
|
name: string
|
|
|
|
runCommand: string
|
|
|
|
fileStructure: {
|
|
|
|
[key: string]: {
|
|
|
|
purpose: string
|
|
|
|
description: string
|
2024-11-24 00:22:10 -05:00
|
|
|
}
|
|
|
|
}
|
2024-11-29 13:05:35 -05:00
|
|
|
conventions: string[]
|
|
|
|
dependencies?: {
|
|
|
|
[key: string]: string
|
|
|
|
}
|
|
|
|
scripts?: {
|
|
|
|
[key: string]: string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const templateConfigs: { [key: string]: TemplateConfig } = {
|
|
|
|
reactjs: {
|
|
|
|
id: "reactjs",
|
|
|
|
name: "React",
|
|
|
|
runCommand: "npm run dev",
|
|
|
|
fileStructure: {
|
|
|
|
"src/": {
|
|
|
|
purpose: "source",
|
|
|
|
description: "Contains all React components and application logic",
|
|
|
|
},
|
|
|
|
"src/components/": {
|
|
|
|
purpose: "components",
|
|
|
|
description: "Reusable React components",
|
|
|
|
},
|
|
|
|
"src/lib/": {
|
|
|
|
purpose: "utilities",
|
|
|
|
description: "Utility functions and shared code",
|
|
|
|
},
|
|
|
|
"src/App.tsx": {
|
|
|
|
purpose: "entry",
|
|
|
|
description: "Main application component",
|
|
|
|
},
|
|
|
|
"src/index.tsx": {
|
|
|
|
purpose: "entry",
|
|
|
|
description: "Application entry point",
|
|
|
|
},
|
|
|
|
"src/index.css": {
|
|
|
|
purpose: "styles",
|
|
|
|
description: "Global CSS styles",
|
|
|
|
},
|
|
|
|
"public/": {
|
|
|
|
purpose: "static",
|
|
|
|
description: "Static assets and index.html",
|
|
|
|
},
|
|
|
|
"tsconfig.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "TypeScript configuration",
|
|
|
|
},
|
|
|
|
"vite.config.ts": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Vite bundler configuration",
|
|
|
|
},
|
|
|
|
"package.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Project dependencies and scripts",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
conventions: [
|
|
|
|
"Use functional components with hooks",
|
|
|
|
"Follow React naming conventions (PascalCase for components)",
|
|
|
|
"Keep components small and focused",
|
|
|
|
"Use TypeScript for type safety",
|
|
|
|
],
|
|
|
|
dependencies: {
|
|
|
|
"@radix-ui/react-icons": "^1.3.0",
|
|
|
|
"@radix-ui/react-slot": "^1.1.0",
|
|
|
|
"class-variance-authority": "^0.7.0",
|
|
|
|
clsx: "^2.1.1",
|
|
|
|
"lucide-react": "^0.441.0",
|
|
|
|
react: "^18.3.1",
|
|
|
|
"react-dom": "^18.3.1",
|
|
|
|
"tailwind-merge": "^2.5.2",
|
|
|
|
"tailwindcss-animate": "^1.0.7",
|
|
|
|
},
|
|
|
|
scripts: {
|
|
|
|
dev: "vite",
|
|
|
|
build: "tsc && vite build",
|
|
|
|
preview: "vite preview",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// Next.js template config
|
|
|
|
nextjs: {
|
|
|
|
id: "nextjs",
|
|
|
|
name: "NextJS",
|
|
|
|
runCommand: "npm run dev",
|
|
|
|
fileStructure: {
|
|
|
|
"pages/": {
|
|
|
|
purpose: "routing",
|
|
|
|
description: "Page components and API routes",
|
|
|
|
},
|
|
|
|
"pages/api/": {
|
|
|
|
purpose: "api",
|
|
|
|
description: "API route handlers",
|
|
|
|
},
|
|
|
|
"pages/_app.tsx": {
|
|
|
|
purpose: "entry",
|
|
|
|
description: "Application wrapper component",
|
|
|
|
},
|
|
|
|
"pages/index.tsx": {
|
|
|
|
purpose: "page",
|
|
|
|
description: "Homepage component",
|
|
|
|
},
|
|
|
|
"public/": {
|
|
|
|
purpose: "static",
|
|
|
|
description: "Static assets and files",
|
|
|
|
},
|
|
|
|
"styles/": {
|
|
|
|
purpose: "styles",
|
|
|
|
description: "CSS modules and global styles",
|
|
|
|
},
|
|
|
|
"styles/globals.css": {
|
|
|
|
purpose: "styles",
|
|
|
|
description: "Global CSS styles",
|
|
|
|
},
|
|
|
|
"styles/Home.module.css": {
|
|
|
|
purpose: "styles",
|
|
|
|
description: "Homepage-specific styles",
|
|
|
|
},
|
|
|
|
"next.config.js": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Next.js configuration",
|
|
|
|
},
|
|
|
|
"next-env.d.ts": {
|
|
|
|
purpose: "types",
|
|
|
|
description: "Next.js TypeScript declarations",
|
|
|
|
},
|
|
|
|
"tsconfig.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "TypeScript configuration",
|
|
|
|
},
|
|
|
|
"package.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Project dependencies and scripts",
|
|
|
|
},
|
2024-11-24 00:22:10 -05:00
|
|
|
},
|
2024-11-29 13:05:35 -05:00
|
|
|
conventions: [
|
|
|
|
"Use file-system based routing",
|
|
|
|
"Keep API routes in pages/api",
|
|
|
|
"Use CSS Modules for component styles",
|
|
|
|
"Follow Next.js data fetching patterns",
|
|
|
|
],
|
|
|
|
dependencies: {
|
|
|
|
next: "^14.1.0",
|
|
|
|
react: "^18.2.0",
|
|
|
|
"react-dom": "18.2.0",
|
|
|
|
tailwindcss: "^3.4.1",
|
2024-11-24 00:22:10 -05:00
|
|
|
},
|
2024-11-29 13:05:35 -05:00
|
|
|
scripts: {
|
|
|
|
dev: "next dev",
|
|
|
|
build: "next build",
|
|
|
|
start: "next start",
|
|
|
|
lint: "next lint",
|
2024-11-24 00:22:10 -05:00
|
|
|
},
|
2024-11-29 13:05:35 -05:00
|
|
|
},
|
|
|
|
// Streamlit template config
|
|
|
|
streamlit: {
|
|
|
|
id: "streamlit",
|
|
|
|
name: "Streamlit",
|
|
|
|
runCommand: "./venv/bin/streamlit run main.py --server.runOnSave true",
|
|
|
|
fileStructure: {
|
|
|
|
"main.py": {
|
|
|
|
purpose: "entry",
|
|
|
|
description: "Main Streamlit application file",
|
|
|
|
},
|
|
|
|
"requirements.txt": {
|
|
|
|
purpose: "dependencies",
|
|
|
|
description: "Python package dependencies",
|
|
|
|
},
|
|
|
|
Procfile: {
|
|
|
|
purpose: "deployment",
|
|
|
|
description: "Deployment configuration for hosting platforms",
|
|
|
|
},
|
|
|
|
"venv/": {
|
|
|
|
purpose: "environment",
|
|
|
|
description: "Python virtual environment directory",
|
|
|
|
},
|
2024-11-25 16:37:33 -05:00
|
|
|
},
|
2024-11-29 13:05:35 -05:00
|
|
|
conventions: [
|
|
|
|
"Use Streamlit components for UI",
|
|
|
|
"Follow PEP 8 style guide",
|
|
|
|
"Keep dependencies in requirements.txt",
|
|
|
|
"Use virtual environment for isolation",
|
|
|
|
],
|
|
|
|
dependencies: {
|
|
|
|
streamlit: "^1.40.0",
|
|
|
|
altair: "^5.5.0",
|
|
|
|
},
|
|
|
|
scripts: {
|
|
|
|
start: "streamlit run main.py",
|
|
|
|
dev: "./venv/bin/streamlit run main.py --server.runOnSave true",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// HTML template config
|
|
|
|
vanillajs: {
|
|
|
|
id: "vanillajs",
|
|
|
|
name: "HTML/JS",
|
|
|
|
runCommand: "npm run dev",
|
|
|
|
fileStructure: {
|
|
|
|
"index.html": {
|
|
|
|
purpose: "entry",
|
|
|
|
description: "Main HTML entry point",
|
|
|
|
},
|
|
|
|
"style.css": {
|
|
|
|
purpose: "styles",
|
|
|
|
description: "Global CSS styles",
|
|
|
|
},
|
|
|
|
"script.js": {
|
|
|
|
purpose: "scripts",
|
|
|
|
description: "JavaScript application logic",
|
|
|
|
},
|
|
|
|
"package.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Project dependencies and scripts",
|
|
|
|
},
|
|
|
|
"package-lock.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Locked dependency versions",
|
|
|
|
},
|
|
|
|
"vite.config.js": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Vite bundler configuration",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
conventions: [
|
|
|
|
"Use semantic HTML elements",
|
|
|
|
"Keep CSS modular and organized",
|
|
|
|
"Write clean, modular JavaScript",
|
|
|
|
"Follow modern ES6+ practices",
|
|
|
|
],
|
|
|
|
dependencies: {
|
|
|
|
vite: "^5.0.12",
|
|
|
|
},
|
|
|
|
scripts: {
|
|
|
|
dev: "vite",
|
|
|
|
build: "vite build",
|
|
|
|
preview: "vite preview",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// PHP template config
|
|
|
|
php: {
|
|
|
|
id: "php",
|
|
|
|
name: "PHP",
|
|
|
|
runCommand: "npx vite",
|
|
|
|
fileStructure: {
|
|
|
|
"index.php": {
|
|
|
|
purpose: "entry",
|
|
|
|
description: "Main PHP entry point",
|
|
|
|
},
|
|
|
|
"package.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Frontend dependencies and scripts",
|
|
|
|
},
|
|
|
|
"package-lock.json": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Locked dependency versions",
|
|
|
|
},
|
|
|
|
"vite.config.js": {
|
|
|
|
purpose: "config",
|
|
|
|
description: "Vite configuration for frontend assets",
|
|
|
|
},
|
|
|
|
"node_modules/": {
|
|
|
|
purpose: "dependencies",
|
|
|
|
description: "Frontend dependency files",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
conventions: [
|
|
|
|
"Follow PSR-12 coding standards",
|
|
|
|
"Use modern PHP 8+ features",
|
|
|
|
"Organize assets with Vite",
|
|
|
|
"Keep PHP logic separate from presentation",
|
|
|
|
],
|
|
|
|
dependencies: {
|
|
|
|
vite: "^5.0.0",
|
|
|
|
},
|
|
|
|
scripts: {
|
|
|
|
dev: "vite",
|
|
|
|
build: "vite build",
|
|
|
|
preview: "vite preview",
|
|
|
|
},
|
|
|
|
},
|
2024-11-24 00:22:10 -05:00
|
|
|
}
|