deploy-bbc 1.0.0 → 1.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.
Files changed (44) hide show
  1. package/CLAUDE.md +85 -11
  2. package/cli/package.json +9 -9
  3. package/cli/src/cli/index.ts +8 -3
  4. package/cli/src/helpers/log-next-steps.ts +22 -19
  5. package/cli/src/helpers/scaffold-project.ts +30 -4
  6. package/cli/src/templates/base/package.json +2 -1
  7. package/cli/src/templates/base/src/controllers/user/create-user.controller.ts +84 -0
  8. package/cli/src/templates/base/src/controllers/user/delete-user.controller.ts +60 -0
  9. package/cli/src/templates/base/src/controllers/user/get-user.controller.ts +74 -0
  10. package/cli/src/templates/base/src/controllers/user/get-users.controller.ts +41 -0
  11. package/cli/src/templates/base/src/controllers/user/update-user.controller.ts +111 -0
  12. package/cli/src/templates/base/src/models/user.model.ts +83 -0
  13. package/cli/src/templates/base/src/routes/index.ts +5 -0
  14. package/cli/src/templates/base/src/routes/user.route.ts +17 -0
  15. package/cli/src/templates/base/src/types/common/api-response.types.ts +30 -0
  16. package/cli/src/templates/base/src/types/index.ts +5 -2
  17. package/cli/src/templates/base/src/types/models/user.types.ts +26 -0
  18. package/cli/src/templates/base-bun-native/package.json +2 -1
  19. package/cli/src/templates/base-bun-native/src/controllers/user/create-user.controller.ts +76 -0
  20. package/cli/src/templates/base-bun-native/src/controllers/user/delete-user.controller.ts +53 -0
  21. package/cli/src/templates/base-bun-native/src/controllers/user/get-user.controller.ts +67 -0
  22. package/cli/src/templates/base-bun-native/src/controllers/user/get-users.controller.ts +40 -0
  23. package/cli/src/templates/base-bun-native/src/controllers/user/update-user.controller.ts +101 -0
  24. package/cli/src/templates/base-bun-native/src/index.ts +3 -3
  25. package/cli/src/templates/base-bun-native/src/models/user.model.ts +83 -0
  26. package/cli/src/templates/base-bun-native/src/routes/index.ts +10 -6
  27. package/cli/src/templates/base-bun-native/src/routes/user.route.ts +50 -0
  28. package/cli/src/templates/base-bun-native/src/types/common/api-response.types.ts +30 -0
  29. package/cli/src/templates/base-bun-native/src/types/index.ts +5 -2
  30. package/cli/src/templates/base-bun-native/src/types/models/user.types.ts +26 -0
  31. package/cli/src/templates/base-express/package.json +2 -1
  32. package/cli/src/templates/base-express/src/controllers/user/create-user.controller.ts +75 -0
  33. package/cli/src/templates/base-express/src/controllers/user/delete-user.controller.ts +56 -0
  34. package/cli/src/templates/base-express/src/controllers/user/get-user.controller.ts +70 -0
  35. package/cli/src/templates/base-express/src/controllers/user/get-users.controller.ts +41 -0
  36. package/cli/src/templates/base-express/src/controllers/user/update-user.controller.ts +102 -0
  37. package/cli/src/templates/base-express/src/models/user.model.ts +83 -0
  38. package/cli/src/templates/base-express/src/routes/index.ts +5 -0
  39. package/cli/src/templates/base-express/src/routes/user.route.ts +17 -0
  40. package/cli/src/templates/base-express/src/types/common/api-response.types.ts +30 -0
  41. package/cli/src/templates/base-express/src/types/index.ts +5 -2
  42. package/cli/src/templates/base-express/src/types/models/user.types.ts +26 -0
  43. package/cli/src/utils/parse-name-and-path.ts +18 -2
  44. package/package.json +3 -3
