odac 0.9.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/.editorconfig +21 -0
- package/.github/workflows/auto-pr-description.yml +49 -0
- package/.github/workflows/release.yml +32 -0
- package/.github/workflows/test-coverage.yml +58 -0
- package/.husky/pre-commit +2 -0
- package/.kiro/steering/code-style.md +56 -0
- package/.kiro/steering/product.md +20 -0
- package/.kiro/steering/structure.md +77 -0
- package/.kiro/steering/tech.md +87 -0
- package/.prettierrc +10 -0
- package/.releaserc.js +134 -0
- package/AGENTS.md +84 -0
- package/CHANGELOG.md +181 -0
- package/CODE_OF_CONDUCT.md +83 -0
- package/CONTRIBUTING.md +63 -0
- package/LICENSE +661 -0
- package/README.md +57 -0
- package/SECURITY.md +26 -0
- package/bin/candy +10 -0
- package/bin/candypack +10 -0
- package/cli/index.js +3 -0
- package/cli/src/Cli.js +348 -0
- package/cli/src/Connector.js +93 -0
- package/cli/src/Monitor.js +416 -0
- package/core/Candy.js +87 -0
- package/core/Commands.js +239 -0
- package/core/Config.js +1094 -0
- package/core/Lang.js +52 -0
- package/core/Log.js +43 -0
- package/core/Process.js +26 -0
- package/docs/backend/01-overview/01-whats-in-the-candy-box.md +9 -0
- package/docs/backend/01-overview/02-super-handy-helper-functions.md +9 -0
- package/docs/backend/01-overview/03-development-server.md +79 -0
- package/docs/backend/02-structure/01-typical-project-layout.md +39 -0
- package/docs/backend/03-config/00-configuration-overview.md +214 -0
- package/docs/backend/03-config/01-database-connection.md +60 -0
- package/docs/backend/03-config/02-static-route-mapping-optional.md +20 -0
- package/docs/backend/03-config/03-request-timeout.md +11 -0
- package/docs/backend/03-config/04-environment-variables.md +227 -0
- package/docs/backend/03-config/05-early-hints.md +352 -0
- package/docs/backend/04-routing/01-basic-page-routes.md +28 -0
- package/docs/backend/04-routing/02-controller-less-view-routes.md +43 -0
- package/docs/backend/04-routing/03-api-and-data-routes.md +20 -0
- package/docs/backend/04-routing/04-authentication-aware-routes.md +48 -0
- package/docs/backend/04-routing/05-advanced-routing.md +14 -0
- package/docs/backend/04-routing/06-error-pages.md +101 -0
- package/docs/backend/04-routing/07-cron-jobs.md +149 -0
- package/docs/backend/05-controllers/01-how-to-build-a-controller.md +17 -0
- package/docs/backend/05-controllers/02-your-trusty-candy-assistant.md +20 -0
- package/docs/backend/05-controllers/03-controller-classes.md +93 -0
- package/docs/backend/05-forms/01-custom-forms.md +395 -0
- package/docs/backend/05-forms/02-automatic-database-insert.md +297 -0
- package/docs/backend/06-request-and-response/01-the-request-object-what-is-the-user-asking-for.md +96 -0
- package/docs/backend/06-request-and-response/02-sending-a-response-replying-to-the-user.md +40 -0
- package/docs/backend/07-views/01-the-view-directory.md +73 -0
- package/docs/backend/07-views/02-rendering-a-view.md +179 -0
- package/docs/backend/07-views/03-template-syntax.md +181 -0
- package/docs/backend/07-views/03-variables.md +328 -0
- package/docs/backend/07-views/04-request-data.md +231 -0
- package/docs/backend/07-views/05-conditionals.md +290 -0
- package/docs/backend/07-views/06-loops.md +353 -0
- package/docs/backend/07-views/07-translations.md +358 -0
- package/docs/backend/07-views/08-backend-javascript.md +398 -0
- package/docs/backend/07-views/09-comments.md +297 -0
- package/docs/backend/08-database/01-database-connection.md +99 -0
- package/docs/backend/08-database/02-using-mysql.md +322 -0
- package/docs/backend/09-validation/01-the-validator-service.md +424 -0
- package/docs/backend/10-authentication/01-user-logins-with-authjs.md +53 -0
- package/docs/backend/10-authentication/02-foiling-villains-with-csrf-protection.md +55 -0
- package/docs/backend/10-authentication/03-register.md +134 -0
- package/docs/backend/10-authentication/04-candy-register-forms.md +676 -0
- package/docs/backend/10-authentication/05-session-management.md +159 -0
- package/docs/backend/10-authentication/06-candy-login-forms.md +596 -0
- package/docs/backend/11-mail/01-the-mail-service.md +42 -0
- package/docs/backend/12-streaming/01-streaming-overview.md +300 -0
- package/docs/backend/13-utilities/01-candy-var.md +504 -0
- package/docs/frontend/01-overview/01-introduction.md +146 -0
- package/docs/frontend/02-ajax-navigation/01-quick-start.md +608 -0
- package/docs/frontend/02-ajax-navigation/02-configuration.md +370 -0
- package/docs/frontend/02-ajax-navigation/03-advanced-usage.md +519 -0
- package/docs/frontend/03-forms/01-form-handling.md +420 -0
- package/docs/frontend/04-api-requests/01-get-post.md +443 -0
- package/docs/frontend/05-streaming/01-client-streaming.md +163 -0
- package/docs/index.json +452 -0
- package/docs/server/01-installation/01-quick-install.md +19 -0
- package/docs/server/01-installation/02-manual-installation-via-npm.md +9 -0
- package/docs/server/02-get-started/01-core-concepts.md +7 -0
- package/docs/server/02-get-started/02-basic-commands.md +57 -0
- package/docs/server/02-get-started/03-cli-reference.md +276 -0
- package/docs/server/02-get-started/04-cli-quick-reference.md +102 -0
- package/docs/server/03-service/01-start-a-new-service.md +57 -0
- package/docs/server/03-service/02-delete-a-service.md +48 -0
- package/docs/server/04-web/01-create-a-website.md +36 -0
- package/docs/server/04-web/02-list-websites.md +9 -0
- package/docs/server/04-web/03-delete-a-website.md +29 -0
- package/docs/server/05-subdomain/01-create-a-subdomain.md +32 -0
- package/docs/server/05-subdomain/02-list-subdomains.md +33 -0
- package/docs/server/05-subdomain/03-delete-a-subdomain.md +41 -0
- package/docs/server/06-ssl/01-renew-an-ssl-certificate.md +34 -0
- package/docs/server/07-mail/01-create-a-mail-account.md +23 -0
- package/docs/server/07-mail/02-delete-a-mail-account.md +20 -0
- package/docs/server/07-mail/03-list-mail-accounts.md +20 -0
- package/docs/server/07-mail/04-change-account-password.md +23 -0
- package/eslint.config.mjs +120 -0
- package/framework/index.js +4 -0
- package/framework/src/Auth.js +309 -0
- package/framework/src/Candy.js +81 -0
- package/framework/src/Config.js +79 -0
- package/framework/src/Env.js +60 -0
- package/framework/src/Lang.js +57 -0
- package/framework/src/Mail.js +83 -0
- package/framework/src/Mysql.js +575 -0
- package/framework/src/Request.js +301 -0
- package/framework/src/Route/Cron.js +128 -0
- package/framework/src/Route/Internal.js +439 -0
- package/framework/src/Route.js +455 -0
- package/framework/src/Server.js +15 -0
- package/framework/src/Stream.js +163 -0
- package/framework/src/Token.js +37 -0
- package/framework/src/Validator.js +271 -0
- package/framework/src/Var.js +211 -0
- package/framework/src/View/EarlyHints.js +190 -0
- package/framework/src/View/Form.js +600 -0
- package/framework/src/View.js +513 -0
- package/framework/web/candy.js +838 -0
- package/jest.config.js +22 -0
- package/locale/de-DE.json +80 -0
- package/locale/en-US.json +79 -0
- package/locale/es-ES.json +80 -0
- package/locale/fr-FR.json +80 -0
- package/locale/pt-BR.json +80 -0
- package/locale/ru-RU.json +80 -0
- package/locale/tr-TR.json +85 -0
- package/locale/zh-CN.json +80 -0
- package/package.json +86 -0
- package/server/index.js +5 -0
- package/server/src/Api.js +88 -0
- package/server/src/DNS.js +940 -0
- package/server/src/Hub.js +535 -0
- package/server/src/Mail.js +571 -0
- package/server/src/SSL.js +180 -0
- package/server/src/Server.js +27 -0
- package/server/src/Service.js +248 -0
- package/server/src/Subdomain.js +64 -0
- package/server/src/Web/Firewall.js +170 -0
- package/server/src/Web/Proxy.js +134 -0
- package/server/src/Web.js +451 -0
- package/server/src/mail/imap.js +1091 -0
- package/server/src/mail/server.js +32 -0
- package/server/src/mail/smtp.js +786 -0
- package/test/cli/Cli.test.js +36 -0
- package/test/core/Candy.test.js +234 -0
- package/test/core/Commands.test.js +538 -0
- package/test/core/Config.test.js +1435 -0
- package/test/core/Lang.test.js +250 -0
- package/test/core/Process.test.js +156 -0
- package/test/framework/Route.test.js +239 -0
- package/test/framework/View/EarlyHints.test.js +282 -0
- package/test/scripts/check-coverage.js +132 -0
- package/test/server/Api.test.js +647 -0
- package/test/server/Client.test.js +338 -0
- package/test/server/DNS.test.js +2050 -0
- package/test/server/DNS.test.js.bak +2084 -0
- package/test/server/Log.test.js +73 -0
- package/test/server/Mail.account.test_.js +460 -0
- package/test/server/Mail.init.test_.js +411 -0
- package/test/server/Mail.test_.js +1340 -0
- package/test/server/SSL.test_.js +1491 -0
- package/test/server/Server.test.js +765 -0
- package/test/server/Service.test_.js +1127 -0
- package/test/server/Subdomain.test.js +440 -0
- package/test/server/Web/Firewall.test.js +175 -0
- package/test/server/Web.test_.js +1562 -0
- package/test/server/__mocks__/acme-client.js +17 -0
- package/test/server/__mocks__/bcrypt.js +50 -0
- package/test/server/__mocks__/child_process.js +389 -0
- package/test/server/__mocks__/crypto.js +432 -0
- package/test/server/__mocks__/fs.js +450 -0
- package/test/server/__mocks__/globalCandy.js +227 -0
- package/test/server/__mocks__/http-proxy.js +105 -0
- package/test/server/__mocks__/http.js +575 -0
- package/test/server/__mocks__/https.js +272 -0
- package/test/server/__mocks__/index.js +249 -0
- package/test/server/__mocks__/mail/server.js +100 -0
- package/test/server/__mocks__/mail/smtp.js +31 -0
- package/test/server/__mocks__/mailparser.js +81 -0
- package/test/server/__mocks__/net.js +369 -0
- package/test/server/__mocks__/node-forge.js +328 -0
- package/test/server/__mocks__/os.js +320 -0
- package/test/server/__mocks__/path.js +291 -0
- package/test/server/__mocks__/selfsigned.js +8 -0
- package/test/server/__mocks__/server/src/mail/server.js +100 -0
- package/test/server/__mocks__/server/src/mail/smtp.js +31 -0
- package/test/server/__mocks__/smtp-server.js +106 -0
- package/test/server/__mocks__/sqlite3.js +394 -0
- package/test/server/__mocks__/testFactories.js +299 -0
- package/test/server/__mocks__/testHelpers.js +363 -0
- package/test/server/__mocks__/tls.js +229 -0
- package/watchdog/index.js +3 -0
- package/watchdog/src/Watchdog.js +156 -0
- package/web/config.json +5 -0
- package/web/controller/page/about.js +27 -0
- package/web/controller/page/index.js +34 -0
- package/web/package.json +18 -0
- package/web/public/assets/css/style.css +1835 -0
- package/web/public/assets/js/app.js +96 -0
- package/web/route/www.js +19 -0
- package/web/skeleton/main.html +22 -0
- package/web/view/content/about.html +65 -0
- package/web/view/content/home.html +205 -0
- package/web/view/footer/main.html +11 -0
- package/web/view/head/main.html +5 -0
- package/web/view/header/main.html +14 -0
package/docs/index.json
ADDED
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
{
|
|
2
|
+
"server": [
|
|
3
|
+
{
|
|
4
|
+
"file": "01-installation",
|
|
5
|
+
"title": "Installation",
|
|
6
|
+
"children": [
|
|
7
|
+
{
|
|
8
|
+
"file": "01-quick-install.md",
|
|
9
|
+
"title": "Quick Install"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"file": "02-manual-installation-via-npm.md",
|
|
13
|
+
"title": "Manual Installation (via NPM)"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"file": "02-get-started",
|
|
19
|
+
"title": "Getting Started",
|
|
20
|
+
"children": [
|
|
21
|
+
{
|
|
22
|
+
"file": "01-core-concepts.md",
|
|
23
|
+
"title": "Core Concepts"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"file": "02-basic-commands.md",
|
|
27
|
+
"title": "Basic Commands"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"file": "03-cli-reference.md",
|
|
31
|
+
"title": "CLI Reference"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"file": "04-cli-quick-reference.md",
|
|
35
|
+
"title": "CLI Quick Reference"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"file": "03-service",
|
|
41
|
+
"title": "Running a Service",
|
|
42
|
+
"children": [
|
|
43
|
+
{
|
|
44
|
+
"file": "01-start-a-new-service.md",
|
|
45
|
+
"title": "Start a New Service"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"file": "02-delete-a-service.md",
|
|
49
|
+
"title": "Delete a Service"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"file": "04-web",
|
|
55
|
+
"title": "Managing Websites",
|
|
56
|
+
"children": [
|
|
57
|
+
{
|
|
58
|
+
"file": "01-create-a-website.md",
|
|
59
|
+
"title": "Create a Website"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"file": "02-list-websites.md",
|
|
63
|
+
"title": "List Websites"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"file": "03-delete-a-website.md",
|
|
67
|
+
"title": "Delete a Website"
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"file": "05-subdomain",
|
|
73
|
+
"title": "Managing Subdomains",
|
|
74
|
+
"children": [
|
|
75
|
+
{
|
|
76
|
+
"file": "01-create-a-subdomain.md",
|
|
77
|
+
"title": "Create a Subdomain"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"file": "02-list-subdomains.md",
|
|
81
|
+
"title": "List Subdomains"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"file": "03-delete-a-subdomain.md",
|
|
85
|
+
"title": "Delete a Subdomain"
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"file": "06-ssl",
|
|
91
|
+
"title": "Managing SSL",
|
|
92
|
+
"children": [
|
|
93
|
+
{
|
|
94
|
+
"file": "01-renew-an-ssl-certificate.md",
|
|
95
|
+
"title": "Renew an SSL Certificate"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"file": "07-mail",
|
|
101
|
+
"title": "Managing Mail",
|
|
102
|
+
"children": [
|
|
103
|
+
{
|
|
104
|
+
"file": "01-create-a-mail-account.md",
|
|
105
|
+
"title": "Create a Mail Account"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"file": "02-delete-a-mail-account.md",
|
|
109
|
+
"title": "Delete a Mail Account"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"file": "03-list-mail-accounts.md",
|
|
113
|
+
"title": "List Mail Accounts"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"file": "04-change-account-password.md",
|
|
117
|
+
"title": "Change Account Password"
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"backend": [
|
|
123
|
+
{
|
|
124
|
+
"file": "01-overview",
|
|
125
|
+
"title": "Backend Overview",
|
|
126
|
+
"children": [
|
|
127
|
+
{
|
|
128
|
+
"file": "01-whats-in-the-candy-box.md",
|
|
129
|
+
"title": "Candy Object"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"file": "02-super-handy-helper-functions.md",
|
|
133
|
+
"title": "Helper Functions"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"file": "03-development-server.md",
|
|
137
|
+
"title": "Development Server"
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"file": "02-structure",
|
|
143
|
+
"title": "Project Structure",
|
|
144
|
+
"children": [
|
|
145
|
+
{
|
|
146
|
+
"file": "01-typical-project-layout.md",
|
|
147
|
+
"title": "Project Layout"
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"file": "03-config",
|
|
153
|
+
"title": "Configuration",
|
|
154
|
+
"children": [
|
|
155
|
+
{
|
|
156
|
+
"file": "00-configuration-overview.md",
|
|
157
|
+
"title": "Configuration Overview"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"file": "01-database-connection.md",
|
|
161
|
+
"title": "Database Connection"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"file": "02-static-route-mapping-optional.md",
|
|
165
|
+
"title": "Static Route Mapping"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"file": "03-request-timeout.md",
|
|
169
|
+
"title": "Request Timeout"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"file": "04-environment-variables.md",
|
|
173
|
+
"title": "Environment Variables"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"file": "05-early-hints.md",
|
|
177
|
+
"title": "Early Hints"
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"file": "04-routing",
|
|
183
|
+
"title": "Routing",
|
|
184
|
+
"children": [
|
|
185
|
+
{
|
|
186
|
+
"file": "01-basic-page-routes.md",
|
|
187
|
+
"title": "Basic Routes"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"file": "02-controller-less-view-routes.md",
|
|
191
|
+
"title": "View Routes"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"file": "03-api-and-data-routes.md",
|
|
195
|
+
"title": "API Routes"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"file": "04-authentication-aware-routes.md",
|
|
199
|
+
"title": "Protected Routes"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"file": "05-advanced-routing.md",
|
|
203
|
+
"title": "Advanced Routing"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"file": "06-error-pages.md",
|
|
207
|
+
"title": "Error Pages"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"file": "07-cron-jobs.md",
|
|
211
|
+
"title": "Cron Jobs"
|
|
212
|
+
}
|
|
213
|
+
]
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"file": "05-controllers",
|
|
217
|
+
"title": "Controllers",
|
|
218
|
+
"children": [
|
|
219
|
+
{
|
|
220
|
+
"file": "01-how-to-build-a-controller.md",
|
|
221
|
+
"title": "Building Controllers"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"file": "02-your-trusty-candy-assistant.md",
|
|
225
|
+
"title": "Using Candy"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"file": "03-controller-classes.md",
|
|
229
|
+
"title": "Controller Classes"
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"file": "05-forms",
|
|
235
|
+
"title": "Forms",
|
|
236
|
+
"children": [
|
|
237
|
+
{
|
|
238
|
+
"file": "01-custom-forms.md",
|
|
239
|
+
"title": "Custom Forms"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"file": "02-automatic-database-insert.md",
|
|
243
|
+
"title": "Automatic Database Insert"
|
|
244
|
+
}
|
|
245
|
+
]
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"file": "06-request-and-response",
|
|
249
|
+
"title": "Request & Response",
|
|
250
|
+
"children": [
|
|
251
|
+
{
|
|
252
|
+
"file": "01-the-request-object-what-is-the-user-asking-for.md",
|
|
253
|
+
"title": "Request Object"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"file": "02-sending-a-response-replying-to-the-user.md",
|
|
257
|
+
"title": "Response Object"
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"file": "07-views",
|
|
263
|
+
"title": "Views",
|
|
264
|
+
"children": [
|
|
265
|
+
{
|
|
266
|
+
"file": "01-the-view-directory.md",
|
|
267
|
+
"title": "View System Overview"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"file": "02-rendering-a-view.md",
|
|
271
|
+
"title": "Rendering Views"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"file": "03-template-syntax.md",
|
|
275
|
+
"title": "Template Syntax Overview"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"file": "03-variables.md",
|
|
279
|
+
"title": "Variables"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"file": "04-request-data.md",
|
|
283
|
+
"title": "Request Data"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"file": "05-conditionals.md",
|
|
287
|
+
"title": "Conditionals"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"file": "06-loops.md",
|
|
291
|
+
"title": "Loops"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"file": "07-translations.md",
|
|
295
|
+
"title": "Translations (i18n)"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"file": "08-backend-javascript.md",
|
|
299
|
+
"title": "Backend JavaScript"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"file": "09-comments.md",
|
|
303
|
+
"title": "Comments"
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"file": "08-database",
|
|
309
|
+
"title": "Database",
|
|
310
|
+
"children": [
|
|
311
|
+
{
|
|
312
|
+
"file": "01-database-connection.md",
|
|
313
|
+
"title": "Database Connection"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"file": "02-using-mysql.md",
|
|
317
|
+
"title": "Using MySQL"
|
|
318
|
+
}
|
|
319
|
+
]
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"file": "09-validation",
|
|
323
|
+
"title": "Validation",
|
|
324
|
+
"children": [
|
|
325
|
+
{
|
|
326
|
+
"file": "01-the-validator-service.md",
|
|
327
|
+
"title": "Validator Service"
|
|
328
|
+
}
|
|
329
|
+
]
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"file": "10-authentication",
|
|
333
|
+
"title": "Authentication & Security",
|
|
334
|
+
"children": [
|
|
335
|
+
{
|
|
336
|
+
"file": "01-user-logins-with-authjs.md",
|
|
337
|
+
"title": "User Authentication"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"file": "02-foiling-villains-with-csrf-protection.md",
|
|
341
|
+
"title": "CSRF Protection"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"file": "03-register.md",
|
|
345
|
+
"title": "User Registration (Programmatic)"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"file": "04-candy-register-forms.md",
|
|
349
|
+
"title": "Candy Register Forms (Zero-Config)"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"file": "05-session-management.md",
|
|
353
|
+
"title": "Session Management"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"file": "06-candy-login-forms.md",
|
|
357
|
+
"title": "Candy Login Forms (Zero-Config)"
|
|
358
|
+
}
|
|
359
|
+
]
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"file": "11-mail",
|
|
363
|
+
"title": "Email",
|
|
364
|
+
"children": [
|
|
365
|
+
{
|
|
366
|
+
"file": "01-the-mail-service.md",
|
|
367
|
+
"title": "Mail Service"
|
|
368
|
+
}
|
|
369
|
+
]
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"file": "12-streaming",
|
|
373
|
+
"title": "Streaming",
|
|
374
|
+
"children": [
|
|
375
|
+
{
|
|
376
|
+
"file": "01-streaming-overview.md",
|
|
377
|
+
"title": "Streaming API"
|
|
378
|
+
}
|
|
379
|
+
]
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"file": "13-utilities",
|
|
383
|
+
"title": "Utilities",
|
|
384
|
+
"children": [
|
|
385
|
+
{
|
|
386
|
+
"file": "01-candy-var.md",
|
|
387
|
+
"title": "Candy.Var"
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
}
|
|
391
|
+
],
|
|
392
|
+
"frontend": [
|
|
393
|
+
{
|
|
394
|
+
"file": "01-overview",
|
|
395
|
+
"title": "candy.js Overview",
|
|
396
|
+
"children": [
|
|
397
|
+
{
|
|
398
|
+
"file": "01-introduction.md",
|
|
399
|
+
"title": "Introduction"
|
|
400
|
+
}
|
|
401
|
+
]
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"file": "02-ajax-navigation",
|
|
405
|
+
"title": "AJAX Navigation",
|
|
406
|
+
"children": [
|
|
407
|
+
{
|
|
408
|
+
"file": "01-quick-start.md",
|
|
409
|
+
"title": "Quick Start"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"file": "02-configuration.md",
|
|
413
|
+
"title": "Configuration"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"file": "03-advanced-usage.md",
|
|
417
|
+
"title": "Advanced Usage"
|
|
418
|
+
}
|
|
419
|
+
]
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"file": "03-forms",
|
|
423
|
+
"title": "Form Handling",
|
|
424
|
+
"children": [
|
|
425
|
+
{
|
|
426
|
+
"file": "01-form-handling.md",
|
|
427
|
+
"title": "Form Handling"
|
|
428
|
+
}
|
|
429
|
+
]
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"file": "04-api-requests",
|
|
433
|
+
"title": "API Requests",
|
|
434
|
+
"children": [
|
|
435
|
+
{
|
|
436
|
+
"file": "01-get-post.md",
|
|
437
|
+
"title": "GET & POST Requests"
|
|
438
|
+
}
|
|
439
|
+
]
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"file": "05-streaming",
|
|
443
|
+
"title": "Streaming",
|
|
444
|
+
"children": [
|
|
445
|
+
{
|
|
446
|
+
"file": "01-client-streaming.md",
|
|
447
|
+
"title": "Client-Side Streaming"
|
|
448
|
+
}
|
|
449
|
+
]
|
|
450
|
+
}
|
|
451
|
+
]
|
|
452
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## ⚡ Quick Install
|
|
2
|
+
|
|
3
|
+
This is the recommended method for most users.
|
|
4
|
+
|
|
5
|
+
### Linux & macOS
|
|
6
|
+
|
|
7
|
+
Run the following command in your terminal:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
curl -sL https://candypack.dev/install | bash
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Windows
|
|
14
|
+
|
|
15
|
+
Open PowerShell as an administrator and run the following command:
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
iex (iwr -useb 'https://candypack.dev/install')
|
|
19
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## 📦 Manual Installation (via NPM)
|
|
2
|
+
|
|
3
|
+
If you prefer to install manually or have issues with the quick install script, you can install CandyPack directly from NPM.
|
|
4
|
+
|
|
5
|
+
1. **Install Node.js:** Ensure you have Node.js (v18+) installed on your system. You can download it from [nodejs.org](https://nodejs.org/).
|
|
6
|
+
2. **Install CandyPack:** Use npm to install CandyPack globally:
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g candypack
|
|
9
|
+
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
## 🧠 Core Concepts
|
|
2
|
+
|
|
3
|
+
CandyPack is designed to be a powerful, developer-first toolkit that runs as a persistent background service on your server. Here’s how it works:
|
|
4
|
+
|
|
5
|
+
- **Background Service:** Once started, CandyPack runs continuously in the background, managing all your configured websites and services. You don't need to manually keep it active.
|
|
6
|
+
- **CLI Control:** You interact with and control the CandyPack server through the `candy` command-line tool. This tool allows you to start, stop, monitor, and manage your applications.
|
|
7
|
+
- **Automation:** The primary goal of CandyPack is to automate common server management tasks, such as SSL certificate renewal, service monitoring, and application deployment, allowing you to focus on development.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
## 💻 Basic Commands
|
|
2
|
+
|
|
3
|
+
These are the most common commands for interacting with the CandyPack server.
|
|
4
|
+
|
|
5
|
+
### Check Status
|
|
6
|
+
To see the current status of the CandyPack server, including uptime and the number of running services, simply run the `candy` command with no arguments:
|
|
7
|
+
```bash
|
|
8
|
+
candy
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Restart the Server
|
|
12
|
+
If you need to apply new configurations or restart all services, you can use the `restart` command:
|
|
13
|
+
```bash
|
|
14
|
+
candy restart
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Monitor Services
|
|
18
|
+
To get a real-time, interactive view of your running websites and services, use the `monit` command:
|
|
19
|
+
```bash
|
|
20
|
+
candy monit
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### View Live Logs
|
|
24
|
+
For debugging purposes, you can view a live stream of all server and application logs with the `debug` command:
|
|
25
|
+
```bash
|
|
26
|
+
candy debug
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Get Help
|
|
30
|
+
To see a list of all available commands, use the `help` command:
|
|
31
|
+
```bash
|
|
32
|
+
candy help
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Using Prefix Arguments
|
|
36
|
+
Many CandyPack commands support prefix arguments that allow you to provide values directly in the command line, avoiding interactive prompts. This is especially useful for automation and scripting.
|
|
37
|
+
|
|
38
|
+
**Common Prefixes:**
|
|
39
|
+
- `-d`, `--domain`: Specify domain name
|
|
40
|
+
- `-e`, `--email`: Specify email address
|
|
41
|
+
- `-p`, `--password`: Specify password
|
|
42
|
+
- `-s`, `--subdomain`: Specify subdomain
|
|
43
|
+
- `-i`, `--id`: Specify service ID
|
|
44
|
+
- `-k`, `--key`: Specify authentication key
|
|
45
|
+
|
|
46
|
+
**Example:**
|
|
47
|
+
```bash
|
|
48
|
+
# Interactive mode (prompts for input)
|
|
49
|
+
candy web create
|
|
50
|
+
|
|
51
|
+
# Single-line mode with prefix
|
|
52
|
+
candy web create -d example.com
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
**Next Steps:** For more advanced topics, such as managing websites, services, SSL certificates, and mail accounts, please refer to the upcoming documentation files.
|