mwalajs 1.0.6 → 1.0.8
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/.env.backup-2025-12-04T08-55-09-593Z +5 -0
- package/app.mjs +4 -0
- package/{ujasi/bin/mwala.mjs → bin/mwala copy.mjs } +45 -9
- package/bin/mwala.mjs +215 -100
- package/config/createdatabase copy.mjs +362 -0
- package/config/createdatabase.mjs +85 -38
- package/package.json +2 -1
- package/public/images/hekima-mwala.jpg +0 -0
- package/public/images/hekima-mwala2.jpg +0 -0
- package/public/images/mwala3.jpg +0 -0
- package/public/images/mwalajs.jpg +0 -0
- package/public/images/mwalajs1.jpg +0 -0
- package/utils/dbUtils.mjs +124 -0
- package/views/about.ejs +271 -136
- package/views/index.ejs +396 -494
- package/views/mwalajs-framework-documentation.ejs +778 -0
- package/views/partials/footer.ejs +102 -0
- package/views/partials/header.ejs +160 -0
- package/views/steps copy.ejs +243 -0
- package/views/steps.ejs +208 -482
- package/views/welcome.ejs +242 -184
- package/ujasi/README.md +0 -542
- package/ujasi/app.mjs +0 -33
- package/ujasi/bin/backupnewclean.js +0 -162
- package/ujasi/config/createTablesetdb.mjs +0 -38
- package/ujasi/config/createdatabase.mjs +0 -156
- package/ujasi/config/serverConfig.mjs +0 -1
- package/ujasi/controllers/fileController.mjs +0 -15
- package/ujasi/controllers/homeController.mjs +0 -28
- package/ujasi/models/exampleModel.mjs +0 -5
- package/ujasi/mwalajs/index.js +0 -109
- package/ujasi/mwalajs/index.mjs +0 -121
- package/ujasi/mwalajs/package.json +0 -16
- package/ujasi/package.json +0 -58
- package/ujasi/public/styles.css +0 -115
- package/ujasi/routes/homeRoutes.mjs +0 -12
- package/ujasi/runMigrations.mjs +0 -137
- package/ujasi/setupMwalajs.mjs +0 -58
- package/ujasi/views/about.ejs +0 -159
- package/ujasi/views/index.ejs +0 -227
- package/ujasi/views/sitemap.xml +0 -1
- package/ujasi/views/steps.ejs +0 -514
- package/ujasi/views/welcome.ejs +0 -257
package/views/index.ejs
CHANGED
|
@@ -1,494 +1,396 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<meta
|
|
20
|
-
<meta
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<meta
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
color: #
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
font-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
<
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
<
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
</
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
</
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
<
|
|
289
|
-
<
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
</
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
<
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
<
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
<
|
|
386
|
-
<
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
</tr>
|
|
398
|
-
</tbody>
|
|
399
|
-
</table>
|
|
400
|
-
|
|
401
|
-
<h3>LINUX INSTALLATION (Ubuntu / Debian / Fedora / Others)</h3>
|
|
402
|
-
|
|
403
|
-
<div class="note">Make sure Node.js is already installed on your system before you begin.</div>
|
|
404
|
-
|
|
405
|
-
<ol>
|
|
406
|
-
<li><strong>Download MwalaJS:</strong>
|
|
407
|
-
<ul>
|
|
408
|
-
<li>Visit: <a href="https://mwalajs.biasharabora.com" target="_blank">https://mwalajs.biasharabora.com</a></li>
|
|
409
|
-
<li>Select and download either:
|
|
410
|
-
<ul>
|
|
411
|
-
<li><code>MwalaJS.zip</code></li>
|
|
412
|
-
<li><code>MwalaJS.tar.gz</code></li>
|
|
413
|
-
</ul>
|
|
414
|
-
</li>
|
|
415
|
-
</ul>
|
|
416
|
-
</li>
|
|
417
|
-
|
|
418
|
-
<li><strong>Open Terminal and go to the Downloads folder:</strong>
|
|
419
|
-
<pre>cd ~/Downloads</pre>
|
|
420
|
-
</li>
|
|
421
|
-
|
|
422
|
-
<li><strong>Extract the downloaded file:</strong>
|
|
423
|
-
<ul>
|
|
424
|
-
<li>If ZIP:
|
|
425
|
-
<pre>unzip MwalaJS.zip</pre>
|
|
426
|
-
</li>
|
|
427
|
-
<li>If TAR.GZ:
|
|
428
|
-
<pre>tar -xvzf MwalaJS.tar.gz</pre>
|
|
429
|
-
</li>
|
|
430
|
-
</ul>
|
|
431
|
-
</li>
|
|
432
|
-
|
|
433
|
-
<li><strong>Move the extracted folder to a system directory:</strong>
|
|
434
|
-
<pre>sudo mv mwalajs /opt/</pre>
|
|
435
|
-
</li>
|
|
436
|
-
|
|
437
|
-
<li><strong>Make the main file executable (if it's a script):</strong>
|
|
438
|
-
<pre>sudo chmod +x /opt/mwalajs/mwala.mjs</pre>
|
|
439
|
-
</li>
|
|
440
|
-
|
|
441
|
-
<li><strong>Create a system-wide shortcut (symlink):</strong>
|
|
442
|
-
<pre>sudo ln -s /opt/mwalajs/mwala.mjs /usr/local/bin/mwala</pre>
|
|
443
|
-
</li>
|
|
444
|
-
|
|
445
|
-
<li><strong>Test the installation:</strong>
|
|
446
|
-
<pre>mwala</pre>
|
|
447
|
-
<p>If everything is set up correctly, you’ll see a welcome message or command list.</p>
|
|
448
|
-
</li>
|
|
449
|
-
</ol>
|
|
450
|
-
|
|
451
|
-
<h4>Troubleshooting</h4>
|
|
452
|
-
<table>
|
|
453
|
-
<thead>
|
|
454
|
-
<tr><th>Issue</th><th>Solution</th></tr>
|
|
455
|
-
</thead>
|
|
456
|
-
<tbody>
|
|
457
|
-
<tr>
|
|
458
|
-
<td><code>mwala: command not found</code></td>
|
|
459
|
-
<td>Check if the symlink is correct: <code>ls -l /usr/local/bin/mwala</code></td>
|
|
460
|
-
</tr>
|
|
461
|
-
<tr>
|
|
462
|
-
<td>Node.js not installed</td>
|
|
463
|
-
<td>Install Node.js using:
|
|
464
|
-
<pre>sudo apt install nodejs npm</pre>
|
|
465
|
-
</td>
|
|
466
|
-
</tr>
|
|
467
|
-
<tr>
|
|
468
|
-
<td>Permission denied</td>
|
|
469
|
-
<td>Try using <code>sudo</code> or ensure the file has executable permission</td>
|
|
470
|
-
</tr>
|
|
471
|
-
</tbody>
|
|
472
|
-
</table>
|
|
473
|
-
|
|
474
|
-
<footer>
|
|
475
|
-
<h3>Need Help?</h3>
|
|
476
|
-
<p>Feel free to contact the developer or support:</p>
|
|
477
|
-
<ul>
|
|
478
|
-
<li>Email: <a href="mailto:biasharaboraofficials@biasharabora.com">biasharaboraofficials@biasharabora.com</a></li>
|
|
479
|
-
<li>Website: <a href="https://mwalajs.biasharabora.com" target="_blank">https://mwalajs.biasharabora.com</a></li>
|
|
480
|
-
</ul>
|
|
481
|
-
</footer>
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
<!-- Footer -->
|
|
485
|
-
<footer class="text-center">
|
|
486
|
-
<div class="container">
|
|
487
|
-
© 2025 MwalaJS Framework. Built by MwalaJS Development Team.
|
|
488
|
-
</div>
|
|
489
|
-
</footer>
|
|
490
|
-
|
|
491
|
-
<!-- Bootstrap JS -->
|
|
492
|
-
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
493
|
-
</body>
|
|
494
|
-
</html>
|
|
1
|
+
|
|
2
|
+
<!-- Include header.ejs -->
|
|
3
|
+
<%- include('partials/header') %>
|
|
4
|
+
|
|
5
|
+
<!DOCTYPE html>
|
|
6
|
+
<html lang="en">
|
|
7
|
+
<head>
|
|
8
|
+
<meta charset="UTF-8" />
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no" />
|
|
10
|
+
<title>MwalaJS Framework - High-Performance Node.js MVC Framework</title>
|
|
11
|
+
|
|
12
|
+
<!-- Bootstrap 5.3.3 -->
|
|
13
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
14
|
+
|
|
15
|
+
<!-- Font Awesome 6 -->
|
|
16
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
17
|
+
|
|
18
|
+
<!-- SEO & Social Meta -->
|
|
19
|
+
<meta name="description" content="MwalaJS - Ultra high-performance Node.js MVC framework powered by Google V8 engine. Full documentation, CLI tools, code generation, migrations, EJS views, and modern ES modules.">
|
|
20
|
+
<meta name="keywords" content="MwalaJS, Node.js, Express, MVC framework, high performance, V8 engine, CLI, migrations, EJS, ES modules, JavaScript framework">
|
|
21
|
+
<meta name="author" content="Hekima Ambalile Mwala">
|
|
22
|
+
|
|
23
|
+
<meta property="og:title" content="MwalaJS - High-Performance Node.js MVC Framework" />
|
|
24
|
+
<meta property="og:description" content="The future of Node.js development: blazing fast, scalable, and developer-friendly with built-in MVC, migrations, and CLI scaffolding." />
|
|
25
|
+
<meta property="og:image" content="https://mwalajs.biasharabora.com/images/mwala-logo-large.png" />
|
|
26
|
+
<meta property="og:url" content="https://mwalajs.biasharabora.com" />
|
|
27
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
28
|
+
|
|
29
|
+
<!-- Favicon -->
|
|
30
|
+
<link rel="icon" href="https://mwalajs.biasharabora.com/favicon.ico" type="image/x-icon" />
|
|
31
|
+
|
|
32
|
+
<style>
|
|
33
|
+
:root {
|
|
34
|
+
--primary-gradient: linear-gradient(135deg, #0d6efd, #6610f2, #d63384);
|
|
35
|
+
--primary-color: #0d6efd;
|
|
36
|
+
--secondary-color: #6c757d;
|
|
37
|
+
--success-color: #198754;
|
|
38
|
+
--warning-color: #ffc107;
|
|
39
|
+
--dark-color: #212529;
|
|
40
|
+
--light-color: #f8f9fa;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
body {
|
|
44
|
+
background: var(--light-color);
|
|
45
|
+
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
46
|
+
line-height: 1.7;
|
|
47
|
+
color: #333;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Hero Header - Large Brand Section */
|
|
51
|
+
.hero {
|
|
52
|
+
background: var(--primary-gradient);
|
|
53
|
+
color: white;
|
|
54
|
+
padding: 120px 0 80px;
|
|
55
|
+
text-align: center;
|
|
56
|
+
position: relative;
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.hero::before {
|
|
61
|
+
content: '';
|
|
62
|
+
position: absolute;
|
|
63
|
+
top: 0; left: 0; right: 0; bottom: 0;
|
|
64
|
+
background: rgba(0,0,0,0.3);
|
|
65
|
+
z-index: 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.hero-content {
|
|
69
|
+
position: relative;
|
|
70
|
+
z-index: 2;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.hero h1 {
|
|
74
|
+
font-size: 4.5rem;
|
|
75
|
+
font-weight: 900;
|
|
76
|
+
text-shadow: 0 4px 10px rgba(0,0,0,0.4);
|
|
77
|
+
margin-bottom: 1.5rem;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.hero .lead {
|
|
81
|
+
font-size: 1.5rem;
|
|
82
|
+
max-width: 900px;
|
|
83
|
+
margin: 0 auto 2rem;
|
|
84
|
+
opacity: 0.95;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.hero .btn-hero {
|
|
88
|
+
font-size: 1.3rem;
|
|
89
|
+
padding: 1rem 2.5rem;
|
|
90
|
+
border-radius: 50px;
|
|
91
|
+
margin: 0.5rem;
|
|
92
|
+
box-shadow: 0 8px 20px rgba(0,0,0,0.3);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.hero .v8-badge {
|
|
96
|
+
background: rgba(255,255,255,0.2);
|
|
97
|
+
backdrop-filter: blur(10px);
|
|
98
|
+
padding: 1rem 2rem;
|
|
99
|
+
border-radius: 50px;
|
|
100
|
+
display: inline-block;
|
|
101
|
+
margin-top: 2rem;
|
|
102
|
+
font-size: 1.2rem;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Navbar */
|
|
106
|
+
.navbar {
|
|
107
|
+
background: rgba(33, 37, 41, 0.95) !important;
|
|
108
|
+
backdrop-filter: blur(10px);
|
|
109
|
+
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.nav-link {
|
|
113
|
+
color: white !important;
|
|
114
|
+
font-weight: 500;
|
|
115
|
+
transition: all 0.3s;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.nav-link:hover {
|
|
119
|
+
color: var(--warning-color) !important;
|
|
120
|
+
transform: translateY(-2px);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Sections */
|
|
124
|
+
.section-card {
|
|
125
|
+
background: white;
|
|
126
|
+
border-radius: 16px;
|
|
127
|
+
padding: 3rem;
|
|
128
|
+
margin-bottom: 3rem;
|
|
129
|
+
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
|
|
130
|
+
transition: transform 0.4s ease;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.section-card:hover {
|
|
134
|
+
transform: translateY(-10px);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
pre {
|
|
138
|
+
background: #1e1e1e;
|
|
139
|
+
color: #f8f8f8;
|
|
140
|
+
padding: 2rem;
|
|
141
|
+
border-radius: 12px;
|
|
142
|
+
font-size: 1rem;
|
|
143
|
+
border-left: 6px solid var(--primary-color);
|
|
144
|
+
overflow-x: auto;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.feature-grid {
|
|
148
|
+
display: grid;
|
|
149
|
+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
150
|
+
gap: 2rem;
|
|
151
|
+
margin: 3rem 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.feature-item {
|
|
155
|
+
text-align: center;
|
|
156
|
+
padding: 2rem;
|
|
157
|
+
background: rgba(13,110,253,0.05);
|
|
158
|
+
border-radius: 12px;
|
|
159
|
+
transition: all 0.3s;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.feature-item:hover {
|
|
163
|
+
background: rgba(13,110,253,0.1);
|
|
164
|
+
transform: scale(1.05);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.feature-icon {
|
|
168
|
+
font-size: 3.5rem;
|
|
169
|
+
color: var(--primary-color);
|
|
170
|
+
margin-bottom: 1.5rem;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
footer {
|
|
174
|
+
background: var(--primary-gradient);
|
|
175
|
+
color: white;
|
|
176
|
+
padding: 4rem 0 2rem;
|
|
177
|
+
margin-top: 5rem;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.whatsapp-box {
|
|
181
|
+
background: #d1e7dd;
|
|
182
|
+
border-left: 8px solid var(--success-color);
|
|
183
|
+
padding: 2rem;
|
|
184
|
+
border-radius: 12px;
|
|
185
|
+
text-align: center;
|
|
186
|
+
margin: 3rem 0;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@media (max-width: 992px) {
|
|
190
|
+
.hero h1 { font-size: 3.5rem; }
|
|
191
|
+
.hero .lead { font-size: 1.3rem; }
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@media (max-width: 768px) {
|
|
195
|
+
.hero { padding: 80px 0 60px; }
|
|
196
|
+
.hero h1 { font-size: 2.8rem; }
|
|
197
|
+
.hero .lead { font-size: 1.1rem; }
|
|
198
|
+
pre { font-size: 0.9rem; padding: 1.5rem; }
|
|
199
|
+
}
|
|
200
|
+
</style>
|
|
201
|
+
</head>
|
|
202
|
+
<body>
|
|
203
|
+
|
|
204
|
+
<!-- Navbar
|
|
205
|
+
<nav class="navbar navbar-expand-lg navbar-dark fixed-top">
|
|
206
|
+
<div class="container">
|
|
207
|
+
<a class="navbar-brand fw-bold fs-3" href="#"><i class="fas fa-rocket me-2"></i>MwalaJS</a>
|
|
208
|
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
|
209
|
+
<span class="navbar-toggler-icon"></span>
|
|
210
|
+
</button>
|
|
211
|
+
<div class="collapse navbar-collapse" id="navbarNav">
|
|
212
|
+
<ul class="navbar-nav ms-auto">
|
|
213
|
+
<li class="nav-item"><a class="nav-link" href="#overview">Overview</a></li>
|
|
214
|
+
<li class="nav-item"><a class="nav-link" href="#features">Features</a></li>
|
|
215
|
+
<li class="nav-item"><a class="nav-link" href="#installation">Installation</a></li>
|
|
216
|
+
<li class="nav-item"><a class="nav-link" href="#commands">Commands</a></li>
|
|
217
|
+
<li class="nav-item"><a class="nav-link" href="#structure">Structure</a></li>
|
|
218
|
+
<li class="nav-item"><a class="nav-link" href="#examples">Examples</a></li>
|
|
219
|
+
<li class="nav-item"><a class="nav-link" href="#downloads">Downloads</a></li>
|
|
220
|
+
</ul>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
</nav> -->
|
|
224
|
+
|
|
225
|
+
<!-- Large Brand Hero Section -->
|
|
226
|
+
<section class="hero">
|
|
227
|
+
<div class="container hero-content">
|
|
228
|
+
<h1>MWALAJS</h1>
|
|
229
|
+
<p class="lead">Ultra High-Performance Node.js MVC Framework<br>Powered by Google V8 Engine</p>
|
|
230
|
+
<div>
|
|
231
|
+
<a href="#installation" class="btn btn-light btn-hero btn-lg"><i class="fas fa-download me-2"></i>Get Started</a>
|
|
232
|
+
<a href="https://github.com/mwala400/mwalajs" target="_blank" class="btn btn-outline-light btn-hero btn-lg"><i class="fab fa-github me-2"></i>View on GitHub</a>
|
|
233
|
+
</div>
|
|
234
|
+
<div class="v8-badge">
|
|
235
|
+
<i class="fab fa-node-js me-2"></i> Built on JS + V8 Engine Optimization
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
</section>
|
|
239
|
+
|
|
240
|
+
<div class="container my-5">
|
|
241
|
+
|
|
242
|
+
<!-- Overview -->
|
|
243
|
+
<section id="overview" class="section-card">
|
|
244
|
+
<h2 class="text-center mb-5"><i class="fas fa-eye me-3"></i>Framework Overview</h2>
|
|
245
|
+
<p class="lead text-center">MwalaJS is a next-generation, high-performance Node.js framework designed for building scalable, modern web applications with blazing speed and developer productivity.</p>
|
|
246
|
+
<p>Leveraging the full power of the <strong>Google V8 JavaScript engine</strong>, MwalaJS delivers exceptional performance while maintaining clean MVC architecture, powerful CLI tools, automatic code generation, and seamless database migrations.</p>
|
|
247
|
+
</section>
|
|
248
|
+
|
|
249
|
+
<!-- Features Grid -->
|
|
250
|
+
<section id="features" class="section-card">
|
|
251
|
+
<h2 class="text-center mb-5"><i class="fas fa-star me-3"></i>Core Features</h2>
|
|
252
|
+
<div class="feature-grid">
|
|
253
|
+
<div class="feature-item">
|
|
254
|
+
<div class="feature-icon"><i class="fas fa-bolt"></i></div>
|
|
255
|
+
<h4>Lightning Fast</h4>
|
|
256
|
+
<p>Optimized execution powered by Google V8 engine</p>
|
|
257
|
+
</div>
|
|
258
|
+
<div class="feature-item">
|
|
259
|
+
<div class="feature-icon"><i class="fas fa-layer-group"></i></div>
|
|
260
|
+
<h4>Modern MVC</h4>
|
|
261
|
+
<p>Clean separation of concerns with automatic scaffolding</p>
|
|
262
|
+
</div>
|
|
263
|
+
<div class="feature-item">
|
|
264
|
+
<div class="feature-icon"><i class="fas fa-terminal"></i></div>
|
|
265
|
+
<h4>Powerful CLI</h4>
|
|
266
|
+
<p>Project creation, code generation, and database management</p>
|
|
267
|
+
</div>
|
|
268
|
+
<div class="feature-item">
|
|
269
|
+
<div class="feature-icon"><i class="fas fa-database"></i></div>
|
|
270
|
+
<h4>Advanced Migrations</h4>
|
|
271
|
+
<p>Laravel-style database schema management</p>
|
|
272
|
+
</div>
|
|
273
|
+
<div class="feature-item">
|
|
274
|
+
<div class="feature-icon"><i class="fas fa-code"></i></div>
|
|
275
|
+
<h4>ES Modules Ready</h4>
|
|
276
|
+
<p>Full .mjs support with .js fallback compatibility</p>
|
|
277
|
+
</div>
|
|
278
|
+
<div class="feature-item">
|
|
279
|
+
<div class="feature-icon"><i class="fas fa-shield-alt"></i></div>
|
|
280
|
+
<h4>Security First</h4>
|
|
281
|
+
<p>Built-in protection and best practices</p>
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
</section>
|
|
285
|
+
|
|
286
|
+
<!-- Installation -->
|
|
287
|
+
<section id="installation" class="section-card">
|
|
288
|
+
<h2 class="text-center mb-5"><i class="fas fa-download me-3"></i>Installation</h2>
|
|
289
|
+
<div class="row">
|
|
290
|
+
<div class="col-lg-8 mx-auto">
|
|
291
|
+
<p class="text-center fs-5">Latest versions (≥1.0.5) - Recommended</p>
|
|
292
|
+
<pre><code>npm install -g mwalajs</code></pre>
|
|
293
|
+
<p class="text-center">Then create your project:</p>
|
|
294
|
+
<pre><code>mwala create-project my-app
|
|
295
|
+
cd my-app
|
|
296
|
+
mwala serve</code></pre>
|
|
297
|
+
</div>
|
|
298
|
+
</div>
|
|
299
|
+
</section>
|
|
300
|
+
|
|
301
|
+
<!-- Commands -->
|
|
302
|
+
<section id="commands" class="section-card">
|
|
303
|
+
<h2 class="text-center mb-5"><i class="fas fa-terminal me-3"></i>CLI Commands</h2>
|
|
304
|
+
<pre>
|
|
305
|
+
mwala create-project <name> → Scaffold new MVC project
|
|
306
|
+
mwala serve → Start development server
|
|
307
|
+
mwala generate model <name> → Create model
|
|
308
|
+
mwala generate controller <name> → Create controller
|
|
309
|
+
mwala generate route <name> → Create route
|
|
310
|
+
mwala generate view <name> → Create EJS view
|
|
311
|
+
mwala generate midware <name> → Create middleware
|
|
312
|
+
mwala create-db → Create database
|
|
313
|
+
mwala migrate all → Run all migrations
|
|
314
|
+
mwala help → Show all commands
|
|
315
|
+
</pre>
|
|
316
|
+
</section>
|
|
317
|
+
|
|
318
|
+
<!-- Structure -->
|
|
319
|
+
<section id="structure" class="section-card">
|
|
320
|
+
<h2 class="text-center mb-5"><i class="fas fa-folder-tree me-3"></i>Project Structure</h2>
|
|
321
|
+
<pre>
|
|
322
|
+
my-project/
|
|
323
|
+
├── app.mjs # Main entry point (.mjs required)
|
|
324
|
+
├── config/
|
|
325
|
+
├── controllers/
|
|
326
|
+
├── middlewares/
|
|
327
|
+
├── models/
|
|
328
|
+
├── migrations/
|
|
329
|
+
├── routes/
|
|
330
|
+
├── views/ # EJS templates
|
|
331
|
+
├── public/
|
|
332
|
+
│ ├── css/
|
|
333
|
+
│ ├── js/
|
|
334
|
+
│ └── images/
|
|
335
|
+
├── package.json
|
|
336
|
+
└── README.md
|
|
337
|
+
</pre>
|
|
338
|
+
</section>
|
|
339
|
+
|
|
340
|
+
<!-- Examples -->
|
|
341
|
+
<section id="examples" class="section-card">
|
|
342
|
+
<h2 class="text-center mb-5"><i class="fas fa-code me-3"></i>Code Examples</h2>
|
|
343
|
+
<h4>app.mjs</h4>
|
|
344
|
+
<pre><code>import mwalajs from 'mwalajs';
|
|
345
|
+
import homeRoutes from './routes/homeRoutes.mjs';
|
|
346
|
+
import path from 'path';
|
|
347
|
+
import { fileURLToPath } from 'url';
|
|
348
|
+
|
|
349
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
350
|
+
|
|
351
|
+
mwalajs.set('views', path.join(__dirname, 'views'));
|
|
352
|
+
mwalajs.set('view engine', 'ejs');
|
|
353
|
+
mwalajs.useStatic(path.join(__dirname, 'public'));
|
|
354
|
+
|
|
355
|
+
mwalajs.use('/', homeRoutes);
|
|
356
|
+
|
|
357
|
+
mwalajs.listen(3000, () => {
|
|
358
|
+
console.log('MwalaJS running on http://localhost:3000');
|
|
359
|
+
});</code></pre>
|
|
360
|
+
</section>
|
|
361
|
+
|
|
362
|
+
<!-- Downloads -->
|
|
363
|
+
<section id="downloads" class="section-card">
|
|
364
|
+
<h2 class="text-center mb-5"><i class="fas fa-cloud-download-alt me-3"></i>Legacy Downloads</h2>
|
|
365
|
+
<div class="text-center">
|
|
366
|
+
<a href="https://mwalajs.biasharabora.com/files/mwalaJS_installer.exe" class="btn btn-success btn-lg m-3"><i class="fas fa-file-archive"></i> .exe Installer</a>
|
|
367
|
+
<a href="https://mwalajs.biasharabora.com/files/mwalajsm.zip" class="btn btn-primary btn-lg m-3"><i class="fas fa-file-zipper"></i> .zip v1.0.0</a>
|
|
368
|
+
<a href="https://mwalajs.biasharabora.com/files/mwalajsm.rar" class="btn btn-info btn-lg m-3"><i class="fas fa-file-archive"></i> .rar v1.0.0</a>
|
|
369
|
+
</div>
|
|
370
|
+
</section>
|
|
371
|
+
|
|
372
|
+
<!-- WhatsApp Support -->
|
|
373
|
+
<div class="whatsapp-box">
|
|
374
|
+
<h3><i class="fab fa-whatsapp me-3"></i>Join Our Community</h3>
|
|
375
|
+
<p>Get instant support from developers and the core team</p>
|
|
376
|
+
<a href="https://chat.whatsapp.com/F8x1p8R1EhZ5b7RX7PO6dR?mode=r_t" target="_blank" class="btn btn-success btn-lg">
|
|
377
|
+
<i class="fas fa-users"></i> Join WhatsApp Group
|
|
378
|
+
</a>
|
|
379
|
+
</div>
|
|
380
|
+
|
|
381
|
+
</div>
|
|
382
|
+
|
|
383
|
+
<!-- Footer -->
|
|
384
|
+
<footer>
|
|
385
|
+
<div class="container text-center">
|
|
386
|
+
<h3>MwalaJS Framework</h3>
|
|
387
|
+
<p>Built with performance, scalability, and developer happiness in mind.</p>
|
|
388
|
+
</div>
|
|
389
|
+
</footer>
|
|
390
|
+
|
|
391
|
+
<!-- Bootstrap JS -->
|
|
392
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
|
393
|
+
</body>
|
|
394
|
+
</html>
|
|
395
|
+
|
|
396
|
+
<%- include('partials/footer') %>
|