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.
- package/CLAUDE.md +85 -11
- package/cli/package.json +9 -9
- package/cli/src/cli/index.ts +8 -3
- package/cli/src/helpers/log-next-steps.ts +22 -19
- package/cli/src/helpers/scaffold-project.ts +30 -4
- package/cli/src/templates/base/package.json +2 -1
- package/cli/src/templates/base/src/controllers/user/create-user.controller.ts +84 -0
- package/cli/src/templates/base/src/controllers/user/delete-user.controller.ts +60 -0
- package/cli/src/templates/base/src/controllers/user/get-user.controller.ts +74 -0
- package/cli/src/templates/base/src/controllers/user/get-users.controller.ts +41 -0
- package/cli/src/templates/base/src/controllers/user/update-user.controller.ts +111 -0
- package/cli/src/templates/base/src/models/user.model.ts +83 -0
- package/cli/src/templates/base/src/routes/index.ts +5 -0
- package/cli/src/templates/base/src/routes/user.route.ts +17 -0
- package/cli/src/templates/base/src/types/common/api-response.types.ts +30 -0
- package/cli/src/templates/base/src/types/index.ts +5 -2
- package/cli/src/templates/base/src/types/models/user.types.ts +26 -0
- package/cli/src/templates/base-bun-native/package.json +2 -1
- package/cli/src/templates/base-bun-native/src/controllers/user/create-user.controller.ts +76 -0
- package/cli/src/templates/base-bun-native/src/controllers/user/delete-user.controller.ts +53 -0
- package/cli/src/templates/base-bun-native/src/controllers/user/get-user.controller.ts +67 -0
- package/cli/src/templates/base-bun-native/src/controllers/user/get-users.controller.ts +40 -0
- package/cli/src/templates/base-bun-native/src/controllers/user/update-user.controller.ts +101 -0
- package/cli/src/templates/base-bun-native/src/index.ts +3 -3
- package/cli/src/templates/base-bun-native/src/models/user.model.ts +83 -0
- package/cli/src/templates/base-bun-native/src/routes/index.ts +10 -6
- package/cli/src/templates/base-bun-native/src/routes/user.route.ts +50 -0
- package/cli/src/templates/base-bun-native/src/types/common/api-response.types.ts +30 -0
- package/cli/src/templates/base-bun-native/src/types/index.ts +5 -2
- package/cli/src/templates/base-bun-native/src/types/models/user.types.ts +26 -0
- package/cli/src/templates/base-express/package.json +2 -1
- package/cli/src/templates/base-express/src/controllers/user/create-user.controller.ts +75 -0
- package/cli/src/templates/base-express/src/controllers/user/delete-user.controller.ts +56 -0
- package/cli/src/templates/base-express/src/controllers/user/get-user.controller.ts +70 -0
- package/cli/src/templates/base-express/src/controllers/user/get-users.controller.ts +41 -0
- package/cli/src/templates/base-express/src/controllers/user/update-user.controller.ts +102 -0
- package/cli/src/templates/base-express/src/models/user.model.ts +83 -0
- package/cli/src/templates/base-express/src/routes/index.ts +5 -0
- package/cli/src/templates/base-express/src/routes/user.route.ts +17 -0
- package/cli/src/templates/base-express/src/types/common/api-response.types.ts +30 -0
- package/cli/src/templates/base-express/src/types/index.ts +5 -2
- package/cli/src/templates/base-express/src/types/models/user.types.ts +26 -0
- package/cli/src/utils/parse-name-and-path.ts +18 -2
- 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
|
+
}
|
|
@@ -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
|
|
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
|
|
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.
|
|
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.
|
|
18
|
-
"typescript": "^5.
|
|
17
|
+
"prettier": "^3.8.1",
|
|
18
|
+
"typescript": "^5.9.3"
|
|
19
19
|
}
|
|
20
20
|
}
|