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.
Files changed (213) hide show
  1. package/.editorconfig +21 -0
  2. package/.github/workflows/auto-pr-description.yml +49 -0
  3. package/.github/workflows/release.yml +32 -0
  4. package/.github/workflows/test-coverage.yml +58 -0
  5. package/.husky/pre-commit +2 -0
  6. package/.kiro/steering/code-style.md +56 -0
  7. package/.kiro/steering/product.md +20 -0
  8. package/.kiro/steering/structure.md +77 -0
  9. package/.kiro/steering/tech.md +87 -0
  10. package/.prettierrc +10 -0
  11. package/.releaserc.js +134 -0
  12. package/AGENTS.md +84 -0
  13. package/CHANGELOG.md +181 -0
  14. package/CODE_OF_CONDUCT.md +83 -0
  15. package/CONTRIBUTING.md +63 -0
  16. package/LICENSE +661 -0
  17. package/README.md +57 -0
  18. package/SECURITY.md +26 -0
  19. package/bin/candy +10 -0
  20. package/bin/candypack +10 -0
  21. package/cli/index.js +3 -0
  22. package/cli/src/Cli.js +348 -0
  23. package/cli/src/Connector.js +93 -0
  24. package/cli/src/Monitor.js +416 -0
  25. package/core/Candy.js +87 -0
  26. package/core/Commands.js +239 -0
  27. package/core/Config.js +1094 -0
  28. package/core/Lang.js +52 -0
  29. package/core/Log.js +43 -0
  30. package/core/Process.js +26 -0
  31. package/docs/backend/01-overview/01-whats-in-the-candy-box.md +9 -0
  32. package/docs/backend/01-overview/02-super-handy-helper-functions.md +9 -0
  33. package/docs/backend/01-overview/03-development-server.md +79 -0
  34. package/docs/backend/02-structure/01-typical-project-layout.md +39 -0
  35. package/docs/backend/03-config/00-configuration-overview.md +214 -0
  36. package/docs/backend/03-config/01-database-connection.md +60 -0
  37. package/docs/backend/03-config/02-static-route-mapping-optional.md +20 -0
  38. package/docs/backend/03-config/03-request-timeout.md +11 -0
  39. package/docs/backend/03-config/04-environment-variables.md +227 -0
  40. package/docs/backend/03-config/05-early-hints.md +352 -0
  41. package/docs/backend/04-routing/01-basic-page-routes.md +28 -0
  42. package/docs/backend/04-routing/02-controller-less-view-routes.md +43 -0
  43. package/docs/backend/04-routing/03-api-and-data-routes.md +20 -0
  44. package/docs/backend/04-routing/04-authentication-aware-routes.md +48 -0
  45. package/docs/backend/04-routing/05-advanced-routing.md +14 -0
  46. package/docs/backend/04-routing/06-error-pages.md +101 -0
  47. package/docs/backend/04-routing/07-cron-jobs.md +149 -0
  48. package/docs/backend/05-controllers/01-how-to-build-a-controller.md +17 -0
  49. package/docs/backend/05-controllers/02-your-trusty-candy-assistant.md +20 -0
  50. package/docs/backend/05-controllers/03-controller-classes.md +93 -0
  51. package/docs/backend/05-forms/01-custom-forms.md +395 -0
  52. package/docs/backend/05-forms/02-automatic-database-insert.md +297 -0
  53. package/docs/backend/06-request-and-response/01-the-request-object-what-is-the-user-asking-for.md +96 -0
  54. package/docs/backend/06-request-and-response/02-sending-a-response-replying-to-the-user.md +40 -0
  55. package/docs/backend/07-views/01-the-view-directory.md +73 -0
  56. package/docs/backend/07-views/02-rendering-a-view.md +179 -0
  57. package/docs/backend/07-views/03-template-syntax.md +181 -0
  58. package/docs/backend/07-views/03-variables.md +328 -0
  59. package/docs/backend/07-views/04-request-data.md +231 -0
  60. package/docs/backend/07-views/05-conditionals.md +290 -0
  61. package/docs/backend/07-views/06-loops.md +353 -0
  62. package/docs/backend/07-views/07-translations.md +358 -0
  63. package/docs/backend/07-views/08-backend-javascript.md +398 -0
  64. package/docs/backend/07-views/09-comments.md +297 -0
  65. package/docs/backend/08-database/01-database-connection.md +99 -0
  66. package/docs/backend/08-database/02-using-mysql.md +322 -0
  67. package/docs/backend/09-validation/01-the-validator-service.md +424 -0
  68. package/docs/backend/10-authentication/01-user-logins-with-authjs.md +53 -0
  69. package/docs/backend/10-authentication/02-foiling-villains-with-csrf-protection.md +55 -0
  70. package/docs/backend/10-authentication/03-register.md +134 -0
  71. package/docs/backend/10-authentication/04-candy-register-forms.md +676 -0
  72. package/docs/backend/10-authentication/05-session-management.md +159 -0
  73. package/docs/backend/10-authentication/06-candy-login-forms.md +596 -0
  74. package/docs/backend/11-mail/01-the-mail-service.md +42 -0
  75. package/docs/backend/12-streaming/01-streaming-overview.md +300 -0
  76. package/docs/backend/13-utilities/01-candy-var.md +504 -0
  77. package/docs/frontend/01-overview/01-introduction.md +146 -0
  78. package/docs/frontend/02-ajax-navigation/01-quick-start.md +608 -0
  79. package/docs/frontend/02-ajax-navigation/02-configuration.md +370 -0
  80. package/docs/frontend/02-ajax-navigation/03-advanced-usage.md +519 -0
  81. package/docs/frontend/03-forms/01-form-handling.md +420 -0
  82. package/docs/frontend/04-api-requests/01-get-post.md +443 -0
  83. package/docs/frontend/05-streaming/01-client-streaming.md +163 -0
  84. package/docs/index.json +452 -0
  85. package/docs/server/01-installation/01-quick-install.md +19 -0
  86. package/docs/server/01-installation/02-manual-installation-via-npm.md +9 -0
  87. package/docs/server/02-get-started/01-core-concepts.md +7 -0
  88. package/docs/server/02-get-started/02-basic-commands.md +57 -0
  89. package/docs/server/02-get-started/03-cli-reference.md +276 -0
  90. package/docs/server/02-get-started/04-cli-quick-reference.md +102 -0
  91. package/docs/server/03-service/01-start-a-new-service.md +57 -0
  92. package/docs/server/03-service/02-delete-a-service.md +48 -0
  93. package/docs/server/04-web/01-create-a-website.md +36 -0
  94. package/docs/server/04-web/02-list-websites.md +9 -0
  95. package/docs/server/04-web/03-delete-a-website.md +29 -0
  96. package/docs/server/05-subdomain/01-create-a-subdomain.md +32 -0
  97. package/docs/server/05-subdomain/02-list-subdomains.md +33 -0
  98. package/docs/server/05-subdomain/03-delete-a-subdomain.md +41 -0
  99. package/docs/server/06-ssl/01-renew-an-ssl-certificate.md +34 -0
  100. package/docs/server/07-mail/01-create-a-mail-account.md +23 -0
  101. package/docs/server/07-mail/02-delete-a-mail-account.md +20 -0
  102. package/docs/server/07-mail/03-list-mail-accounts.md +20 -0
  103. package/docs/server/07-mail/04-change-account-password.md +23 -0
  104. package/eslint.config.mjs +120 -0
  105. package/framework/index.js +4 -0
  106. package/framework/src/Auth.js +309 -0
  107. package/framework/src/Candy.js +81 -0
  108. package/framework/src/Config.js +79 -0
  109. package/framework/src/Env.js +60 -0
  110. package/framework/src/Lang.js +57 -0
  111. package/framework/src/Mail.js +83 -0
  112. package/framework/src/Mysql.js +575 -0
  113. package/framework/src/Request.js +301 -0
  114. package/framework/src/Route/Cron.js +128 -0
  115. package/framework/src/Route/Internal.js +439 -0
  116. package/framework/src/Route.js +455 -0
  117. package/framework/src/Server.js +15 -0
  118. package/framework/src/Stream.js +163 -0
  119. package/framework/src/Token.js +37 -0
  120. package/framework/src/Validator.js +271 -0
  121. package/framework/src/Var.js +211 -0
  122. package/framework/src/View/EarlyHints.js +190 -0
  123. package/framework/src/View/Form.js +600 -0
  124. package/framework/src/View.js +513 -0
  125. package/framework/web/candy.js +838 -0
  126. package/jest.config.js +22 -0
  127. package/locale/de-DE.json +80 -0
  128. package/locale/en-US.json +79 -0
  129. package/locale/es-ES.json +80 -0
  130. package/locale/fr-FR.json +80 -0
  131. package/locale/pt-BR.json +80 -0
  132. package/locale/ru-RU.json +80 -0
  133. package/locale/tr-TR.json +85 -0
  134. package/locale/zh-CN.json +80 -0
  135. package/package.json +86 -0
  136. package/server/index.js +5 -0
  137. package/server/src/Api.js +88 -0
  138. package/server/src/DNS.js +940 -0
  139. package/server/src/Hub.js +535 -0
  140. package/server/src/Mail.js +571 -0
  141. package/server/src/SSL.js +180 -0
  142. package/server/src/Server.js +27 -0
  143. package/server/src/Service.js +248 -0
  144. package/server/src/Subdomain.js +64 -0
  145. package/server/src/Web/Firewall.js +170 -0
  146. package/server/src/Web/Proxy.js +134 -0
  147. package/server/src/Web.js +451 -0
  148. package/server/src/mail/imap.js +1091 -0
  149. package/server/src/mail/server.js +32 -0
  150. package/server/src/mail/smtp.js +786 -0
  151. package/test/cli/Cli.test.js +36 -0
  152. package/test/core/Candy.test.js +234 -0
  153. package/test/core/Commands.test.js +538 -0
  154. package/test/core/Config.test.js +1435 -0
  155. package/test/core/Lang.test.js +250 -0
  156. package/test/core/Process.test.js +156 -0
  157. package/test/framework/Route.test.js +239 -0
  158. package/test/framework/View/EarlyHints.test.js +282 -0
  159. package/test/scripts/check-coverage.js +132 -0
  160. package/test/server/Api.test.js +647 -0
  161. package/test/server/Client.test.js +338 -0
  162. package/test/server/DNS.test.js +2050 -0
  163. package/test/server/DNS.test.js.bak +2084 -0
  164. package/test/server/Log.test.js +73 -0
  165. package/test/server/Mail.account.test_.js +460 -0
  166. package/test/server/Mail.init.test_.js +411 -0
  167. package/test/server/Mail.test_.js +1340 -0
  168. package/test/server/SSL.test_.js +1491 -0
  169. package/test/server/Server.test.js +765 -0
  170. package/test/server/Service.test_.js +1127 -0
  171. package/test/server/Subdomain.test.js +440 -0
  172. package/test/server/Web/Firewall.test.js +175 -0
  173. package/test/server/Web.test_.js +1562 -0
  174. package/test/server/__mocks__/acme-client.js +17 -0
  175. package/test/server/__mocks__/bcrypt.js +50 -0
  176. package/test/server/__mocks__/child_process.js +389 -0
  177. package/test/server/__mocks__/crypto.js +432 -0
  178. package/test/server/__mocks__/fs.js +450 -0
  179. package/test/server/__mocks__/globalCandy.js +227 -0
  180. package/test/server/__mocks__/http-proxy.js +105 -0
  181. package/test/server/__mocks__/http.js +575 -0
  182. package/test/server/__mocks__/https.js +272 -0
  183. package/test/server/__mocks__/index.js +249 -0
  184. package/test/server/__mocks__/mail/server.js +100 -0
  185. package/test/server/__mocks__/mail/smtp.js +31 -0
  186. package/test/server/__mocks__/mailparser.js +81 -0
  187. package/test/server/__mocks__/net.js +369 -0
  188. package/test/server/__mocks__/node-forge.js +328 -0
  189. package/test/server/__mocks__/os.js +320 -0
  190. package/test/server/__mocks__/path.js +291 -0
  191. package/test/server/__mocks__/selfsigned.js +8 -0
  192. package/test/server/__mocks__/server/src/mail/server.js +100 -0
  193. package/test/server/__mocks__/server/src/mail/smtp.js +31 -0
  194. package/test/server/__mocks__/smtp-server.js +106 -0
  195. package/test/server/__mocks__/sqlite3.js +394 -0
  196. package/test/server/__mocks__/testFactories.js +299 -0
  197. package/test/server/__mocks__/testHelpers.js +363 -0
  198. package/test/server/__mocks__/tls.js +229 -0
  199. package/watchdog/index.js +3 -0
  200. package/watchdog/src/Watchdog.js +156 -0
  201. package/web/config.json +5 -0
  202. package/web/controller/page/about.js +27 -0
  203. package/web/controller/page/index.js +34 -0
  204. package/web/package.json +18 -0
  205. package/web/public/assets/css/style.css +1835 -0
  206. package/web/public/assets/js/app.js +96 -0
  207. package/web/route/www.js +19 -0
  208. package/web/skeleton/main.html +22 -0
  209. package/web/view/content/about.html +65 -0
  210. package/web/view/content/home.html +205 -0
  211. package/web/view/footer/main.html +11 -0
  212. package/web/view/head/main.html +5 -0
  213. package/web/view/header/main.html +14 -0
@@ -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.