deploy-bbc 0.0.1 โ†’ 1.0.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/cli/README.md CHANGED
@@ -0,0 +1,345 @@
1
+ # ๐Ÿš€ deploy-bbc (Best Backend Code)
2
+
3
+ Bootstrap production-ready backend projects with Bun, TypeScript, and Docker in seconds.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/deploy-bbc.svg)](https://www.npmjs.com/package/deploy-bbc)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## โœจ Features
9
+
10
+ - ๐ŸŽฏ **Interactive CLI** - Step-by-step project setup with beautiful prompts
11
+ - โšก **3 Framework Options** - Choose between Hono, Express, or Bun Native
12
+ - ๐Ÿ—„๏ธ **Multiple Databases** - PostgreSQL, MySQL, MongoDB, Redis with Drizzle ORM/Mongoose
13
+ - ๐Ÿ” **Authentication** - JWT, OAuth 2.0, Session-based auth
14
+ - ๐Ÿค– **AI Integration** - OpenAI, Anthropic Claude, Google Gemini, Vercel AI SDK
15
+ - โ˜๏ธ **Cloud Storage** - AWS S3, Google Cloud, Azure, Cloudflare R2
16
+ - ๐Ÿ“ง **Email Services** - Resend, SendGrid, NodeMailer
17
+ - ๐Ÿ”„ **Real-time** - Socket.io, Server-Sent Events
18
+ - ๐Ÿ“ **Validation** - Zod or Yup for request validation
19
+ - ๐Ÿ“Š **Background Jobs** - BullMQ, Inngest
20
+ - ๐Ÿ“š **API Documentation** - Swagger/OpenAPI, Scalar
21
+ - ๐Ÿงช **Testing** - Vitest with Supertest
22
+ - ๐Ÿณ **Docker Ready** - Dockerfile + docker-compose.yml included
23
+ - ๐Ÿ“ฆ **TypeScript** - Full type safety out of the box
24
+
25
+ ## ๐Ÿš€ Quick Start
26
+
27
+ ```bash
28
+ # Using npx (recommended)
29
+ npx deploy-bbc my-awesome-api
30
+
31
+ # Using npm
32
+ npm create deploy-bbc my-awesome-api
33
+
34
+ # Using bun
35
+ bunx deploy-bbc my-awesome-api
36
+ ```
37
+
38
+ ## ๐Ÿ“ฆ Installation
39
+
40
+ ```bash
41
+ # Install globally
42
+ npm install -g deploy-bbc
43
+
44
+ # Use directly with npx
45
+ npx deploy-bbc
46
+ ```
47
+
48
+ ## ๐ŸŽจ Usage
49
+
50
+ ### Interactive Mode
51
+
52
+ Simply run the command and follow the prompts:
53
+
54
+ ```bash
55
+ npx deploy-bbc my-project
56
+ ```
57
+
58
+ You'll be asked to select:
59
+ 1. **Project name** - Your application name
60
+ 2. **Framework** - Hono (recommended), Express, or Bun Native
61
+ 3. **Database(s)** - PostgreSQL, MySQL, MongoDB, Redis
62
+ 4. **Authentication** - JWT, OAuth, Session-based
63
+ 5. **AI Providers** - OpenAI, Anthropic, Gemini
64
+ 6. **Email Service** - Resend, SendGrid, NodeMailer
65
+ 7. **Real-time** - Socket.io or SSE
66
+ 8. **Background Jobs** - BullMQ or Inngest
67
+ 9. **Validation** - Zod or Yup
68
+ 10. **API Docs** - Swagger or Scalar
69
+ 11. **Testing** - Vitest setup
70
+
71
+ ### CI Mode (Non-Interactive)
72
+
73
+ Perfect for automated deployments:
74
+
75
+ ```bash
76
+ npx deploy-bbc my-project \
77
+ --CI \
78
+ --express \
79
+ --postgres \
80
+ --redis \
81
+ --jwt \
82
+ --zod \
83
+ --vitest \
84
+ --swagger \
85
+ --noGit
86
+ ```
87
+
88
+ ## ๐Ÿ› ๏ธ Framework Options
89
+
90
+ ### Hono (Default)
91
+ ```bash
92
+ npx deploy-bbc my-app --hono
93
+ ```
94
+ - Ultrafast web framework built for the edge
95
+ - Tiny footprint (~12KB)
96
+ - Express-like API
97
+ - **Recommended for most projects**
98
+
99
+ ### Express
100
+ ```bash
101
+ npx deploy-bbc my-app --express
102
+ ```
103
+ - Battle-tested Node.js framework
104
+ - Huge ecosystem
105
+ - Familiar to most developers
106
+
107
+ ### Bun Native
108
+ ```bash
109
+ npx deploy-bbc my-app --bun-native
110
+ ```
111
+ - Native Bun.serve() API
112
+ - Zero dependencies
113
+ - Maximum performance
114
+
115
+ ## ๐Ÿ“Š Available Packages
116
+
117
+ ### Databases
118
+ - `--postgres` - PostgreSQL with Drizzle ORM
119
+ - `--mysql` - MySQL with Drizzle ORM
120
+ - `--mongodb` - MongoDB with Mongoose
121
+ - `--redis` - Redis for caching & sessions
122
+
123
+ ### Authentication
124
+ - `--jwt` - JSON Web Token authentication
125
+ - `--oauth` - OAuth 2.0 (Google, GitHub)
126
+ - `--session` - Session-based auth (requires Redis)
127
+
128
+ ### AI & ML
129
+ - `--openai` - OpenAI GPT models
130
+ - `--anthropic` - Anthropic Claude SDK
131
+ - `--gemini` - Google Gemini
132
+ - `--vercelAI` - Vercel AI SDK (unified interface)
133
+
134
+ ### Cloud Storage
135
+ - `--aws` - AWS S3 & SES
136
+ - `--gcp` - Google Cloud Storage
137
+ - `--azure` - Azure Blob Storage
138
+ - `--cloudflareR2` - Cloudflare R2
139
+
140
+ ### Communication
141
+ - `--resend` - Modern email service
142
+ - `--sendgrid` - Enterprise email
143
+ - `--nodemailer` - SMTP email
144
+ - `--socketio` - WebSockets
145
+ - `--sse` - Server-Sent Events
146
+
147
+ ### Infrastructure
148
+ - `--bullmq` - Redis-based job queue
149
+ - `--inngest` - Serverless job orchestration
150
+ - `--upstashRateLimit` - Upstash rate limiting
151
+ - `--customRateLimit` - Custom rate limit middleware
152
+ - `--sentry` - Error tracking
153
+ - `--logtail` - Log aggregation
154
+
155
+ ### Developer Experience
156
+ - `--swagger` - Swagger/OpenAPI docs
157
+ - `--scalar` - Modern API documentation
158
+ - `--vitest` - Testing framework
159
+ - `--zod` - Zod validation
160
+ - `--yup` - Yup validation
161
+
162
+ ### Options
163
+ - `--noInstall` - Skip dependency installation
164
+ - `--noGit` - Skip git initialization
165
+ - `--CI` - Non-interactive mode
166
+
167
+ ## ๐Ÿ“ Examples
168
+
169
+ ### Full-Stack API with PostgreSQL + JWT + AI
170
+ ```bash
171
+ npx deploy-bbc my-api \
172
+ --hono \
173
+ --postgres \
174
+ --redis \
175
+ --jwt \
176
+ --openai \
177
+ --zod \
178
+ --swagger \
179
+ --vitest
180
+ ```
181
+
182
+ ### Microservice with Express + MongoDB
183
+ ```bash
184
+ npx deploy-bbc user-service \
185
+ --express \
186
+ --mongodb \
187
+ --session \
188
+ --resend \
189
+ --bullmq \
190
+ --sentry
191
+ ```
192
+
193
+ ### Minimal Bun Native API
194
+ ```bash
195
+ npx deploy-bbc fast-api \
196
+ --bun-native \
197
+ --postgres \
198
+ --jwt \
199
+ --zod
200
+ ```
201
+
202
+ ### AI-Powered Backend
203
+ ```bash
204
+ npx deploy-bbc ai-backend \
205
+ --hono \
206
+ --postgres \
207
+ --jwt \
208
+ --anthropic \
209
+ --vercelAI \
210
+ --aws \
211
+ --zod \
212
+ --scalar
213
+ ```
214
+
215
+ ## ๐Ÿ—๏ธ Project Structure
216
+
217
+ ```
218
+ my-project/
219
+ โ”œโ”€โ”€ src/
220
+ โ”‚ โ”œโ”€โ”€ index.ts # Application entry point
221
+ โ”‚ โ”œโ”€โ”€ config/ # Configuration
222
+ โ”‚ โ”œโ”€โ”€ middleware/ # Custom middleware
223
+ โ”‚ โ”œโ”€โ”€ routes/ # API routes
224
+ โ”‚ โ”œโ”€โ”€ types/ # TypeScript types
225
+ โ”‚ โ””โ”€โ”€ utils/ # Utility functions
226
+ โ”œโ”€โ”€ docker-compose.yml # Docker services
227
+ โ”œโ”€โ”€ Dockerfile # Container configuration
228
+ โ”œโ”€โ”€ .env.example # Environment variables template
229
+ โ”œโ”€โ”€ package.json # Dependencies
230
+ โ”œโ”€โ”€ tsconfig.json # TypeScript config
231
+ โ””โ”€โ”€ README.md # Project documentation
232
+ ```
233
+
234
+ ## ๐Ÿšฆ Getting Started with Your Project
235
+
236
+ After creating your project:
237
+
238
+ ```bash
239
+ # Navigate to project
240
+ cd my-project
241
+
242
+ # Copy environment variables
243
+ cp .env.example .env
244
+
245
+ # Edit .env with your credentials
246
+ nano .env
247
+
248
+ # Start development server
249
+ bun run dev
250
+
251
+ # Start with Docker
252
+ docker-compose up -d
253
+ bun run dev
254
+
255
+ # Run tests
256
+ bun test
257
+
258
+ # Build for production
259
+ bun run build
260
+ ```
261
+
262
+ ## ๐Ÿ”ง Validation Example (Zod)
263
+
264
+ When you select Zod validation, you get ready-to-use middleware:
265
+
266
+ ```typescript
267
+ import { z } from "zod";
268
+ import { validate, get_validated } from "./middleware/validate.js";
269
+
270
+ const create_user_schema = z.object({
271
+ name: z.string().min(2),
272
+ email: z.string().email(),
273
+ age: z.number().int().min(18).optional(),
274
+ });
275
+
276
+ app.post(
277
+ "/users",
278
+ validate({ target: "body", schema: create_user_schema }),
279
+ (c) => {
280
+ const body = get_validated(c, "body");
281
+ // body is fully typed and validated
282
+ return c.json({ user: body });
283
+ }
284
+ );
285
+ ```
286
+
287
+ ## ๐Ÿณ Docker Support
288
+
289
+ Every project includes:
290
+ - **Dockerfile** - Optimized multi-stage build
291
+ - **docker-compose.yml** - Services orchestration
292
+ - Database containers (PostgreSQL, MySQL, Redis)
293
+ - Volume persistence
294
+ - Network configuration
295
+
296
+ Start everything with:
297
+ ```bash
298
+ docker-compose up -d
299
+ ```
300
+
301
+ ## ๐Ÿ“š Documentation
302
+
303
+ Each generated project includes:
304
+ - Comprehensive README.md
305
+ - .env.example with all required variables
306
+ - Example routes and middleware
307
+ - TypeScript types and interfaces
308
+ - Docker setup instructions
309
+
310
+ ## ๐Ÿค Contributing
311
+
312
+ Contributions are welcome! Please feel free to submit a Pull Request.
313
+
314
+ 1. Fork the repository
315
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
316
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
317
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
318
+ 5. Open a Pull Request
319
+
320
+ ## ๐Ÿ“„ License
321
+
322
+ MIT ยฉ [Aritra Sarkar](https://github.com/aritra69)
323
+
324
+ ## ๐Ÿ™ Acknowledgments
325
+
326
+ Built with:
327
+ - [Bun](https://bun.sh) - Fast JavaScript runtime
328
+ - [Hono](https://hono.dev) - Ultrafast web framework
329
+ - [Clack](https://github.com/natemoo-re/clack) - Beautiful CLI prompts
330
+ - [Drizzle ORM](https://orm.drizzle.team) - TypeScript ORM
331
+ - [Zod](https://zod.dev) - TypeScript-first validation
332
+
333
+ ## ๐Ÿ”— Links
334
+
335
+ - [GitHub Repository](https://github.com/aritra69/deploy-bbc)
336
+ - [npm Package](https://www.npmjs.com/package/deploy-bbc)
337
+ - [Report Issues](https://github.com/aritra69/deploy-bbc/issues)
338
+
339
+ ## โญ Show Your Support
340
+
341
+ Give a โญ๏ธ if this project helped you!
342
+
343
+ ---
344
+
345
+ **Made with โค๏ธ by [Aritra Sarkar](https://github.com/aritra69)**
package/cli/package.json CHANGED
@@ -1,18 +1,21 @@
1
1
  {
2
2
  "name": "deploy-bbc",
3
- "version": "0.0.1",
3
+ "version": "1.0.0",
4
4
  "description": "CLI to bootstrap production-ready backends with Bun (Best Backend Code)",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "deploy-bbc": "./dist/index.js"
8
8
  },
9
9
  "files": [
10
- "dist",
11
- "templates"
10
+ "dist"
12
11
  ],
12
+ "engines": {
13
+ "node": ">=18.0.0"
14
+ },
13
15
  "scripts": {
14
16
  "dev": "bun --watch src/index.ts",
15
- "build": "bun build src/index.ts --outdir dist --target node",
17
+ "build": "bun build src/index.ts --outdir dist --target node && cp -r src/templates dist/templates",
18
+ "prepublishOnly": "bun run build",
16
19
  "start": "node dist/index.js",
17
20
  "type-check": "tsc --noEmit"
18
21
  },
@@ -24,8 +27,16 @@
24
27
  "boilerplate",
25
28
  "api"
26
29
  ],
27
- "author": "Your Name",
30
+ "author": "Aritra Sarkar <aritrasarkar2002@gmail.com>",
28
31
  "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/aritra69/deploy-bbc.git"
35
+ },
36
+ "homepage": "https://github.com/aritra69/deploy-bbc#readme",
37
+ "bugs": {
38
+ "url": "https://github.com/aritra69/deploy-bbc/issues"
39
+ },
29
40
  "dependencies": {
30
41
  "@clack/prompts": "^0.7.0",
31
42
  "chalk": "^5.3.0",
@@ -42,7 +42,7 @@ export async function scaffold_project(
42
42
  ? "base-express"
43
43
  : "base-bun-native";
44
44
 
45
- const templateDir = path.resolve(__dirname, `../templates/${templateDirName}`);
45
+ const templateDir = path.resolve(__dirname, `templates/${templateDirName}`);
46
46
  await fs.copy(templateDir, projectDir, {
47
47
  overwrite: false,
48
48
  errorOnExist: false,
@@ -35,7 +35,7 @@ export async function ai_installer(options: InstallerOptions): Promise<void> {
35
35
  }
36
36
 
37
37
  async function install_openai(projectDir: string): Promise<void> {
38
- const templateDir = path.resolve(__dirname, "../templates/extras/ai/openai");
38
+ const templateDir = path.resolve(__dirname, "templates/extras/ai/openai");
39
39
  await copy_template_files(templateDir, projectDir);
40
40
 
41
41
  await add_package_dependency(projectDir, {
@@ -51,7 +51,7 @@ async function install_openai(projectDir: string): Promise<void> {
51
51
  async function install_anthropic(projectDir: string): Promise<void> {
52
52
  const templateDir = path.resolve(
53
53
  __dirname,
54
- "../templates/extras/ai/anthropic"
54
+ "templates/extras/ai/anthropic"
55
55
  );
56
56
  await copy_template_files(templateDir, projectDir);
57
57
 
@@ -66,7 +66,7 @@ async function install_anthropic(projectDir: string): Promise<void> {
66
66
  }
67
67
 
68
68
  async function install_gemini(projectDir: string): Promise<void> {
69
- const templateDir = path.resolve(__dirname, "../templates/extras/ai/gemini");
69
+ const templateDir = path.resolve(__dirname, "templates/extras/ai/gemini");
70
70
  await copy_template_files(templateDir, projectDir);
71
71
 
72
72
  await add_package_dependency(projectDir, {
@@ -82,7 +82,7 @@ async function install_gemini(projectDir: string): Promise<void> {
82
82
  async function install_vercel_ai(projectDir: string): Promise<void> {
83
83
  const templateDir = path.resolve(
84
84
  __dirname,
85
- "../templates/extras/ai/vercel-ai"
85
+ "templates/extras/ai/vercel-ai"
86
86
  );
87
87
  await copy_template_files(templateDir, projectDir);
88
88
 
@@ -34,7 +34,7 @@ export async function auth_installer(
34
34
  }
35
35
 
36
36
  async function install_jwt(projectDir: string): Promise<void> {
37
- const templateDir = path.resolve(__dirname, "../templates/extras/auth/jwt");
37
+ const templateDir = path.resolve(__dirname, "templates/extras/auth/jwt");
38
38
  await copy_template_files(templateDir, projectDir);
39
39
 
40
40
  await add_package_dependency(projectDir, {
@@ -58,7 +58,7 @@ async function install_jwt(projectDir: string): Promise<void> {
58
58
  }
59
59
 
60
60
  async function install_oauth(projectDir: string): Promise<void> {
61
- const templateDir = path.resolve(__dirname, "../templates/extras/auth/oauth");
61
+ const templateDir = path.resolve(__dirname, "templates/extras/auth/oauth");
62
62
  await copy_template_files(templateDir, projectDir);
63
63
 
64
64
  await add_package_dependency(projectDir, {
@@ -83,7 +83,7 @@ async function install_oauth(projectDir: string): Promise<void> {
83
83
  async function install_session(projectDir: string): Promise<void> {
84
84
  const templateDir = path.resolve(
85
85
  __dirname,
86
- "../templates/extras/auth/session"
86
+ "templates/extras/auth/session"
87
87
  );
88
88
  await copy_template_files(templateDir, projectDir);
89
89
 
@@ -37,7 +37,7 @@ export async function cloud_installer(
37
37
  }
38
38
 
39
39
  async function install_aws(projectDir: string): Promise<void> {
40
- const templateDir = path.resolve(__dirname, "../templates/extras/cloud/aws");
40
+ const templateDir = path.resolve(__dirname, "templates/extras/cloud/aws");
41
41
  await copy_template_files(templateDir, projectDir);
42
42
 
43
43
  await add_package_dependency(projectDir, {
@@ -53,7 +53,7 @@ async function install_aws(projectDir: string): Promise<void> {
53
53
  }
54
54
 
55
55
  async function install_gcp(projectDir: string): Promise<void> {
56
- const templateDir = path.resolve(__dirname, "../templates/extras/cloud/gcp");
56
+ const templateDir = path.resolve(__dirname, "templates/extras/cloud/gcp");
57
57
  await copy_template_files(templateDir, projectDir);
58
58
 
59
59
  await add_package_dependency(projectDir, {
@@ -69,7 +69,7 @@ async function install_gcp(projectDir: string): Promise<void> {
69
69
  async function install_azure(projectDir: string): Promise<void> {
70
70
  const templateDir = path.resolve(
71
71
  __dirname,
72
- "../templates/extras/cloud/azure"
72
+ "templates/extras/cloud/azure"
73
73
  );
74
74
  await copy_template_files(templateDir, projectDir);
75
75
 
@@ -86,7 +86,7 @@ async function install_azure(projectDir: string): Promise<void> {
86
86
  async function install_cloudflare_r2(projectDir: string): Promise<void> {
87
87
  const templateDir = path.resolve(
88
88
  __dirname,
89
- "../templates/extras/cloud/cloudflare-r2"
89
+ "templates/extras/cloud/cloudflare-r2"
90
90
  );
91
91
  await copy_template_files(templateDir, projectDir);
92
92
 
@@ -42,7 +42,7 @@ async function install_postgres(projectDir: string): Promise<void> {
42
42
  // Copy template files
43
43
  const templateDir = path.resolve(
44
44
  __dirname,
45
- "../templates/extras/database/postgres"
45
+ "templates/extras/database/postgres"
46
46
  );
47
47
  await copy_template_files(templateDir, projectDir);
48
48
 
@@ -74,7 +74,7 @@ async function install_mysql(projectDir: string): Promise<void> {
74
74
  // Copy template files
75
75
  const templateDir = path.resolve(
76
76
  __dirname,
77
- "../templates/extras/database/mysql"
77
+ "templates/extras/database/mysql"
78
78
  );
79
79
  await copy_template_files(templateDir, projectDir);
80
80
 
@@ -106,7 +106,7 @@ async function install_mongodb(projectDir: string): Promise<void> {
106
106
  // Copy template files
107
107
  const templateDir = path.resolve(
108
108
  __dirname,
109
- "../templates/extras/database/mongodb"
109
+ "templates/extras/database/mongodb"
110
110
  );
111
111
  await copy_template_files(templateDir, projectDir);
112
112
 
@@ -126,7 +126,7 @@ async function install_redis(projectDir: string): Promise<void> {
126
126
  // Copy template files
127
127
  const templateDir = path.resolve(
128
128
  __dirname,
129
- "../templates/extras/database/redis"
129
+ "templates/extras/database/redis"
130
130
  );
131
131
  await copy_template_files(templateDir, projectDir);
132
132
 
@@ -33,7 +33,7 @@ export async function docs_installer(
33
33
  async function install_swagger(projectDir: string): Promise<void> {
34
34
  const templateDir = path.resolve(
35
35
  __dirname,
36
- "../templates/extras/docs/swagger"
36
+ "templates/extras/docs/swagger"
37
37
  );
38
38
  await copy_template_files(templateDir, projectDir);
39
39
 
@@ -45,7 +45,7 @@ async function install_swagger(projectDir: string): Promise<void> {
45
45
  async function install_scalar(projectDir: string): Promise<void> {
46
46
  const templateDir = path.resolve(
47
47
  __dirname,
48
- "../templates/extras/docs/scalar"
48
+ "templates/extras/docs/scalar"
49
49
  );
50
50
  await copy_template_files(templateDir, projectDir);
51
51
 
@@ -36,7 +36,7 @@ export async function email_installer(
36
36
  async function install_resend(projectDir: string): Promise<void> {
37
37
  const templateDir = path.resolve(
38
38
  __dirname,
39
- "../templates/extras/email/resend"
39
+ "templates/extras/email/resend"
40
40
  );
41
41
  await copy_template_files(templateDir, projectDir);
42
42
 
@@ -53,7 +53,7 @@ async function install_resend(projectDir: string): Promise<void> {
53
53
  async function install_sendgrid(projectDir: string): Promise<void> {
54
54
  const templateDir = path.resolve(
55
55
  __dirname,
56
- "../templates/extras/email/sendgrid"
56
+ "templates/extras/email/sendgrid"
57
57
  );
58
58
  await copy_template_files(templateDir, projectDir);
59
59
 
@@ -70,7 +70,7 @@ async function install_sendgrid(projectDir: string): Promise<void> {
70
70
  async function install_nodemailer(projectDir: string): Promise<void> {
71
71
  const templateDir = path.resolve(
72
72
  __dirname,
73
- "../templates/extras/email/nodemailer"
73
+ "templates/extras/email/nodemailer"
74
74
  );
75
75
  await copy_template_files(templateDir, projectDir);
76
76
 
@@ -33,7 +33,7 @@ export async function observability_installer(
33
33
  async function install_sentry(projectDir: string): Promise<void> {
34
34
  const templateDir = path.resolve(
35
35
  __dirname,
36
- "../templates/extras/observability/sentry"
36
+ "templates/extras/observability/sentry"
37
37
  );
38
38
  await copy_template_files(templateDir, projectDir);
39
39
 
@@ -50,7 +50,7 @@ async function install_sentry(projectDir: string): Promise<void> {
50
50
  async function install_logtail(projectDir: string): Promise<void> {
51
51
  const templateDir = path.resolve(
52
52
  __dirname,
53
- "../templates/extras/observability/logtail"
53
+ "templates/extras/observability/logtail"
54
54
  );
55
55
  await copy_template_files(templateDir, projectDir);
56
56
 
@@ -33,7 +33,7 @@ export async function queue_installer(
33
33
  async function install_bullmq(projectDir: string): Promise<void> {
34
34
  const templateDir = path.resolve(
35
35
  __dirname,
36
- "../templates/extras/queue/bullmq"
36
+ "templates/extras/queue/bullmq"
37
37
  );
38
38
  await copy_template_files(templateDir, projectDir);
39
39
 
@@ -50,7 +50,7 @@ async function install_bullmq(projectDir: string): Promise<void> {
50
50
  async function install_inngest(projectDir: string): Promise<void> {
51
51
  const templateDir = path.resolve(
52
52
  __dirname,
53
- "../templates/extras/queue/inngest"
53
+ "templates/extras/queue/inngest"
54
54
  );
55
55
  await copy_template_files(templateDir, projectDir);
56
56
 
@@ -33,7 +33,7 @@ export async function ratelimit_installer(
33
33
  async function install_upstash_ratelimit(projectDir: string): Promise<void> {
34
34
  const templateDir = path.resolve(
35
35
  __dirname,
36
- "../templates/extras/ratelimit/upstash"
36
+ "templates/extras/ratelimit/upstash"
37
37
  );
38
38
  await copy_template_files(templateDir, projectDir);
39
39
 
@@ -51,7 +51,7 @@ async function install_upstash_ratelimit(projectDir: string): Promise<void> {
51
51
  async function install_custom_ratelimit(projectDir: string): Promise<void> {
52
52
  const templateDir = path.resolve(
53
53
  __dirname,
54
- "../templates/extras/ratelimit/custom"
54
+ "templates/extras/ratelimit/custom"
55
55
  );
56
56
  await copy_template_files(templateDir, projectDir);
57
57
 
@@ -33,7 +33,7 @@ export async function realtime_installer(
33
33
  async function install_socketio(projectDir: string): Promise<void> {
34
34
  const templateDir = path.resolve(
35
35
  __dirname,
36
- "../templates/extras/realtime/socketio"
36
+ "templates/extras/realtime/socketio"
37
37
  );
38
38
  await copy_template_files(templateDir, projectDir);
39
39
 
@@ -53,7 +53,7 @@ async function install_socketio(projectDir: string): Promise<void> {
53
53
  async function install_sse(projectDir: string): Promise<void> {
54
54
  const templateDir = path.resolve(
55
55
  __dirname,
56
- "../templates/extras/realtime/sse"
56
+ "templates/extras/realtime/sse"
57
57
  );
58
58
  await copy_template_files(templateDir, projectDir);
59
59
 
@@ -30,7 +30,7 @@ export async function testing_installer(
30
30
  async function install_vitest(projectDir: string): Promise<void> {
31
31
  const templateDir = path.resolve(
32
32
  __dirname,
33
- "../templates/extras/testing/vitest"
33
+ "templates/extras/testing/vitest"
34
34
  );
35
35
  await copy_template_files(templateDir, projectDir);
36
36
 
@@ -33,7 +33,7 @@ export async function validation_installer(
33
33
  async function install_zod(projectDir: string): Promise<void> {
34
34
  const templateDir = path.resolve(
35
35
  __dirname,
36
- "../templates/extras/validation/zod"
36
+ "templates/extras/validation/zod"
37
37
  );
38
38
  await copy_template_files(templateDir, projectDir);
39
39
 
@@ -45,7 +45,7 @@ async function install_zod(projectDir: string): Promise<void> {
45
45
  async function install_yup(projectDir: string): Promise<void> {
46
46
  const templateDir = path.resolve(
47
47
  __dirname,
48
- "../templates/extras/validation/yup"
48
+ "templates/extras/validation/yup"
49
49
  );
50
50
  await copy_template_files(templateDir, projectDir);
51
51
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deploy-bbc",
3
- "version": "0.0.1",
3
+ "version": "1.0.0",
4
4
  "description": "CLI to bootstrap production-ready backends with Bun (Best Backend Code)",
5
5
  "workspaces": [
6
6
  "cli"