@stackweld/templates 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +4 -0
- package/.turbo/turbo-lint.log +694 -0
- package/.turbo/turbo-test.log +15 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/dist/__tests__/templates.test.d.ts +2 -0
- package/dist/__tests__/templates.test.d.ts.map +1 -0
- package/dist/__tests__/templates.test.js +81 -0
- package/dist/__tests__/templates.test.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/astro-landing.d.ts +3 -0
- package/dist/templates/astro-landing.d.ts.map +1 -0
- package/dist/templates/astro-landing.js +36 -0
- package/dist/templates/astro-landing.js.map +1 -0
- package/dist/templates/django-react.d.ts +3 -0
- package/dist/templates/django-react.d.ts.map +1 -0
- package/dist/templates/django-react.js +123 -0
- package/dist/templates/django-react.js.map +1 -0
- package/dist/templates/django-rest-api.d.ts +3 -0
- package/dist/templates/django-rest-api.d.ts.map +1 -0
- package/dist/templates/django-rest-api.js +95 -0
- package/dist/templates/django-rest-api.js.map +1 -0
- package/dist/templates/express-api.d.ts +3 -0
- package/dist/templates/express-api.d.ts.map +1 -0
- package/dist/templates/express-api.js +142 -0
- package/dist/templates/express-api.js.map +1 -0
- package/dist/templates/fastapi-react.d.ts +3 -0
- package/dist/templates/fastapi-react.d.ts.map +1 -0
- package/dist/templates/fastapi-react.js +120 -0
- package/dist/templates/fastapi-react.js.map +1 -0
- package/dist/templates/go-microservice.d.ts +3 -0
- package/dist/templates/go-microservice.d.ts.map +1 -0
- package/dist/templates/go-microservice.js +131 -0
- package/dist/templates/go-microservice.js.map +1 -0
- package/dist/templates/hono-microservice.d.ts +3 -0
- package/dist/templates/hono-microservice.d.ts.map +1 -0
- package/dist/templates/hono-microservice.js +80 -0
- package/dist/templates/hono-microservice.js.map +1 -0
- package/dist/templates/htmx-django.d.ts +3 -0
- package/dist/templates/htmx-django.d.ts.map +1 -0
- package/dist/templates/htmx-django.js +96 -0
- package/dist/templates/htmx-django.js.map +1 -0
- package/dist/templates/laravel-app.d.ts +3 -0
- package/dist/templates/laravel-app.d.ts.map +1 -0
- package/dist/templates/laravel-app.js +95 -0
- package/dist/templates/laravel-app.js.map +1 -0
- package/dist/templates/mern-stack.d.ts +3 -0
- package/dist/templates/mern-stack.d.ts.map +1 -0
- package/dist/templates/mern-stack.js +122 -0
- package/dist/templates/mern-stack.js.map +1 -0
- package/dist/templates/monorepo-starter.d.ts +3 -0
- package/dist/templates/monorepo-starter.d.ts.map +1 -0
- package/dist/templates/monorepo-starter.js +136 -0
- package/dist/templates/monorepo-starter.js.map +1 -0
- package/dist/templates/nestjs-api.d.ts +3 -0
- package/dist/templates/nestjs-api.d.ts.map +1 -0
- package/dist/templates/nestjs-api.js +111 -0
- package/dist/templates/nestjs-api.js.map +1 -0
- package/dist/templates/nuxt3-app.d.ts +3 -0
- package/dist/templates/nuxt3-app.d.ts.map +1 -0
- package/dist/templates/nuxt3-app.js +77 -0
- package/dist/templates/nuxt3-app.js.map +1 -0
- package/dist/templates/python-ai-lab.d.ts +3 -0
- package/dist/templates/python-ai-lab.d.ts.map +1 -0
- package/dist/templates/python-ai-lab.js +152 -0
- package/dist/templates/python-ai-lab.js.map +1 -0
- package/dist/templates/remix-fullstack.d.ts +3 -0
- package/dist/templates/remix-fullstack.d.ts.map +1 -0
- package/dist/templates/remix-fullstack.js +79 -0
- package/dist/templates/remix-fullstack.js.map +1 -0
- package/dist/templates/saas-starter.d.ts +3 -0
- package/dist/templates/saas-starter.d.ts.map +1 -0
- package/dist/templates/saas-starter.js +128 -0
- package/dist/templates/saas-starter.js.map +1 -0
- package/dist/templates/solidstart-app.d.ts +3 -0
- package/dist/templates/solidstart-app.d.ts.map +1 -0
- package/dist/templates/solidstart-app.js +72 -0
- package/dist/templates/solidstart-app.js.map +1 -0
- package/dist/templates/sveltekit-fullstack.d.ts +3 -0
- package/dist/templates/sveltekit-fullstack.d.ts.map +1 -0
- package/dist/templates/sveltekit-fullstack.js +89 -0
- package/dist/templates/sveltekit-fullstack.js.map +1 -0
- package/dist/templates/t3-stack.d.ts +3 -0
- package/dist/templates/t3-stack.d.ts.map +1 -0
- package/dist/templates/t3-stack.js +92 -0
- package/dist/templates/t3-stack.js.map +1 -0
- package/dist/templates/tauri-desktop.d.ts +3 -0
- package/dist/templates/tauri-desktop.d.ts.map +1 -0
- package/dist/templates/tauri-desktop.js +55 -0
- package/dist/templates/tauri-desktop.js.map +1 -0
- package/package.json +33 -0
- package/src/__tests__/templates.test.ts +98 -0
- package/src/index.ts +97 -0
- package/src/templates/astro-landing.ts +40 -0
- package/src/templates/django-react.ts +127 -0
- package/src/templates/django-rest-api.ts +99 -0
- package/src/templates/express-api.ts +147 -0
- package/src/templates/fastapi-react.ts +122 -0
- package/src/templates/go-microservice.ts +133 -0
- package/src/templates/hono-microservice.ts +81 -0
- package/src/templates/htmx-django.ts +100 -0
- package/src/templates/laravel-app.ts +96 -0
- package/src/templates/mern-stack.ts +126 -0
- package/src/templates/monorepo-starter.ts +138 -0
- package/src/templates/nestjs-api.ts +112 -0
- package/src/templates/nuxt3-app.ts +78 -0
- package/src/templates/python-ai-lab.ts +155 -0
- package/src/templates/remix-fullstack.ts +80 -0
- package/src/templates/saas-starter.ts +131 -0
- package/src/templates/solidstart-app.ts +73 -0
- package/src/templates/sveltekit-fullstack.ts +90 -0
- package/src/templates/t3-stack.ts +94 -0
- package/src/templates/tauri-desktop.ts +57 -0
- package/tsconfig.json +10 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
export const expressApi = {
|
|
2
|
+
id: "express-api",
|
|
3
|
+
name: "Express API",
|
|
4
|
+
description: "Production-ready Express.js REST API with TypeScript, Prisma, PostgreSQL, Redis, and Docker",
|
|
5
|
+
technologyIds: ["express", "nodejs", "typescript", "prisma", "postgresql", "redis", "docker"],
|
|
6
|
+
profile: "production",
|
|
7
|
+
scaffoldSteps: [
|
|
8
|
+
{
|
|
9
|
+
name: "Create project directory",
|
|
10
|
+
command: "mkdir -p {{projectName}}/src",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "Initialize Node.js project",
|
|
14
|
+
command: "cd {{projectName}} && npm init -y",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "Install dependencies",
|
|
18
|
+
command: "cd {{projectName}} && npm install express cors helmet dotenv ioredis @prisma/client",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "Install dev dependencies",
|
|
22
|
+
command: "cd {{projectName}} && npm install -D typescript @types/node @types/express @types/cors tsx prisma",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "Initialize TypeScript",
|
|
26
|
+
command: "cd {{projectName}} && npx tsc --init --outDir dist --rootDir src --strict --esModuleInterop --resolveJsonModule",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "Initialize Prisma",
|
|
30
|
+
command: "cd {{projectName}} && npx prisma init --datasource-provider postgresql",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
overrides: [
|
|
34
|
+
{
|
|
35
|
+
path: ".env.example",
|
|
36
|
+
content: [
|
|
37
|
+
"PORT=3000",
|
|
38
|
+
"NODE_ENV=development",
|
|
39
|
+
"DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
|
|
40
|
+
"REDIS_URL=redis://localhost:6379",
|
|
41
|
+
"CORS_ORIGIN=http://localhost:5173",
|
|
42
|
+
].join("\n"),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
path: "docker-compose.yml",
|
|
46
|
+
content: [
|
|
47
|
+
"services:",
|
|
48
|
+
" db:",
|
|
49
|
+
" image: postgres:17",
|
|
50
|
+
" restart: unless-stopped",
|
|
51
|
+
" ports:",
|
|
52
|
+
' - "5432:5432"',
|
|
53
|
+
" environment:",
|
|
54
|
+
" POSTGRES_USER: postgres",
|
|
55
|
+
" POSTGRES_PASSWORD: postgres",
|
|
56
|
+
" POSTGRES_DB: {{projectName}}",
|
|
57
|
+
" volumes:",
|
|
58
|
+
" - pgdata:/var/lib/postgresql/data",
|
|
59
|
+
" healthcheck:",
|
|
60
|
+
' test: ["CMD-SHELL", "pg_isready -U postgres"]',
|
|
61
|
+
" interval: 5s",
|
|
62
|
+
" timeout: 5s",
|
|
63
|
+
" retries: 5",
|
|
64
|
+
"",
|
|
65
|
+
" redis:",
|
|
66
|
+
" image: redis:7-alpine",
|
|
67
|
+
" restart: unless-stopped",
|
|
68
|
+
" ports:",
|
|
69
|
+
' - "6379:6379"',
|
|
70
|
+
" healthcheck:",
|
|
71
|
+
' test: ["CMD", "redis-cli", "ping"]',
|
|
72
|
+
" interval: 5s",
|
|
73
|
+
" timeout: 5s",
|
|
74
|
+
" retries: 5",
|
|
75
|
+
"",
|
|
76
|
+
"volumes:",
|
|
77
|
+
" pgdata:",
|
|
78
|
+
].join("\n"),
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
path: "Dockerfile",
|
|
82
|
+
content: [
|
|
83
|
+
"FROM node:22-alpine AS builder",
|
|
84
|
+
"WORKDIR /app",
|
|
85
|
+
"COPY package*.json ./",
|
|
86
|
+
"RUN npm ci",
|
|
87
|
+
"COPY . .",
|
|
88
|
+
"RUN npx prisma generate",
|
|
89
|
+
"RUN npx tsc",
|
|
90
|
+
"",
|
|
91
|
+
"FROM node:22-alpine",
|
|
92
|
+
"WORKDIR /app",
|
|
93
|
+
"COPY package*.json ./",
|
|
94
|
+
"RUN npm ci --omit=dev",
|
|
95
|
+
"COPY --from=builder /app/dist ./dist",
|
|
96
|
+
"COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma",
|
|
97
|
+
"COPY prisma ./prisma",
|
|
98
|
+
"EXPOSE 3000",
|
|
99
|
+
'CMD ["node", "dist/index.js"]',
|
|
100
|
+
].join("\n"),
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
path: "src/index.ts",
|
|
104
|
+
content: [
|
|
105
|
+
'import express from "express";',
|
|
106
|
+
'import cors from "cors";',
|
|
107
|
+
'import helmet from "helmet";',
|
|
108
|
+
'import dotenv from "dotenv";',
|
|
109
|
+
"",
|
|
110
|
+
"dotenv.config();",
|
|
111
|
+
"",
|
|
112
|
+
"const app = express();",
|
|
113
|
+
"const port = process.env.PORT || 3000;",
|
|
114
|
+
"",
|
|
115
|
+
"app.use(helmet());",
|
|
116
|
+
"app.use(cors({ origin: process.env.CORS_ORIGIN }));",
|
|
117
|
+
"app.use(express.json());",
|
|
118
|
+
"",
|
|
119
|
+
'app.get("/health", (_req, res) => {',
|
|
120
|
+
' res.json({ status: "ok" });',
|
|
121
|
+
"});",
|
|
122
|
+
"",
|
|
123
|
+
"app.listen(port, () => {",
|
|
124
|
+
" console.log(`Server running on port ${port}`);",
|
|
125
|
+
"});",
|
|
126
|
+
].join("\n"),
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
hooks: [
|
|
130
|
+
{
|
|
131
|
+
timing: "post-scaffold",
|
|
132
|
+
name: "Generate Prisma client",
|
|
133
|
+
command: "cd {{projectName}} && npx prisma generate",
|
|
134
|
+
description: "Generate the Prisma client from schema",
|
|
135
|
+
requiresConfirmation: false,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
variables: {
|
|
139
|
+
projectName: "my-express-api",
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=express-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express-api.js","sourceRoot":"","sources":["../../src/templates/express-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastapi-react.d.ts","sourceRoot":"","sources":["../../src/templates/fastapi-react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,YAAY,EAAE,QAuH1B,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export const fastapiReact = {
|
|
2
|
+
id: "fastapi-react",
|
|
3
|
+
name: "FastAPI + React",
|
|
4
|
+
description: "Full-stack app with FastAPI backend, React frontend, PostgreSQL, and Docker",
|
|
5
|
+
technologyIds: [
|
|
6
|
+
"fastapi",
|
|
7
|
+
"python",
|
|
8
|
+
"react",
|
|
9
|
+
"nodejs",
|
|
10
|
+
"typescript",
|
|
11
|
+
"postgresql",
|
|
12
|
+
"tailwindcss",
|
|
13
|
+
],
|
|
14
|
+
profile: "standard",
|
|
15
|
+
scaffoldSteps: [
|
|
16
|
+
{
|
|
17
|
+
name: "Create project directory",
|
|
18
|
+
command: "mkdir -p {{projectName}}/{backend,frontend}",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "Setup Python backend",
|
|
22
|
+
command: "python3 -m venv {{projectName}}/backend/.venv && {{projectName}}/backend/.venv/bin/pip install fastapi uvicorn sqlalchemy psycopg2-binary alembic python-dotenv",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "Create React frontend",
|
|
26
|
+
command: "npx create-vite@latest {{projectName}}/frontend -- --template react-ts",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "Install Tailwind in frontend",
|
|
30
|
+
command: "cd {{projectName}}/frontend && npm install -D tailwindcss @tailwindcss/vite",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
overrides: [
|
|
34
|
+
{
|
|
35
|
+
path: ".env.example",
|
|
36
|
+
content: [
|
|
37
|
+
"# Backend",
|
|
38
|
+
"DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
|
|
39
|
+
"BACKEND_HOST=0.0.0.0",
|
|
40
|
+
"BACKEND_PORT=8000",
|
|
41
|
+
"CORS_ORIGINS=http://localhost:5173",
|
|
42
|
+
"",
|
|
43
|
+
"# Frontend",
|
|
44
|
+
"VITE_API_URL=http://localhost:8000",
|
|
45
|
+
].join("\n"),
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
path: "docker-compose.yml",
|
|
49
|
+
content: [
|
|
50
|
+
"services:",
|
|
51
|
+
" db:",
|
|
52
|
+
" image: postgres:17",
|
|
53
|
+
" restart: unless-stopped",
|
|
54
|
+
" ports:",
|
|
55
|
+
' - "5432:5432"',
|
|
56
|
+
" environment:",
|
|
57
|
+
" POSTGRES_USER: postgres",
|
|
58
|
+
" POSTGRES_PASSWORD: postgres",
|
|
59
|
+
" POSTGRES_DB: {{projectName}}",
|
|
60
|
+
" volumes:",
|
|
61
|
+
" - pgdata:/var/lib/postgresql/data",
|
|
62
|
+
" healthcheck:",
|
|
63
|
+
' test: ["CMD-SHELL", "pg_isready -U postgres"]',
|
|
64
|
+
" interval: 5s",
|
|
65
|
+
" timeout: 5s",
|
|
66
|
+
" retries: 5",
|
|
67
|
+
"",
|
|
68
|
+
"volumes:",
|
|
69
|
+
" pgdata:",
|
|
70
|
+
].join("\n"),
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
path: "backend/requirements.txt",
|
|
74
|
+
content: [
|
|
75
|
+
"fastapi>=0.115",
|
|
76
|
+
"uvicorn[standard]>=0.30",
|
|
77
|
+
"sqlalchemy>=2.0",
|
|
78
|
+
"psycopg2-binary>=2.9",
|
|
79
|
+
"alembic>=1.13",
|
|
80
|
+
"python-dotenv>=1.0",
|
|
81
|
+
].join("\n"),
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
path: "backend/main.py",
|
|
85
|
+
content: [
|
|
86
|
+
"from fastapi import FastAPI",
|
|
87
|
+
"from fastapi.middleware.cors import CORSMiddleware",
|
|
88
|
+
"import os",
|
|
89
|
+
"",
|
|
90
|
+
'app = FastAPI(title="{{projectName}}")',
|
|
91
|
+
"",
|
|
92
|
+
"app.add_middleware(",
|
|
93
|
+
" CORSMiddleware,",
|
|
94
|
+
' allow_origins=os.getenv("CORS_ORIGINS", "http://localhost:5173").split(","),',
|
|
95
|
+
" allow_credentials=True,",
|
|
96
|
+
' allow_methods=["*"],',
|
|
97
|
+
' allow_headers=["*"],',
|
|
98
|
+
")",
|
|
99
|
+
"",
|
|
100
|
+
"",
|
|
101
|
+
'@app.get("/health")',
|
|
102
|
+
"def health():",
|
|
103
|
+
' return {"status": "ok"}',
|
|
104
|
+
].join("\n"),
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
hooks: [
|
|
108
|
+
{
|
|
109
|
+
timing: "post-scaffold",
|
|
110
|
+
name: "Install frontend dependencies",
|
|
111
|
+
command: "cd {{projectName}}/frontend && npm install",
|
|
112
|
+
description: "Install npm dependencies for the React frontend",
|
|
113
|
+
requiresConfirmation: false,
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
variables: {
|
|
117
|
+
projectName: "my-fullstack-app",
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=fastapi-react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastapi-react.js","sourceRoot":"","sources":["../../src/templates/fastapi-react.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAa;IACpC,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,6EAA6E;IAC1F,aAAa,EAAE;QACb,SAAS;QACT,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,aAAa;KACd;IACD,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,6CAA6C;SACvD;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EACL,iKAAiK;SACpK;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,wEAAwE;SAClF;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,6EAA6E;SACvF;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,WAAW;gBACX,4EAA4E;gBAC5E,sBAAsB;gBACtB,mBAAmB;gBACnB,oCAAoC;gBACpC,EAAE;gBACF,YAAY;gBACZ,oCAAoC;aACrC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,OAAO;gBACP,wBAAwB;gBACxB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,+BAA+B;gBAC/B,mCAAmC;gBACnC,oCAAoC;gBACpC,cAAc;gBACd,yCAAyC;gBACzC,kBAAkB;gBAClB,qDAAqD;gBACrD,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE;gBACP,gBAAgB;gBAChB,yBAAyB;gBACzB,iBAAiB;gBACjB,sBAAsB;gBACtB,eAAe;gBACf,oBAAoB;aACrB,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE;gBACP,6BAA6B;gBAC7B,oDAAoD;gBACpD,WAAW;gBACX,EAAE;gBACF,wCAAwC;gBACxC,EAAE;gBACF,qBAAqB;gBACrB,qBAAqB;gBACrB,kFAAkF;gBAClF,6BAA6B;gBAC7B,0BAA0B;gBAC1B,0BAA0B;gBAC1B,GAAG;gBACH,EAAE;gBACF,EAAE;gBACF,qBAAqB;gBACrB,eAAe;gBACf,6BAA6B;aAC9B,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,4CAA4C;YACrD,WAAW,EAAE,iDAAiD;YAC9D,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,kBAAkB;KAChC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go-microservice.d.ts","sourceRoot":"","sources":["../../src/templates/go-microservice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,cAAc,EAAE,QAkI5B,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export const goMicroservice = {
|
|
2
|
+
id: "go-microservice",
|
|
3
|
+
name: "Go Microservice",
|
|
4
|
+
description: "Lightweight Go microservice with Gin, PostgreSQL, Docker, and health checks",
|
|
5
|
+
technologyIds: ["go", "gin", "postgresql", "redis", "docker"],
|
|
6
|
+
profile: "production",
|
|
7
|
+
scaffoldSteps: [
|
|
8
|
+
{
|
|
9
|
+
name: "Create project directory",
|
|
10
|
+
command: "mkdir -p {{projectName}}/{cmd/server,internal/{handlers,models,middleware},pkg}",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "Initialize Go module",
|
|
14
|
+
command: "cd {{projectName}} && go mod init {{moduleName}}",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "Install dependencies",
|
|
18
|
+
command: "cd {{projectName}} && go get github.com/gin-gonic/gin github.com/lib/pq github.com/redis/go-redis/v9 github.com/joho/godotenv",
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
overrides: [
|
|
22
|
+
{
|
|
23
|
+
path: ".env.example",
|
|
24
|
+
content: [
|
|
25
|
+
"PORT=8080",
|
|
26
|
+
"GIN_MODE=debug",
|
|
27
|
+
"DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
|
|
28
|
+
"REDIS_URL=redis://localhost:6379/0",
|
|
29
|
+
].join("\n"),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
path: "docker-compose.yml",
|
|
33
|
+
content: [
|
|
34
|
+
"services:",
|
|
35
|
+
" db:",
|
|
36
|
+
" image: postgres:17",
|
|
37
|
+
" restart: unless-stopped",
|
|
38
|
+
" ports:",
|
|
39
|
+
' - "5432:5432"',
|
|
40
|
+
" environment:",
|
|
41
|
+
" POSTGRES_USER: postgres",
|
|
42
|
+
" POSTGRES_PASSWORD: postgres",
|
|
43
|
+
" POSTGRES_DB: {{projectName}}",
|
|
44
|
+
" volumes:",
|
|
45
|
+
" - pgdata:/var/lib/postgresql/data",
|
|
46
|
+
" healthcheck:",
|
|
47
|
+
' test: ["CMD-SHELL", "pg_isready -U postgres"]',
|
|
48
|
+
" interval: 5s",
|
|
49
|
+
" timeout: 5s",
|
|
50
|
+
" retries: 5",
|
|
51
|
+
"",
|
|
52
|
+
" redis:",
|
|
53
|
+
" image: redis:7-alpine",
|
|
54
|
+
" restart: unless-stopped",
|
|
55
|
+
" ports:",
|
|
56
|
+
' - "6379:6379"',
|
|
57
|
+
" healthcheck:",
|
|
58
|
+
' test: ["CMD", "redis-cli", "ping"]',
|
|
59
|
+
" interval: 5s",
|
|
60
|
+
" timeout: 5s",
|
|
61
|
+
" retries: 5",
|
|
62
|
+
"",
|
|
63
|
+
"volumes:",
|
|
64
|
+
" pgdata:",
|
|
65
|
+
].join("\n"),
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
path: "Dockerfile",
|
|
69
|
+
content: [
|
|
70
|
+
"FROM golang:1.23-alpine AS builder",
|
|
71
|
+
"WORKDIR /app",
|
|
72
|
+
"COPY go.mod go.sum ./",
|
|
73
|
+
"RUN go mod download",
|
|
74
|
+
"COPY . .",
|
|
75
|
+
"RUN CGO_ENABLED=0 go build -o server ./cmd/server",
|
|
76
|
+
"",
|
|
77
|
+
"FROM alpine:3.19",
|
|
78
|
+
"RUN apk --no-cache add ca-certificates",
|
|
79
|
+
"WORKDIR /app",
|
|
80
|
+
"COPY --from=builder /app/server .",
|
|
81
|
+
"EXPOSE 8080",
|
|
82
|
+
'CMD ["./server"]',
|
|
83
|
+
].join("\n"),
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
path: "cmd/server/main.go",
|
|
87
|
+
content: [
|
|
88
|
+
"package main",
|
|
89
|
+
"",
|
|
90
|
+
"import (",
|
|
91
|
+
'\t"log"',
|
|
92
|
+
'\t"os"',
|
|
93
|
+
"",
|
|
94
|
+
'\t"github.com/gin-gonic/gin"',
|
|
95
|
+
'\t"github.com/joho/godotenv"',
|
|
96
|
+
")",
|
|
97
|
+
"",
|
|
98
|
+
"func main() {",
|
|
99
|
+
"\tgodotenv.Load()",
|
|
100
|
+
"",
|
|
101
|
+
'\tport := os.Getenv("PORT")',
|
|
102
|
+
'\tif port == "" {',
|
|
103
|
+
'\t\tport = "8080"',
|
|
104
|
+
"\t}",
|
|
105
|
+
"",
|
|
106
|
+
"\tr := gin.Default()",
|
|
107
|
+
"",
|
|
108
|
+
'\tr.GET("/health", func(c *gin.Context) {',
|
|
109
|
+
'\t\tc.JSON(200, gin.H{"status": "ok"})',
|
|
110
|
+
"\t})",
|
|
111
|
+
"",
|
|
112
|
+
'\tlog.Fatal(r.Run(":" + port))',
|
|
113
|
+
"}",
|
|
114
|
+
].join("\n"),
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
hooks: [
|
|
118
|
+
{
|
|
119
|
+
timing: "post-scaffold",
|
|
120
|
+
name: "Tidy Go modules",
|
|
121
|
+
command: "cd {{projectName}} && go mod tidy",
|
|
122
|
+
description: "Clean up Go module dependencies",
|
|
123
|
+
requiresConfirmation: false,
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
variables: {
|
|
127
|
+
projectName: "my-go-service",
|
|
128
|
+
moduleName: "github.com/user/my-go-service",
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=go-microservice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go-microservice.js","sourceRoot":"","sources":["../../src/templates/go-microservice.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAa;IACtC,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,6EAA6E;IAC1F,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC7D,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,iFAAiF;SAC3F;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,kDAAkD;SAC5D;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EACL,+HAA+H;SAClI;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,WAAW;gBACX,gBAAgB;gBAChB,4EAA4E;gBAC5E,oCAAoC;aACrC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,OAAO;gBACP,wBAAwB;gBACxB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,+BAA+B;gBAC/B,mCAAmC;gBACnC,oCAAoC;gBACpC,cAAc;gBACd,yCAAyC;gBACzC,kBAAkB;gBAClB,qDAAqD;gBACrD,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,2BAA2B;gBAC3B,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,0CAA0C;gBAC1C,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,oCAAoC;gBACpC,cAAc;gBACd,uBAAuB;gBACvB,qBAAqB;gBACrB,UAAU;gBACV,mDAAmD;gBACnD,EAAE;gBACF,kBAAkB;gBAClB,wCAAwC;gBACxC,cAAc;gBACd,mCAAmC;gBACnC,aAAa;gBACb,kBAAkB;aACnB,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,cAAc;gBACd,EAAE;gBACF,UAAU;gBACV,SAAS;gBACT,QAAQ;gBACR,EAAE;gBACF,8BAA8B;gBAC9B,8BAA8B;gBAC9B,GAAG;gBACH,EAAE;gBACF,eAAe;gBACf,mBAAmB;gBACnB,EAAE;gBACF,6BAA6B;gBAC7B,mBAAmB;gBACnB,mBAAmB;gBACnB,KAAK;gBACL,EAAE;gBACF,sBAAsB;gBACtB,EAAE;gBACF,2CAA2C;gBAC3C,wCAAwC;gBACxC,MAAM;gBACN,EAAE;gBACF,gCAAgC;gBAChC,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,mCAAmC;YAC5C,WAAW,EAAE,iCAAiC;YAC9C,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,+BAA+B;KAC5C;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-microservice.d.ts","sourceRoot":"","sources":["../../src/templates/hono-microservice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,EAAE,QA8E9B,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export const honoMicroservice = {
|
|
2
|
+
id: "hono-microservice",
|
|
3
|
+
name: "Hono Microservice",
|
|
4
|
+
description: "Lightweight Hono microservice with Bun runtime, PostgreSQL, and Docker",
|
|
5
|
+
technologyIds: ["hono", "nodejs", "typescript", "postgresql", "docker"],
|
|
6
|
+
profile: "lightweight",
|
|
7
|
+
scaffoldSteps: [
|
|
8
|
+
{
|
|
9
|
+
name: "Create Hono project",
|
|
10
|
+
command: "npm create hono@latest {{projectName}} -- --template bun",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "Install database dependencies",
|
|
14
|
+
command: "cd {{projectName}} && bun add postgres dotenv",
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
overrides: [
|
|
18
|
+
{
|
|
19
|
+
path: ".env.example",
|
|
20
|
+
content: [
|
|
21
|
+
"PORT=3000",
|
|
22
|
+
"DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
|
|
23
|
+
].join("\n"),
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
path: "docker-compose.yml",
|
|
27
|
+
content: [
|
|
28
|
+
"services:",
|
|
29
|
+
" db:",
|
|
30
|
+
" image: postgres:17",
|
|
31
|
+
" restart: unless-stopped",
|
|
32
|
+
" ports:",
|
|
33
|
+
' - "5432:5432"',
|
|
34
|
+
" environment:",
|
|
35
|
+
" POSTGRES_USER: postgres",
|
|
36
|
+
" POSTGRES_PASSWORD: postgres",
|
|
37
|
+
" POSTGRES_DB: {{projectName}}",
|
|
38
|
+
" volumes:",
|
|
39
|
+
" - pgdata:/var/lib/postgresql/data",
|
|
40
|
+
" healthcheck:",
|
|
41
|
+
' test: ["CMD-SHELL", "pg_isready -U postgres"]',
|
|
42
|
+
" interval: 5s",
|
|
43
|
+
" timeout: 5s",
|
|
44
|
+
" retries: 5",
|
|
45
|
+
"",
|
|
46
|
+
"volumes:",
|
|
47
|
+
" pgdata:",
|
|
48
|
+
].join("\n"),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
path: "Dockerfile",
|
|
52
|
+
content: [
|
|
53
|
+
"FROM oven/bun:1 AS builder",
|
|
54
|
+
"WORKDIR /app",
|
|
55
|
+
"COPY package.json bun.lockb ./",
|
|
56
|
+
"RUN bun install --frozen-lockfile",
|
|
57
|
+
"COPY . .",
|
|
58
|
+
"",
|
|
59
|
+
"FROM oven/bun:1-slim",
|
|
60
|
+
"WORKDIR /app",
|
|
61
|
+
"COPY --from=builder /app .",
|
|
62
|
+
"EXPOSE 3000",
|
|
63
|
+
'CMD ["bun", "run", "src/index.ts"]',
|
|
64
|
+
].join("\n"),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
hooks: [
|
|
68
|
+
{
|
|
69
|
+
timing: "post-scaffold",
|
|
70
|
+
name: "Install dependencies",
|
|
71
|
+
command: "cd {{projectName}} && bun install",
|
|
72
|
+
description: "Install all Bun dependencies",
|
|
73
|
+
requiresConfirmation: false,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
variables: {
|
|
77
|
+
projectName: "my-hono-service",
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=hono-microservice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-microservice.js","sourceRoot":"","sources":["../../src/templates/hono-microservice.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,wEAAwE;IACrF,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC;IACvE,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,0DAA0D;SACpE;QACD;YACE,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,+CAA+C;SACzD;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,WAAW;gBACX,4EAA4E;aAC7E,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,OAAO;gBACP,wBAAwB;gBACxB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,+BAA+B;gBAC/B,mCAAmC;gBACnC,oCAAoC;gBACpC,cAAc;gBACd,yCAAyC;gBACzC,kBAAkB;gBAClB,qDAAqD;gBACrD,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,4BAA4B;gBAC5B,cAAc;gBACd,gCAAgC;gBAChC,mCAAmC;gBACnC,UAAU;gBACV,EAAE;gBACF,sBAAsB;gBACtB,cAAc;gBACd,4BAA4B;gBAC5B,aAAa;gBACb,oCAAoC;aACrC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,mCAAmC;YAC5C,WAAW,EAAE,8BAA8B;YAC3C,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,iBAAiB;KAC/B;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htmx-django.d.ts","sourceRoot":"","sources":["../../src/templates/htmx-django.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,UAAU,EAAE,QAiGxB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const htmxDjango = {
|
|
2
|
+
id: "htmx-django",
|
|
3
|
+
name: "HTMX + Django",
|
|
4
|
+
description: "Server-rendered Django app with HTMX for interactivity, Tailwind CSS, and PostgreSQL — minimal JavaScript",
|
|
5
|
+
technologyIds: ["htmx", "django", "python", "postgresql", "tailwindcss"],
|
|
6
|
+
profile: "lightweight",
|
|
7
|
+
scaffoldSteps: [
|
|
8
|
+
{
|
|
9
|
+
name: "Create project directory",
|
|
10
|
+
command: "mkdir -p {{projectName}}",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "Setup Python virtual environment",
|
|
14
|
+
command: "python3 -m venv {{projectName}}/.venv",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "Install Python dependencies",
|
|
18
|
+
command: "{{projectName}}/.venv/bin/pip install django psycopg2-binary django-htmx python-dotenv gunicorn whitenoise",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "Create Django project",
|
|
22
|
+
command: "{{projectName}}/.venv/bin/django-admin startproject config {{projectName}}",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "Install Tailwind standalone CLI",
|
|
26
|
+
command: "cd {{projectName}} && mkdir -p static/css && curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 && chmod +x tailwindcss-linux-x64",
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
overrides: [
|
|
30
|
+
{
|
|
31
|
+
path: ".env.example",
|
|
32
|
+
content: [
|
|
33
|
+
"DEBUG=True",
|
|
34
|
+
"SECRET_KEY=change-me-in-production",
|
|
35
|
+
"DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
|
|
36
|
+
"ALLOWED_HOSTS=localhost,127.0.0.1",
|
|
37
|
+
].join("\n"),
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
path: "docker-compose.yml",
|
|
41
|
+
content: [
|
|
42
|
+
"services:",
|
|
43
|
+
" db:",
|
|
44
|
+
" image: postgres:17",
|
|
45
|
+
" restart: unless-stopped",
|
|
46
|
+
" ports:",
|
|
47
|
+
' - "5432:5432"',
|
|
48
|
+
" environment:",
|
|
49
|
+
" POSTGRES_USER: postgres",
|
|
50
|
+
" POSTGRES_PASSWORD: postgres",
|
|
51
|
+
" POSTGRES_DB: {{projectName}}",
|
|
52
|
+
" volumes:",
|
|
53
|
+
" - pgdata:/var/lib/postgresql/data",
|
|
54
|
+
" healthcheck:",
|
|
55
|
+
' test: ["CMD-SHELL", "pg_isready -U postgres"]',
|
|
56
|
+
" interval: 5s",
|
|
57
|
+
" timeout: 5s",
|
|
58
|
+
" retries: 5",
|
|
59
|
+
"",
|
|
60
|
+
"volumes:",
|
|
61
|
+
" pgdata:",
|
|
62
|
+
].join("\n"),
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
path: "requirements.txt",
|
|
66
|
+
content: [
|
|
67
|
+
"django>=5.1",
|
|
68
|
+
"psycopg2-binary>=2.9",
|
|
69
|
+
"django-htmx>=1.19",
|
|
70
|
+
"python-dotenv>=1.0",
|
|
71
|
+
"gunicorn>=22.0",
|
|
72
|
+
"whitenoise>=6.7",
|
|
73
|
+
].join("\n"),
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
hooks: [
|
|
77
|
+
{
|
|
78
|
+
timing: "post-scaffold",
|
|
79
|
+
name: "Run initial migrations",
|
|
80
|
+
command: "cd {{projectName}} && .venv/bin/python manage.py migrate",
|
|
81
|
+
description: "Run Django migrations (requires running PostgreSQL)",
|
|
82
|
+
requiresConfirmation: true,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
timing: "post-scaffold",
|
|
86
|
+
name: "Freeze requirements",
|
|
87
|
+
command: "cd {{projectName}} && .venv/bin/pip freeze > requirements.lock",
|
|
88
|
+
description: "Generate locked requirements file",
|
|
89
|
+
requiresConfirmation: false,
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
variables: {
|
|
93
|
+
projectName: "my-htmx-app",
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=htmx-django.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htmx-django.js","sourceRoot":"","sources":["../../src/templates/htmx-django.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,2GAA2G;IAC7G,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;IACxE,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,0BAA0B;SACpC;QACD;YACE,IAAI,EAAE,kCAAkC;YACxC,OAAO,EAAE,uCAAuC;SACjD;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,OAAO,EACL,4GAA4G;SAC/G;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,4EAA4E;SACtF;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,OAAO,EACL,qLAAqL;SACxL;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,YAAY;gBACZ,oCAAoC;gBACpC,4EAA4E;gBAC5E,mCAAmC;aACpC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,OAAO;gBACP,wBAAwB;gBACxB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,+BAA+B;gBAC/B,mCAAmC;gBACnC,oCAAoC;gBACpC,cAAc;gBACd,yCAAyC;gBACzC,kBAAkB;gBAClB,qDAAqD;gBACrD,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE;gBACP,aAAa;gBACb,sBAAsB;gBACtB,mBAAmB;gBACnB,oBAAoB;gBACpB,gBAAgB;gBAChB,iBAAiB;aAClB,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,0DAA0D;YACnE,WAAW,EAAE,qDAAqD;YAClE,oBAAoB,EAAE,IAAI;SAC3B;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,gEAAgE;YACzE,WAAW,EAAE,mCAAmC;YAChD,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"laravel-app.d.ts","sourceRoot":"","sources":["../../src/templates/laravel-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,UAAU,EAAE,QA6FxB,CAAC"}
|