@@ -0,0 +1,17 @@
1
+ import express from "express";
2
+ import { get_users } from "../controllers/user/get-users.controller.js";
3
+ import { get_user } from "../controllers/user/get-user.controller.js";
4
+ import { create_user } from "../controllers/user/create-user.controller.js";
5
+ import { update_user } from "../controllers/user/update-user.controller.js";
6
+ import { delete_user } from "../controllers/user/delete-user.controller.js";
7
+
8
+ const user_route = express.Router();
9
+
10
+ // User CRUD routes
11
+ user_route.get("/", get_users);
12
+ user_route.get("/:id", get_user);
13
+ user_route.post("/", create_user);
14
+ user_route.patch("/:id", update_user);
15
+ user_route.delete("/:id", delete_user);
16
+
17
+ export default user_route;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Common API response types
3
+ */
4
+
5
+ export interface ApiResponse<T = unknown> {
6
+ success: boolean;
7
+ data?: T;
8
+ error?: string;
9
+ message?: string;
10
+ }
11
+
12
+ export interface PaginatedResponse<T> extends ApiResponse<T[]> {
13
+ pagination: {
14
+ page: number;
15
+ limit: number;
16
+ total: number;
17
+ totalPages: number;
18
+ };
19
+ }
20
+
21
+ export interface ValidationError {
22
+ field: string;
23
+ message: string;
24
+ }
25
+
26
+ export interface ApiError {
27
+ success: false;
28
+ error: string;
29
+ details?: ValidationError[];
30
+ }
@@ -1,2 +1,5 @@
1
- // Add your TypeScript types and interfaces here
2
- export {};
1
+ // Export common types
2
+ export * from "./common/api-response.types.js";
3
+
4
+ // Export model types
5
+ export * from "./models/user.types.js";
@@ -0,0 +1,26 @@
1
+ /**
2
+ * User model types
3
+ */
4
+
5
+ export interface User {
6
+ id: string;
7
+ email: string;
8
+ name: string;
9
+ createdAt: Date;
10
+ updatedAt: Date;
11
+ }
12
+
13
+ export interface CreateUserInput {
14
+ email: string;
15
+ name: string;
16
+ }
17
+
18
+ export interface UpdateUserInput {
19
+ email?: string;
20
+ name?: string;
21
+ }
22
+
23
+ export type UserResponse = Omit<User, "createdAt" | "updatedAt"> & {
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ };
@@ -1,19 +1,35 @@
1
1
  import path from "path";
2
2
 
3
- export interface ParsedNameAndPath {
3
+ export type ParsedNameAndPath = {
4
4
  projectName: string;
5
5
  projectDir: string;
6
6
  }
7
7
 
8
8
  /**
9
9
  * Parses the app name input to extract project name and directory path.
10
- * Handles relative paths (./my-app), absolute paths, and simple names.
10
+ * Handles:
11
+ * - Current directory: "." (sets up in current directory)
12
+ * - Relative paths: "./my-app", "../my-app"
13
+ * - Home paths: "~/my-app"
14
+ * - Absolute paths: "/path/to/my-app"
15
+ * - Simple names: "my-app" (creates subdirectory in current directory)
11
16
  *
12
17
  * @param appName - The app name or path provided by the user
13
18
  * @returns Object containing projectName (kebab-case) and projectDir (absolute path)
14
19
  * @throws Error if the name contains invalid characters (spaces, special chars except - and _)
15
20
  */
16
21
  export function parse_name_and_path(appName: string): ParsedNameAndPath {
22
+ // Handle special case: current directory
23
+ if (appName === ".") {
24
+ const currentDir = process.cwd();
25
+ const currentDirName = path.basename(currentDir);
26
+
27
+ return {
28
+ projectName: currentDirName.replace(/_/g, "-").toLowerCase(),
29
+ projectDir: currentDir,
30
+ };
31
+ }
32
+
17
33
  // Validate app name - no spaces or invalid characters
18
34
  // Allow only alphanumeric, hyphens, underscores, slashes, and dots (for paths)
19
35
  const pathRegex = /^[a-zA-Z0-9\-_/.]+$/;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deploy-bbc",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "CLI to bootstrap production-ready backends with Bun (Best Backend Code)",
5
5
  "workspaces": [
6
6
  "cli"
@@ -14,7 +14,7 @@
14
14
  "devDependencies": {
15
15
  "@types/bun": "latest",
16
16
  "bun-types": "^1.3.7",
17
- "prettier": "^3.1.1",
18
- "typescript": "^5.3.3"
17
+ "prettier": "^3.8.1",
18
+ "typescript": "^5.9.3"
19
19
  }
20
20
  }