vps-deployer 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/LICENSE +21 -0
- package/README.md +151 -0
- package/dist/app.d.ts +4 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +39 -0
- package/dist/app.js.map +1 -0
- package/dist/db/db.d.ts +5 -0
- package/dist/db/db.d.ts.map +1 -0
- package/dist/db/db.js +100 -0
- package/dist/db/db.js.map +1 -0
- package/dist/helpers/arg.helper.d.ts +7 -0
- package/dist/helpers/arg.helper.d.ts.map +1 -0
- package/dist/helpers/arg.helper.js +28 -0
- package/dist/helpers/arg.helper.js.map +1 -0
- package/dist/helpers/cmd_executer.helper.d.ts +7 -0
- package/dist/helpers/cmd_executer.helper.d.ts.map +1 -0
- package/dist/helpers/cmd_executer.helper.js +88 -0
- package/dist/helpers/cmd_executer.helper.js.map +1 -0
- package/dist/helpers/common.helper.d.ts +2 -0
- package/dist/helpers/common.helper.d.ts.map +1 -0
- package/dist/helpers/common.helper.js +15 -0
- package/dist/helpers/common.helper.js.map +1 -0
- package/dist/helpers/config_files.helper.d.ts +2 -0
- package/dist/helpers/config_files.helper.d.ts.map +1 -0
- package/dist/helpers/config_files.helper.js +44 -0
- package/dist/helpers/config_files.helper.js.map +1 -0
- package/dist/helpers/create_systemd_service.helper.d.ts +9 -0
- package/dist/helpers/create_systemd_service.helper.d.ts.map +1 -0
- package/dist/helpers/create_systemd_service.helper.js +40 -0
- package/dist/helpers/create_systemd_service.helper.js.map +1 -0
- package/dist/helpers/date.helper.d.ts +2 -0
- package/dist/helpers/date.helper.d.ts.map +1 -0
- package/dist/helpers/date.helper.js +18 -0
- package/dist/helpers/date.helper.js.map +1 -0
- package/dist/helpers/email.helper.d.ts +11 -0
- package/dist/helpers/email.helper.d.ts.map +1 -0
- package/dist/helpers/email.helper.js +144 -0
- package/dist/helpers/email.helper.js.map +1 -0
- package/dist/helpers/logging.helper.d.ts +9 -0
- package/dist/helpers/logging.helper.d.ts.map +1 -0
- package/dist/helpers/logging.helper.js +32 -0
- package/dist/helpers/logging.helper.js.map +1 -0
- package/dist/helpers/remove_systemd_service.helper.d.ts +2 -0
- package/dist/helpers/remove_systemd_service.helper.d.ts.map +1 -0
- package/dist/helpers/remove_systemd_service.helper.js +21 -0
- package/dist/helpers/remove_systemd_service.helper.js.map +1 -0
- package/dist/helpers/start_systemd_service.helper.d.ts +2 -0
- package/dist/helpers/start_systemd_service.helper.d.ts.map +1 -0
- package/dist/helpers/start_systemd_service.helper.js +26 -0
- package/dist/helpers/start_systemd_service.helper.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/auth.middleware.d.ts +3 -0
- package/dist/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/middleware/auth.middleware.js +7 -0
- package/dist/middleware/auth.middleware.js.map +1 -0
- package/dist/modules/auth/auth.route.d.ts +3 -0
- package/dist/modules/auth/auth.route.d.ts.map +1 -0
- package/dist/modules/auth/auth.route.js +16 -0
- package/dist/modules/auth/auth.route.js.map +1 -0
- package/dist/modules/auth/controllers/auth.controller.d.ts +6 -0
- package/dist/modules/auth/controllers/auth.controller.d.ts.map +1 -0
- package/dist/modules/auth/controllers/auth.controller.js +123 -0
- package/dist/modules/auth/controllers/auth.controller.js.map +1 -0
- package/dist/modules/auth/views/login.pug +254 -0
- package/dist/modules/auth/views/register.pug +298 -0
- package/dist/modules/common/views/404.pug +21 -0
- package/dist/modules/dashboard/dashboard.route.d.ts +3 -0
- package/dist/modules/dashboard/dashboard.route.d.ts.map +1 -0
- package/dist/modules/dashboard/dashboard.route.js +29 -0
- package/dist/modules/dashboard/dashboard.route.js.map +1 -0
- package/dist/modules/dashboard/views/dash.pug +149 -0
- package/dist/modules/dashboard/views/layout.pug +94 -0
- package/dist/modules/deployer/controllers/deployer.controller.d.ts +6 -0
- package/dist/modules/deployer/controllers/deployer.controller.d.ts.map +1 -0
- package/dist/modules/deployer/controllers/deployer.controller.js +119 -0
- package/dist/modules/deployer/controllers/deployer.controller.js.map +1 -0
- package/dist/modules/deployer/deployer.route.d.ts +3 -0
- package/dist/modules/deployer/deployer.route.d.ts.map +1 -0
- package/dist/modules/deployer/deployer.route.js +13 -0
- package/dist/modules/deployer/deployer.route.js.map +1 -0
- package/dist/modules/deployer/helper/deployer.d.ts +9 -0
- package/dist/modules/deployer/helper/deployer.d.ts.map +1 -0
- package/dist/modules/deployer/helper/deployer.js +89 -0
- package/dist/modules/deployer/helper/deployer.js.map +1 -0
- package/dist/modules/deployer/views/details.pug +157 -0
- package/dist/modules/deployer/views/index.pug +108 -0
- package/dist/modules/project/controllers/projects.controller.d.ts +12 -0
- package/dist/modules/project/controllers/projects.controller.d.ts.map +1 -0
- package/dist/modules/project/controllers/projects.controller.js +267 -0
- package/dist/modules/project/controllers/projects.controller.js.map +1 -0
- package/dist/modules/project/helper/project_file_sys.helper.d.ts +7 -0
- package/dist/modules/project/helper/project_file_sys.helper.d.ts.map +1 -0
- package/dist/modules/project/helper/project_file_sys.helper.js +93 -0
- package/dist/modules/project/helper/project_file_sys.helper.js.map +1 -0
- package/dist/modules/project/project.route.d.ts +3 -0
- package/dist/modules/project/project.route.d.ts.map +1 -0
- package/dist/modules/project/project.route.js +17 -0
- package/dist/modules/project/project.route.js.map +1 -0
- package/dist/modules/project/views/create.pug +189 -0
- package/dist/modules/project/views/details.pug +238 -0
- package/dist/modules/project/views/index.pug +114 -0
- package/dist/modules/settings/controllers/setting.controller.d.ts +5 -0
- package/dist/modules/settings/controllers/setting.controller.d.ts.map +1 -0
- package/dist/modules/settings/controllers/setting.controller.js +193 -0
- package/dist/modules/settings/controllers/setting.controller.js.map +1 -0
- package/dist/modules/settings/settings.route.d.ts +3 -0
- package/dist/modules/settings/settings.route.d.ts.map +1 -0
- package/dist/modules/settings/settings.route.js +10 -0
- package/dist/modules/settings/settings.route.js.map +1 -0
- package/dist/modules/settings/views/index.pug +173 -0
- package/dist/modules/webhook/controllers/webhook.controller.d.ts +3 -0
- package/dist/modules/webhook/controllers/webhook.controller.d.ts.map +1 -0
- package/dist/modules/webhook/controllers/webhook.controller.js +72 -0
- package/dist/modules/webhook/controllers/webhook.controller.js.map +1 -0
- package/dist/modules/webhook/webhook.route.d.ts +3 -0
- package/dist/modules/webhook/webhook.route.d.ts.map +1 -0
- package/dist/modules/webhook/webhook.route.js +6 -0
- package/dist/modules/webhook/webhook.route.js.map +1 -0
- package/dist/utils/app_config.d.ts +3 -0
- package/dist/utils/app_config.d.ts.map +1 -0
- package/dist/utils/app_config.js +5 -0
- package/dist/utils/app_config.js.map +1 -0
- package/dist/utils/cli.d.ts +2 -0
- package/dist/utils/cli.d.ts.map +1 -0
- package/dist/utils/cli.js +68 -0
- package/dist/utils/cli.js.map +1 -0
- package/package.json +80 -0
- package/public/favicon.svg +18 -0
- package/public/js/deploy.js +36 -0
- package/public/js/deployment-details.js +56 -0
- package/public/js/login.js +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project_file_sys.helper.js","sourceRoot":"","sources":["../../../../src/modules/project/helper/project_file_sys.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.route.d.ts","sourceRoot":"","sources":["../../../src/modules/project/project.route.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAiBxB,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Router } from "express";
|
|
2
|
+
import { addCommand, addEnv, createProject, deleteCommand, deleteEnv, deleteProject, listProjects, updateProject, viewCreateProject, viewProjectDetails, } from "./controllers/projects.controller.js";
|
|
3
|
+
import { requireAuth } from "../../middleware/auth.middleware.js";
|
|
4
|
+
const router = Router();
|
|
5
|
+
router.use(requireAuth);
|
|
6
|
+
router.get("/projects", listProjects);
|
|
7
|
+
router.get("/projects/create", viewCreateProject);
|
|
8
|
+
router.post("/projects/create", createProject);
|
|
9
|
+
router.post("/projects/:id/delete", deleteProject);
|
|
10
|
+
router.get("/projects/:id", viewProjectDetails);
|
|
11
|
+
router.post("/projects/:id/update", updateProject);
|
|
12
|
+
router.post("/projects/:id/env", addEnv);
|
|
13
|
+
router.post("/projects/:id/env/:envId/delete", deleteEnv);
|
|
14
|
+
router.post("/projects/:id/commands", addCommand);
|
|
15
|
+
router.post("/projects/:id/commands/:cmdId/delete", deleteCommand);
|
|
16
|
+
export default router;
|
|
17
|
+
//# sourceMappingURL=project.route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.route.js","sourceRoot":"","sources":["../../../src/modules/project/project.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EACL,UAAU,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AACxB,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AACvB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACtC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;AAClD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;AAE/C,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;AAEnD,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAChD,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;AAEnD,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACzC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAC;AAE1D,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;AAClD,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,aAAa,CAAC,CAAC;AAEnE,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
extends ../../dashboard/views/layout.pug
|
|
2
|
+
|
|
3
|
+
block content
|
|
4
|
+
// Page Header
|
|
5
|
+
.d-flex.justify-content-between.align-items-center.mb-4
|
|
6
|
+
div
|
|
7
|
+
h2.mb-1 Create Project
|
|
8
|
+
p.text-muted.mb-0 Add a new project to deploy on your VPS
|
|
9
|
+
div
|
|
10
|
+
a.btn.btn-outline-secondary(href="/projects")
|
|
11
|
+
i.bi.bi-arrow-left.me-2
|
|
12
|
+
| Back to Projects
|
|
13
|
+
|
|
14
|
+
// Flash Messages
|
|
15
|
+
if error
|
|
16
|
+
.alert.alert-danger.alert-dismissible.fade-show.d-flex.align-items-center.mb-4(role="alert")
|
|
17
|
+
i.bi.bi-exclamation-triangle-fill.me-2
|
|
18
|
+
span.flex-grow-1 #{error}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
.row
|
|
22
|
+
.col-lg-8.mb-4
|
|
23
|
+
// Create Project Form
|
|
24
|
+
.card.border-0.shadow-sm
|
|
25
|
+
.card-header.bg-white.border-bottom-0.pt-3
|
|
26
|
+
.d-flex.align-items-center
|
|
27
|
+
i.bi.bi-folder-plus.text-primary.me-2(style="font-size: 1.25rem;")
|
|
28
|
+
h5.mb-0 Project Details
|
|
29
|
+
.card-body
|
|
30
|
+
form(method="POST", action="/projects/create")
|
|
31
|
+
// Project Name
|
|
32
|
+
.mb-3
|
|
33
|
+
label.form-label.fw-semibold(for="name")
|
|
34
|
+
i.bi.bi-tag.me-1
|
|
35
|
+
| Project Name
|
|
36
|
+
input.form-control(
|
|
37
|
+
type="text",
|
|
38
|
+
id="name",
|
|
39
|
+
name="name",
|
|
40
|
+
placeholder="my-awesome-app",
|
|
41
|
+
required,
|
|
42
|
+
autofocus
|
|
43
|
+
)
|
|
44
|
+
small.form-text.text-muted Choose a unique name for your project
|
|
45
|
+
|
|
46
|
+
// GitHub URL
|
|
47
|
+
.mb-3
|
|
48
|
+
label.form-label.fw-semibold(for="github_url")
|
|
49
|
+
i.bi.bi-github.me-1
|
|
50
|
+
| GitHub URL
|
|
51
|
+
input.form-control(
|
|
52
|
+
type="text",
|
|
53
|
+
id="github_url",
|
|
54
|
+
name="github_url",
|
|
55
|
+
placeholder="https://github.com/username/repository.git",
|
|
56
|
+
required
|
|
57
|
+
)
|
|
58
|
+
small.form-text.text-muted Use the .git URL from your GitHub repository
|
|
59
|
+
|
|
60
|
+
// Branch
|
|
61
|
+
.mb-3
|
|
62
|
+
label.form-label.fw-semibold(for="branch_name")
|
|
63
|
+
i.bi.bi-git-branch.me-1
|
|
64
|
+
| Branch
|
|
65
|
+
input.form-control(
|
|
66
|
+
type="text",
|
|
67
|
+
id="branch_name",
|
|
68
|
+
name="branch_name",
|
|
69
|
+
placeholder="main",
|
|
70
|
+
required
|
|
71
|
+
)
|
|
72
|
+
small.form-text.text-muted The branch to deploy from
|
|
73
|
+
|
|
74
|
+
// Checkboxes
|
|
75
|
+
.mb-3
|
|
76
|
+
.form-check.mb-2
|
|
77
|
+
input.form-check-input(
|
|
78
|
+
type="checkbox",
|
|
79
|
+
name="receive_email_notf",
|
|
80
|
+
id="receive_email_notf"
|
|
81
|
+
)
|
|
82
|
+
label.form-check-label.fw-semibold(for="receive_email_notf")
|
|
83
|
+
i.bi.bi-envelope.me-1
|
|
84
|
+
| Receive Email Notifications
|
|
85
|
+
small.form-text.text-muted.d-block.ms-4 Get updates about deployment status
|
|
86
|
+
|
|
87
|
+
.form-check
|
|
88
|
+
input.form-check-input(
|
|
89
|
+
type="checkbox",
|
|
90
|
+
name="auto_deploy",
|
|
91
|
+
id="auto_deploy"
|
|
92
|
+
)
|
|
93
|
+
label.form-check-label.fw-semibold(for="auto_deploy")
|
|
94
|
+
i.bi.bi-rocket.me-1
|
|
95
|
+
| Enable Auto Deploy
|
|
96
|
+
small.form-text.text-muted.d-block.ms-4 Automatically deploy on GitHub push
|
|
97
|
+
|
|
98
|
+
hr.my-4
|
|
99
|
+
|
|
100
|
+
// Form Actions
|
|
101
|
+
.d-flex.gap-2
|
|
102
|
+
button.btn.btn-primary(type="submit")
|
|
103
|
+
i.bi.bi-check-lg.me-2
|
|
104
|
+
| Create Project
|
|
105
|
+
a.btn.btn-outline-secondary(href="/projects")
|
|
106
|
+
| Cancel
|
|
107
|
+
|
|
108
|
+
.col-lg-4.mb-4
|
|
109
|
+
// Info Note Card
|
|
110
|
+
.card.border-0.shadow-sm
|
|
111
|
+
.card-header.bg-white.border-bottom-0.pt-3
|
|
112
|
+
.d-flex.align-items-center
|
|
113
|
+
i.bi.bi-info-circle.text-warning.me-2(style="font-size: 1.25rem;")
|
|
114
|
+
h5.mb-0 Important Setup
|
|
115
|
+
.card-body
|
|
116
|
+
.alert.alert-warning.p-3.mb-0
|
|
117
|
+
strong
|
|
118
|
+
i.bi.bi-exclamation-triangle-fill.me-1
|
|
119
|
+
| SSH Authentication Required
|
|
120
|
+
hr
|
|
121
|
+
p.small.mb-2 The repository will be cloned using:
|
|
122
|
+
code.git-url.text-small git clone git@github.com:username/repository.git
|
|
123
|
+
hr
|
|
124
|
+
strong Setup SSH on your VPS:
|
|
125
|
+
ol.small.mt-2.ps-3.mb-0
|
|
126
|
+
li.mb-2
|
|
127
|
+
| Generate SSH key:
|
|
128
|
+
br
|
|
129
|
+
code ssh-keygen -t ed25519 -C "your_email@example.com"
|
|
130
|
+
li.mb-2
|
|
131
|
+
| Show public key:
|
|
132
|
+
br
|
|
133
|
+
code cat ~/.ssh/id_ed25519.pub
|
|
134
|
+
li.mb-2
|
|
135
|
+
| Add to GitHub:
|
|
136
|
+
br
|
|
137
|
+
a.text-decoration-none(href="https://github.com/settings/keys", target="_blank")
|
|
138
|
+
i.bi.bi-box-arrow-up-right.me-1
|
|
139
|
+
| github.com/settings/keys
|
|
140
|
+
li.mb-2
|
|
141
|
+
| Test connection:
|
|
142
|
+
br
|
|
143
|
+
code ssh -T git@github.com
|
|
144
|
+
|
|
145
|
+
// Additional styles
|
|
146
|
+
style.
|
|
147
|
+
.card {
|
|
148
|
+
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.card:hover {
|
|
152
|
+
transform: translateY(-2px);
|
|
153
|
+
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.08) !important;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.form-control:focus {
|
|
157
|
+
border-color: #0066ff;
|
|
158
|
+
box-shadow: 0 0 0 3px rgba(0, 102, 255, 0.1);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.alert {
|
|
162
|
+
border-radius: 8px;
|
|
163
|
+
border: none;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.alert-danger {
|
|
167
|
+
background: #fff5f5;
|
|
168
|
+
color: #c62828;
|
|
169
|
+
border-left: 4px solid #c62828;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.alert-warning {
|
|
173
|
+
background: #fff9e6;
|
|
174
|
+
color: #856404;
|
|
175
|
+
border-left: 4px solid #ffc107;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
code {
|
|
179
|
+
background: #f8f9fa;
|
|
180
|
+
padding: 0.2rem 0.4rem;
|
|
181
|
+
border-radius: 4px;
|
|
182
|
+
font-size: 0.8rem;
|
|
183
|
+
color: #d63384;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.git-url {
|
|
187
|
+
word-break: break-all;
|
|
188
|
+
display: inline-block;
|
|
189
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
extends ../../dashboard/views/layout.pug
|
|
2
|
+
|
|
3
|
+
block content
|
|
4
|
+
// Page Header
|
|
5
|
+
.d-flex.justify-content-between.align-items-center.mb-4
|
|
6
|
+
div
|
|
7
|
+
h2.mb-1 Project Details
|
|
8
|
+
p.text-muted.mb-0 Manage your project configuration and deployment
|
|
9
|
+
div
|
|
10
|
+
a.btn.btn-outline-secondary(href="/projects")
|
|
11
|
+
i.bi.bi-arrow-left.me-2
|
|
12
|
+
| Back to Projects
|
|
13
|
+
|
|
14
|
+
.row
|
|
15
|
+
.col-lg-6.mb-4
|
|
16
|
+
// ================= PROJECT INFO & WEBHOOK =================
|
|
17
|
+
.card.border-0.shadow-sm.mb-4
|
|
18
|
+
.card-header.bg-white.border-bottom-0.pt-3
|
|
19
|
+
.d-flex.align-items-center
|
|
20
|
+
i.bi.bi-info-circle.text-primary.me-2(style="font-size: 1.25rem;")
|
|
21
|
+
h5.mb-0 Project Information
|
|
22
|
+
.card-body
|
|
23
|
+
// Webhook Info
|
|
24
|
+
.alert.alert-info.mb-4
|
|
25
|
+
.mb-3
|
|
26
|
+
strong
|
|
27
|
+
i.bi.bi-link.me-1
|
|
28
|
+
| Webhook URL:
|
|
29
|
+
br
|
|
30
|
+
code.text-small #{`/webhook/${project.id}`}
|
|
31
|
+
.mb-3
|
|
32
|
+
strong
|
|
33
|
+
i.bi.bi-key.me-1
|
|
34
|
+
| Secret:
|
|
35
|
+
br
|
|
36
|
+
code.text-small #{project.webhook_secret}
|
|
37
|
+
hr.mb-0
|
|
38
|
+
.d-flex.justify-content-center.pt-2
|
|
39
|
+
button.btn.btn-primary.w-100(
|
|
40
|
+
id="deploy-btn",
|
|
41
|
+
data-projid=project.id
|
|
42
|
+
)
|
|
43
|
+
i.bi.bi-rocket-takeoff.me-2
|
|
44
|
+
| Deploy Now
|
|
45
|
+
|
|
46
|
+
// Update Form
|
|
47
|
+
form(method="POST", action=`/projects/${project.id}/update`)
|
|
48
|
+
.mb-3
|
|
49
|
+
label.form-label.fw-semibold(for="name")
|
|
50
|
+
i.bi.bi-tag.me-1
|
|
51
|
+
| Project Name
|
|
52
|
+
input.form-control(
|
|
53
|
+
type="text",
|
|
54
|
+
id="name",
|
|
55
|
+
name="name",
|
|
56
|
+
value=project.name,
|
|
57
|
+
required
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
.mb-3
|
|
61
|
+
label.form-label.fw-semibold(for="github_url")
|
|
62
|
+
i.bi.bi-github.me-1
|
|
63
|
+
| GitHub URL
|
|
64
|
+
input.form-control(
|
|
65
|
+
type="text",
|
|
66
|
+
id="github_url",
|
|
67
|
+
name="github_url",
|
|
68
|
+
value=project.github_url,
|
|
69
|
+
required
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
.mb-3
|
|
73
|
+
label.form-label.fw-semibold(for="branch_name")
|
|
74
|
+
i.bi.bi-git-branch.me-1
|
|
75
|
+
| Branch
|
|
76
|
+
input.form-control(
|
|
77
|
+
type="text",
|
|
78
|
+
id="branch_name",
|
|
79
|
+
name="branch_name",
|
|
80
|
+
value=project.branch_name,
|
|
81
|
+
required
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
.mb-3
|
|
85
|
+
.form-check.mb-2
|
|
86
|
+
input.form-check-input(
|
|
87
|
+
type="checkbox",
|
|
88
|
+
name="receive_email_notf",
|
|
89
|
+
id="receive_email_notf",
|
|
90
|
+
checked=(project.receive_email_notf === 1)
|
|
91
|
+
)
|
|
92
|
+
label.form-check-label.fw-semibold(for="receive_email_notf")
|
|
93
|
+
i.bi.bi-envelope.me-1
|
|
94
|
+
| Receive Email Notifications
|
|
95
|
+
|
|
96
|
+
.form-check
|
|
97
|
+
input.form-check-input(
|
|
98
|
+
type="checkbox",
|
|
99
|
+
name="auto_deploy",
|
|
100
|
+
id="auto_deploy",
|
|
101
|
+
checked=(project.auto_deploy === 1)
|
|
102
|
+
)
|
|
103
|
+
label.form-check-label.fw-semibold(for="auto_deploy")
|
|
104
|
+
i.bi.bi-rocket.me-1
|
|
105
|
+
| Enable Auto Deploy
|
|
106
|
+
|
|
107
|
+
hr.my-4
|
|
108
|
+
|
|
109
|
+
.d-flex.gap-2
|
|
110
|
+
button.btn.btn-primary(type="submit")
|
|
111
|
+
i.bi.bi-save.me-2
|
|
112
|
+
| Update Project
|
|
113
|
+
|
|
114
|
+
.col-lg-6.mb-4
|
|
115
|
+
// ================= ENVIRONMENT VARIABLES =================
|
|
116
|
+
.card.border-0.shadow-sm.mb-4
|
|
117
|
+
.card-header.bg-white.border-bottom-0.pt-3
|
|
118
|
+
.d-flex.align-items-center
|
|
119
|
+
i.bi.bi-gear.text-primary.me-2(style="font-size: 1.25rem;")
|
|
120
|
+
h5.mb-0 Environment Variables
|
|
121
|
+
.card-body
|
|
122
|
+
form(method="POST", action=`/projects/${project.id}/env`)
|
|
123
|
+
.row.g-2.mb-3
|
|
124
|
+
.col-md-5
|
|
125
|
+
input.form-control(type="text", name="key", placeholder="KEY", required)
|
|
126
|
+
.col-md-5
|
|
127
|
+
input.form-control(type="text", name="value", placeholder="VALUE", required)
|
|
128
|
+
.col-md-2
|
|
129
|
+
button.btn.btn-primary.w-100(type="submit")
|
|
130
|
+
i.bi.bi-plus-lg
|
|
131
|
+
|
|
132
|
+
if envs.length === 0
|
|
133
|
+
.text-center.py-4
|
|
134
|
+
i.bi.bi-database.text-muted(style="font-size: 2rem;")
|
|
135
|
+
p.text-muted.mt-2.mb-0 No environment variables
|
|
136
|
+
else
|
|
137
|
+
.table-responsive
|
|
138
|
+
table.table.table-hover.align-middle.mb-0
|
|
139
|
+
thead.table-light
|
|
140
|
+
tr
|
|
141
|
+
th(style="font-weight: 600;") Key
|
|
142
|
+
th(style="font-weight: 600;") Value
|
|
143
|
+
th(style="width: 80px;") Action
|
|
144
|
+
tbody
|
|
145
|
+
each e in envs
|
|
146
|
+
tr
|
|
147
|
+
td
|
|
148
|
+
code.text-small #{e.key}
|
|
149
|
+
td
|
|
150
|
+
code.text-small #{e.value}
|
|
151
|
+
td
|
|
152
|
+
form(method="POST", action=`/projects/${project.id}/env/${e.id}/delete`, onsubmit="return confirm('Delete this environment variable?');")
|
|
153
|
+
button.btn.btn-sm.btn-outline-danger(type="submit")
|
|
154
|
+
i.bi.bi-trash
|
|
155
|
+
|
|
156
|
+
// ================= COMMANDS =================
|
|
157
|
+
.card.border-0.shadow-sm
|
|
158
|
+
.card-header.bg-white.border-bottom-0.pt-3
|
|
159
|
+
.d-flex.align-items-center
|
|
160
|
+
i.bi.bi-terminal.text-primary.me-2(style="font-size: 1.25rem;")
|
|
161
|
+
h5.mb-0 Deployment Commands
|
|
162
|
+
.card-body
|
|
163
|
+
form(method="POST", action=`/projects/${project.id}/commands`)
|
|
164
|
+
.input-group.mb-3
|
|
165
|
+
input.form-control(type="text", name="cmd", placeholder="npm install", required)
|
|
166
|
+
button.btn.btn-primary(type="submit")
|
|
167
|
+
i.bi.bi-plus-lg.me-1
|
|
168
|
+
| Add Command
|
|
169
|
+
|
|
170
|
+
if commands.length === 0
|
|
171
|
+
.text-center.py-4
|
|
172
|
+
i.bi.bi-terminal-x.text-muted(style="font-size: 2rem;")
|
|
173
|
+
p.text-muted.mt-2.mb-0 No deployment commands
|
|
174
|
+
else
|
|
175
|
+
.table-responsive
|
|
176
|
+
table.table.table-hover.align-middle.mb-0
|
|
177
|
+
thead.table-light
|
|
178
|
+
tr
|
|
179
|
+
th(style="width: 80px; font-weight: 600;") Seq
|
|
180
|
+
th(style="font-weight: 600;") Command
|
|
181
|
+
th(style="width: 80px;") Action
|
|
182
|
+
tbody
|
|
183
|
+
each c in commands
|
|
184
|
+
tr
|
|
185
|
+
td
|
|
186
|
+
span.badge.bg-secondary #{c.seq_no}
|
|
187
|
+
td
|
|
188
|
+
code.text-small #{c.cmd}
|
|
189
|
+
td
|
|
190
|
+
form(method="POST", action=`/projects/${project.id}/commands/${c.id}/delete`, onsubmit="return confirm('Delete this command?');")
|
|
191
|
+
button.btn.btn-sm.btn-outline-danger(type="submit")
|
|
192
|
+
i.bi.bi-trash
|
|
193
|
+
|
|
194
|
+
// Additional styles
|
|
195
|
+
style.
|
|
196
|
+
.card {
|
|
197
|
+
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.card:hover {
|
|
201
|
+
transform: translateY(-2px);
|
|
202
|
+
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.08) !important;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.form-control:focus {
|
|
206
|
+
border-color: #0066ff;
|
|
207
|
+
box-shadow: 0 0 0 3px rgba(0, 102, 255, 0.1);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.alert-info {
|
|
211
|
+
background: #e8f4ff;
|
|
212
|
+
border: none;
|
|
213
|
+
border-left: 4px solid #0066ff;
|
|
214
|
+
color: #0047b3;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
code {
|
|
218
|
+
background: #f8f9fa;
|
|
219
|
+
padding: 0.2rem 0.4rem;
|
|
220
|
+
border-radius: 4px;
|
|
221
|
+
font-size: 0.8rem;
|
|
222
|
+
color: #d63384;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.table-hover tbody tr:hover {
|
|
226
|
+
background-color: #f8f9fa;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.btn-sm {
|
|
230
|
+
padding: 0.25rem 0.5rem;
|
|
231
|
+
font-size: 0.75rem;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.badge {
|
|
235
|
+
font-weight: 500;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
script(src="/js/deploy.js")
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
extends ../../dashboard/views/layout.pug
|
|
2
|
+
|
|
3
|
+
block content
|
|
4
|
+
// Page Header
|
|
5
|
+
.d-flex.flex-column.flex-md-row.justify-content-between.align-items-md-center.mb-4
|
|
6
|
+
div
|
|
7
|
+
h2.mb-1 Projects
|
|
8
|
+
p.text-muted.mb-0 Manage and monitor your deployed projects
|
|
9
|
+
div
|
|
10
|
+
a.btn.btn-primary(href="/projects/create")
|
|
11
|
+
i.bi.bi-plus-lg.me-2
|
|
12
|
+
| Create Project
|
|
13
|
+
|
|
14
|
+
// Empty State
|
|
15
|
+
if projects.length === 0
|
|
16
|
+
.card.border-0.shadow-sm
|
|
17
|
+
.card-body.text-center.py-5
|
|
18
|
+
i.bi.bi-folder-x.display-1.text-muted
|
|
19
|
+
h4.mt-3.text-muted No projects yet
|
|
20
|
+
p.text-muted.mb-3 Get started by creating your first project
|
|
21
|
+
a.btn.btn-primary(href="/projects/create")
|
|
22
|
+
i.bi.bi-plus-lg.me-2
|
|
23
|
+
| Create Your First Project
|
|
24
|
+
|
|
25
|
+
else
|
|
26
|
+
// Projects Table
|
|
27
|
+
.card.border-0.shadow-sm
|
|
28
|
+
.card-header.bg-white.border-bottom-0.pt-3.pb-0
|
|
29
|
+
.d-flex.align-items-center
|
|
30
|
+
i.bi.bi-folder.text-primary.me-2(style="font-size: 1.25rem;")
|
|
31
|
+
h5.mb-0 All Projects
|
|
32
|
+
.card-body.p-0
|
|
33
|
+
.table-responsive
|
|
34
|
+
table.table.table-hover.align-middle.mb-0
|
|
35
|
+
thead.table-light
|
|
36
|
+
tr
|
|
37
|
+
th(style="font-weight: 600;") Project Name
|
|
38
|
+
th(style="font-weight: 600;") Repository
|
|
39
|
+
th(style="font-weight: 600; width: 120px;") Actions
|
|
40
|
+
tbody
|
|
41
|
+
each p in projects
|
|
42
|
+
tr
|
|
43
|
+
td
|
|
44
|
+
.d-flex.align-items-center
|
|
45
|
+
i.bi.bi-folder-fill.text-primary.me-2
|
|
46
|
+
span.fw-medium #{p.name}
|
|
47
|
+
td
|
|
48
|
+
.d-flex.align-items-center
|
|
49
|
+
i.bi.bi-github.me-2.text-muted
|
|
50
|
+
code.text-small #{p.github_url}
|
|
51
|
+
td
|
|
52
|
+
.d-flex.gap-2
|
|
53
|
+
a.btn.btn-sm.btn-outline-primary(href=`/projects/${p.id}`)
|
|
54
|
+
i.bi.bi-eye.me-1
|
|
55
|
+
| View
|
|
56
|
+
form.d-inline(method="POST", action=`/projects/${p.id}/delete`, onsubmit="return confirm('Are you sure you want to delete this project? This action cannot be undone.');")
|
|
57
|
+
button.btn.btn-sm.btn-outline-danger(type="submit")
|
|
58
|
+
i.bi.bi-trash.me-1
|
|
59
|
+
| Delete
|
|
60
|
+
|
|
61
|
+
// Additional styles
|
|
62
|
+
style.
|
|
63
|
+
.card {
|
|
64
|
+
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.card:hover {
|
|
68
|
+
transform: translateY(-2px);
|
|
69
|
+
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.08) !important;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.table-hover tbody tr:hover {
|
|
73
|
+
background-color: #f8f9fa;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.btn-sm {
|
|
77
|
+
padding: 0.375rem 0.75rem;
|
|
78
|
+
font-size: 0.813rem;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
code {
|
|
82
|
+
background: #f8f9fa;
|
|
83
|
+
padding: 0.2rem 0.4rem;
|
|
84
|
+
border-radius: 4px;
|
|
85
|
+
font-size: 0.8rem;
|
|
86
|
+
color: #d63384;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.table-responsive {
|
|
90
|
+
border-radius: 8px;
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.btn-outline-primary {
|
|
95
|
+
border-color: #dee2e6;
|
|
96
|
+
color: #0066ff;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.btn-outline-primary:hover {
|
|
100
|
+
background: #0066ff;
|
|
101
|
+
border-color: #0066ff;
|
|
102
|
+
color: #ffffff;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.btn-outline-danger {
|
|
106
|
+
border-color: #dee2e6;
|
|
107
|
+
color: #dc3545;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.btn-outline-danger:hover {
|
|
111
|
+
background: #dc3545;
|
|
112
|
+
border-color: #dc3545;
|
|
113
|
+
color: #ffffff;
|
|
114
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Request, Response } from "express";
|
|
2
|
+
export declare const viewSettings: (_req: Request, res: Response) => void;
|
|
3
|
+
export declare const upsertEmail: (req: Request, res: Response) => void;
|
|
4
|
+
export declare const sendTestEmail: (_req: Request, res: Response) => Promise<void>;
|
|
5
|
+
//# sourceMappingURL=setting.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setting.controller.d.ts","sourceRoot":"","sources":["../../../../src/modules/settings/controllers/setting.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKjD,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,EAAE,KAAK,QAAQ,SAcxD,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,SA6CtD,CAAC;AAGF,eAAO,MAAM,aAAa,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,kBA0I/D,CAAC"}
|