@arikajs/cli 0.0.1

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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +366 -0
  3. package/dist/bin/arika.d.ts +3 -0
  4. package/dist/bin/arika.d.ts.map +1 -0
  5. package/dist/bin/arika.js +21 -0
  6. package/dist/bin/arika.js.map +1 -0
  7. package/dist/src/ApplicationLoader.d.ts +8 -0
  8. package/dist/src/ApplicationLoader.d.ts.map +1 -0
  9. package/dist/src/ApplicationLoader.js +31 -0
  10. package/dist/src/ApplicationLoader.js.map +1 -0
  11. package/dist/src/Bootstrap.d.ts +5 -0
  12. package/dist/src/Bootstrap.d.ts.map +1 -0
  13. package/dist/src/Bootstrap.js +66 -0
  14. package/dist/src/Bootstrap.js.map +1 -0
  15. package/dist/src/Commands/CacheTableCommand.d.ts +7 -0
  16. package/dist/src/Commands/CacheTableCommand.d.ts.map +1 -0
  17. package/dist/src/Commands/CacheTableCommand.js +45 -0
  18. package/dist/src/Commands/CacheTableCommand.js.map +1 -0
  19. package/dist/src/Commands/DatabaseCommand.d.ts +11 -0
  20. package/dist/src/Commands/DatabaseCommand.d.ts.map +1 -0
  21. package/dist/src/Commands/DatabaseCommand.js +94 -0
  22. package/dist/src/Commands/DatabaseCommand.js.map +1 -0
  23. package/dist/src/Commands/DbSeedCommand.d.ts +10 -0
  24. package/dist/src/Commands/DbSeedCommand.d.ts.map +1 -0
  25. package/dist/src/Commands/DbSeedCommand.js +70 -0
  26. package/dist/src/Commands/DbSeedCommand.js.map +1 -0
  27. package/dist/src/Commands/DocsGenerateCommand.d.ts +8 -0
  28. package/dist/src/Commands/DocsGenerateCommand.d.ts.map +1 -0
  29. package/dist/src/Commands/DocsGenerateCommand.js +102 -0
  30. package/dist/src/Commands/DocsGenerateCommand.js.map +1 -0
  31. package/dist/src/Commands/KeyGenerateCommand.d.ts +9 -0
  32. package/dist/src/Commands/KeyGenerateCommand.d.ts.map +1 -0
  33. package/dist/src/Commands/KeyGenerateCommand.js +44 -0
  34. package/dist/src/Commands/KeyGenerateCommand.js.map +1 -0
  35. package/dist/src/Commands/ListCommand.d.ts +7 -0
  36. package/dist/src/Commands/ListCommand.d.ts.map +1 -0
  37. package/dist/src/Commands/ListCommand.js +26 -0
  38. package/dist/src/Commands/ListCommand.js.map +1 -0
  39. package/dist/src/Commands/MakeMigrationCommand.d.ts +14 -0
  40. package/dist/src/Commands/MakeMigrationCommand.d.ts.map +1 -0
  41. package/dist/src/Commands/MakeMigrationCommand.js +72 -0
  42. package/dist/src/Commands/MakeMigrationCommand.js.map +1 -0
  43. package/dist/src/Commands/MakeSeederCommand.d.ts +14 -0
  44. package/dist/src/Commands/MakeSeederCommand.d.ts.map +1 -0
  45. package/dist/src/Commands/MakeSeederCommand.js +56 -0
  46. package/dist/src/Commands/MakeSeederCommand.js.map +1 -0
  47. package/dist/src/Commands/MigrateCommand.d.ts +10 -0
  48. package/dist/src/Commands/MigrateCommand.d.ts.map +1 -0
  49. package/dist/src/Commands/MigrateCommand.js +69 -0
  50. package/dist/src/Commands/MigrateCommand.js.map +1 -0
  51. package/dist/src/Commands/MigrateRollbackCommand.d.ts +10 -0
  52. package/dist/src/Commands/MigrateRollbackCommand.d.ts.map +1 -0
  53. package/dist/src/Commands/MigrateRollbackCommand.js +69 -0
  54. package/dist/src/Commands/MigrateRollbackCommand.js.map +1 -0
  55. package/dist/src/Commands/NewCommand.d.ts +8 -0
  56. package/dist/src/Commands/NewCommand.d.ts.map +1 -0
  57. package/dist/src/Commands/NewCommand.js +112 -0
  58. package/dist/src/Commands/NewCommand.js.map +1 -0
  59. package/dist/src/Commands/QueueTableCommand.d.ts +7 -0
  60. package/dist/src/Commands/QueueTableCommand.d.ts.map +1 -0
  61. package/dist/src/Commands/QueueTableCommand.js +49 -0
  62. package/dist/src/Commands/QueueTableCommand.js.map +1 -0
  63. package/dist/src/Commands/ServeCommand.d.ts +7 -0
  64. package/dist/src/Commands/ServeCommand.d.ts.map +1 -0
  65. package/dist/src/Commands/ServeCommand.js +60 -0
  66. package/dist/src/Commands/ServeCommand.js.map +1 -0
  67. package/dist/src/TemplateManager.d.ts +19 -0
  68. package/dist/src/TemplateManager.d.ts.map +1 -0
  69. package/dist/src/TemplateManager.js +133 -0
  70. package/dist/src/TemplateManager.js.map +1 -0
  71. package/dist/src/index.d.ts +3 -0
  72. package/dist/src/index.d.ts.map +1 -0
  73. package/dist/src/index.js +8 -0
  74. package/dist/src/index.js.map +1 -0
  75. package/dist/tests/Cli.test.d.ts +2 -0
  76. package/dist/tests/Cli.test.d.ts.map +1 -0
  77. package/dist/tests/Cli.test.js +16 -0
  78. package/dist/tests/Cli.test.js.map +1 -0
  79. package/package.json +55 -0
  80. package/templates/app/.env.example +47 -0
  81. package/templates/app/app/Controllers/UserController.ts +88 -0
  82. package/templates/app/app/Http/Kernel.ts +18 -0
  83. package/templates/app/app/Models/User.ts +15 -0
  84. package/templates/app/bootstrap/app.ts +13 -0
  85. package/templates/app/config/app.ts +9 -0
  86. package/templates/app/config/cache.ts +37 -0
  87. package/templates/app/config/database.ts +36 -0
  88. package/templates/app/config/filesystems.ts +33 -0
  89. package/templates/app/config/http.ts +5 -0
  90. package/templates/app/config/logging.ts +35 -0
  91. package/templates/app/config/mail.ts +27 -0
  92. package/templates/app/config/queue.ts +40 -0
  93. package/templates/app/database/migrations/0001_create_users_table.ts +23 -0
  94. package/templates/app/package.json +21 -0
  95. package/templates/app/resources/views/welcome.html +470 -0
  96. package/templates/app/routes/api.ts +34 -0
  97. package/templates/app/routes/web.ts +6 -0
  98. package/templates/app/server.ts +16 -0
  99. package/templates/app/tsconfig.json +15 -0
@@ -0,0 +1,470 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-theme="light">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Welcome to ArikaJS</title>
8
+ <link
9
+ href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=Plus+Jakarta+Sans:wght@300;400;600;800&display=swap"
10
+ rel="stylesheet">
11
+ <style>
12
+ :root {
13
+ --primary: #8b5cf6;
14
+ --primary-glow: rgba(139, 92, 246, 0.4);
15
+ --secondary: #ec4899;
16
+ --bg: #030712;
17
+ --card-bg: rgba(17, 24, 39, 0.7);
18
+ --text-main: #f8fafc;
19
+ --text-muted: #94a3b8;
20
+ --border: rgba(255, 255, 255, 0.08);
21
+ --aurora-opacity: 0.5;
22
+ --btn-secondary-bg: rgba(255, 255, 255, 0.05);
23
+ --pill-bg: rgba(255, 255, 255, 0.03);
24
+ --h1-gradient: linear-gradient(135deg, #fff 30%, rgba(255, 255, 255, 0.5) 100%);
25
+ }
26
+
27
+ [data-theme="light"] {
28
+ --bg: #f8fafc;
29
+ --card-bg: rgba(255, 255, 255, 0.8);
30
+ --text-main: #0f172a;
31
+ --text-muted: #64748b;
32
+ --border: rgba(15, 23, 42, 0.08);
33
+ --aurora-opacity: 0.3;
34
+ --btn-secondary-bg: rgba(15, 23, 42, 0.05);
35
+ --pill-bg: rgba(15, 23, 42, 0.03);
36
+ --h1-gradient: linear-gradient(135deg, #0f172a 30%, #334155 100%);
37
+ }
38
+
39
+ * {
40
+ margin: 0;
41
+ padding: 0;
42
+ box-sizing: border-box;
43
+ transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
44
+ }
45
+
46
+ body {
47
+ font-family: 'Plus Jakarta Sans', sans-serif;
48
+ background-color: var(--bg);
49
+ color: var(--text-main);
50
+ min-height: 100vh;
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: center;
54
+ overflow-x: hidden;
55
+ position: relative;
56
+ }
57
+
58
+ /* Theme Switcher */
59
+ .theme-toggle {
60
+ position: fixed;
61
+ top: 2rem;
62
+ right: 2rem;
63
+ z-index: 100;
64
+ background: var(--card-bg);
65
+ border: 1px solid var(--border);
66
+ padding: 0.5rem;
67
+ border-radius: 99px;
68
+ cursor: pointer;
69
+ backdrop-filter: blur(10px);
70
+ display: flex;
71
+ align-items: center;
72
+ gap: 0.5rem;
73
+ }
74
+
75
+ .theme-toggle svg {
76
+ width: 20px;
77
+ height: 20px;
78
+ color: var(--text-main);
79
+ }
80
+
81
+ /* Animated Aurora Background */
82
+ .aurora {
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ z-index: -1;
89
+ filter: blur(100px);
90
+ opacity: var(--aurora-opacity);
91
+ pointer-events: none;
92
+ }
93
+
94
+ .aurora-blur {
95
+ position: absolute;
96
+ border-radius: 50%;
97
+ animation: move 20s infinite alternate;
98
+ }
99
+
100
+ .blur-1 {
101
+ width: 50vw;
102
+ height: 50vw;
103
+ background: radial-gradient(circle, var(--primary) 0%, transparent 70%);
104
+ top: -10%;
105
+ left: -10%;
106
+ }
107
+
108
+ .blur-2 {
109
+ width: 40vw;
110
+ height: 40vw;
111
+ background: radial-gradient(circle, var(--secondary) 0%, transparent 70%);
112
+ bottom: -10%;
113
+ right: -10%;
114
+ animation-duration: 25s;
115
+ }
116
+
117
+ @keyframes move {
118
+ from {
119
+ transform: translate(0, 0) scale(1);
120
+ }
121
+
122
+ to {
123
+ transform: translate(10%, 10%) scale(1.1);
124
+ }
125
+ }
126
+
127
+ .container {
128
+ position: relative;
129
+ z-index: 10;
130
+ max-width: 1000px;
131
+ width: 90%;
132
+ text-align: center;
133
+ padding: 4rem 2rem;
134
+ animation: fadeIn 1s ease-out;
135
+ }
136
+
137
+ @keyframes fadeIn {
138
+ from {
139
+ opacity: 0;
140
+ transform: translateY(20px);
141
+ }
142
+
143
+ to {
144
+ opacity: 1;
145
+ transform: translateY(0);
146
+ }
147
+ }
148
+
149
+ .badge {
150
+ display: inline-block;
151
+ padding: 0.5rem 1.25rem;
152
+ background: rgba(139, 92, 246, 0.1);
153
+ border: 1px solid var(--primary);
154
+ color: var(--primary);
155
+ border-radius: 999px;
156
+ font-size: 0.85rem;
157
+ font-weight: 600;
158
+ margin-bottom: 2rem;
159
+ text-transform: uppercase;
160
+ letter-spacing: 0.1em;
161
+ }
162
+
163
+ h1 {
164
+ font-family: 'Outfit', sans-serif;
165
+ font-size: clamp(4rem, 12vw, 8rem);
166
+ font-weight: 800;
167
+ line-height: 0.9;
168
+ margin-bottom: 1.5rem;
169
+ letter-spacing: -0.04em;
170
+ background: var(--h1-gradient);
171
+ background-clip: text;
172
+ -webkit-background-clip: text;
173
+ -webkit-text-fill-color: transparent;
174
+ position: relative;
175
+ }
176
+
177
+ h1::after {
178
+ content: 'ArikaJS';
179
+ position: absolute;
180
+ left: 0;
181
+ top: 0;
182
+ z-index: -1;
183
+ filter: blur(40px);
184
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
185
+ background-clip: text;
186
+ -webkit-background-clip: text;
187
+ -webkit-text-fill-color: transparent;
188
+ opacity: 0.5;
189
+ }
190
+
191
+ .description {
192
+ font-size: 1.25rem;
193
+ color: var(--text-muted);
194
+ max-width: 600px;
195
+ margin: 0 auto 3rem;
196
+ line-height: 1.6;
197
+ font-weight: 300;
198
+ }
199
+
200
+ .actions {
201
+ display: flex;
202
+ gap: 1rem;
203
+ justify-content: center;
204
+ margin-bottom: 4rem;
205
+ }
206
+
207
+ .btn {
208
+ padding: 1rem 2.5rem;
209
+ border-radius: 12px;
210
+ font-weight: 600;
211
+ text-decoration: none;
212
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
213
+ font-size: 1rem;
214
+ }
215
+
216
+ .btn-primary {
217
+ background: var(--primary);
218
+ color: white;
219
+ box-shadow: 0 4px 20px var(--primary-glow);
220
+ }
221
+
222
+ .btn-primary:hover {
223
+ transform: translateY(-2px);
224
+ box-shadow: 0 8px 30px var(--primary-glow);
225
+ background: #9d71fd;
226
+ }
227
+
228
+ .btn-secondary {
229
+ background: var(--btn-secondary-bg);
230
+ color: var(--text-main);
231
+ border: 1px solid var(--border);
232
+ backdrop-filter: blur(10px);
233
+ }
234
+
235
+ .btn-secondary:hover {
236
+ background: rgba(255, 255, 255, 0.1);
237
+ border-color: rgba(255, 255, 255, 0.2);
238
+ }
239
+
240
+ .features-grid {
241
+ display: grid;
242
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
243
+ gap: 1.5rem;
244
+ margin-top: 2rem;
245
+ }
246
+
247
+ .feature-card {
248
+ background: var(--card-bg);
249
+ border: 1px solid var(--border);
250
+ padding: 2rem;
251
+ border-radius: 24px;
252
+ text-align: left;
253
+ transition: all 0.4s ease;
254
+ backdrop-filter: blur(10px);
255
+ }
256
+
257
+ .feature-card:hover {
258
+ border-color: var(--primary);
259
+ background: var(--card-bg);
260
+ transform: translateY(-8px);
261
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
262
+ }
263
+
264
+ .icon {
265
+ width: 48px;
266
+ height: 48px;
267
+ background: rgba(139, 92, 246, 0.1);
268
+ border-radius: 12px;
269
+ display: flex;
270
+ align-items: center;
271
+ justify-content: center;
272
+ margin-bottom: 1.5rem;
273
+ color: var(--primary);
274
+ }
275
+
276
+ .feature-card h3 {
277
+ font-size: 1.25rem;
278
+ margin-bottom: 0.75rem;
279
+ color: var(--text-main);
280
+ }
281
+
282
+ .feature-card p {
283
+ color: var(--text-muted);
284
+ font-size: 0.95rem;
285
+ line-height: 1.6;
286
+ }
287
+
288
+ .stack-section {
289
+ margin-top: 4rem;
290
+ border-top: 1px solid var(--border);
291
+ padding-top: 2rem;
292
+ }
293
+
294
+ .stack-section p {
295
+ font-size: 0.8rem;
296
+ color: var(--text-muted);
297
+ text-transform: uppercase;
298
+ letter-spacing: 0.2em;
299
+ margin-bottom: 1.5rem;
300
+ }
301
+
302
+ .stack-pills {
303
+ display: flex;
304
+ flex-wrap: wrap;
305
+ gap: 0.75rem;
306
+ justify-content: center;
307
+ }
308
+
309
+ .pill {
310
+ padding: 0.4rem 1rem;
311
+ background: var(--pill-bg);
312
+ border: 1px solid var(--border);
313
+ border-radius: 99px;
314
+ font-size: 0.75rem;
315
+ color: var(--text-muted);
316
+ transition: all 0.3s ease;
317
+ }
318
+
319
+ .pill:hover {
320
+ border-color: var(--primary);
321
+ color: var(--primary);
322
+ background: rgba(139, 92, 246, 0.05);
323
+ }
324
+
325
+ .footer {
326
+ margin-top: 3rem;
327
+ color: var(--text-muted);
328
+ font-size: 0.875rem;
329
+ line-height: 1.7;
330
+ }
331
+
332
+ .footer span {
333
+ color: var(--primary);
334
+ font-weight: 600;
335
+ }
336
+
337
+ @media (max-width: 768px) {
338
+ h1 {
339
+ font-size: 4rem;
340
+ }
341
+
342
+ .features-grid {
343
+ grid-template-columns: 1fr;
344
+ }
345
+
346
+ .actions {
347
+ flex-direction: column;
348
+ }
349
+ }
350
+ </style>
351
+ </head>
352
+
353
+ <body>
354
+ <button class="theme-toggle" id="theme-toggle" title="Toggle Theme">
355
+ <svg id="moon-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
356
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
357
+ d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
358
+ </svg>
359
+ <svg id="sun-icon" style="display: none;" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
360
+ stroke="currentColor">
361
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
362
+ d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
363
+ </svg>
364
+ </button>
365
+
366
+ <div class="aurora">
367
+ <div class="aurora-blur blur-1"></div>
368
+ <div class="aurora-blur blur-2"></div>
369
+ </div>
370
+
371
+ <div class="container">
372
+ <div class="badge">Version 0.1.3 Now Live</div>
373
+ <h1>ArikaJS</h1>
374
+ <p class="description">
375
+ A modern, elegant Node.js framework crafted for high-performance applications and exceptional developer
376
+ experience.
377
+ </p>
378
+
379
+ <div class="actions">
380
+ <a href="https://github.com/arikajs/arikajs#readme" class="btn btn-primary">Build your first App</a>
381
+ <a href="https://github.com/arikajs/arikajs" class="btn btn-secondary">Star on GitHub</a>
382
+ </div>
383
+
384
+ <div class="features-grid">
385
+ <div class="feature-card">
386
+ <div class="icon">
387
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
388
+ stroke-linecap="round" stroke-linejoin="round">
389
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
390
+ </svg>
391
+ </div>
392
+ <h3>Type-Safe from Core</h3>
393
+ <p>Leverage the full power of TypeScript with deep type safety throughout the entire framework pipeline.
394
+ </p>
395
+ </div>
396
+ <div class="feature-card">
397
+ <div class="icon">
398
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
399
+ stroke-linecap="round" stroke-linejoin="round">
400
+ <rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
401
+ <line x1="8" y1="21" x2="16" y2="21"></line>
402
+ <line x1="12" y1="17" x2="12" y2="21"></line>
403
+ </svg>
404
+ </div>
405
+ <h3>Driver-Based Architecture</h3>
406
+ <p>Seamlessly switch between Memory, Database, and Redis drivers for Cache, Storage, and Sessions.</p>
407
+ </div>
408
+ <div class="feature-card">
409
+ <div class="icon">
410
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
411
+ stroke-linecap="round" stroke-linejoin="round">
412
+ <polyline points="16 18 22 12 16 6"></polyline>
413
+ <polyline points="8 6 2 12 8 18"></polyline>
414
+ </svg>
415
+ </div>
416
+ <h3>Container Service</h3>
417
+ <p>Powerful Dependency Injection container for loosely coupled, highly testable application code.</p>
418
+ </div>
419
+ </div>
420
+
421
+ <div class="stack-section">
422
+ <p>Built with Core Arika Packages</p>
423
+ <div class="stack-pills">
424
+ <span class="pill">Foundation</span>
425
+ <span class="pill">HTTP</span>
426
+ <span class="pill">Router</span>
427
+ <span class="pill">Container</span>
428
+ <span class="pill">Events</span>
429
+ <span class="pill">Cache</span>
430
+ </div>
431
+ </div>
432
+
433
+ <div class="footer">
434
+ Crafted with passion for <span>{{name}}</span>. <br>
435
+ ArikaJS &copy; 2026. Empowering the next generation of developers.
436
+ </div>
437
+ </div>
438
+
439
+ <script>
440
+ const html = document.documentElement;
441
+ const toggle = document.getElementById('theme-toggle');
442
+ const sun = document.getElementById('sun-icon');
443
+ const moon = document.getElementById('moon-icon');
444
+
445
+ // Check for saved theme preference
446
+ const savedTheme = localStorage.getItem('theme') || 'light';
447
+ setTheme(savedTheme);
448
+
449
+ toggle.addEventListener('click', () => {
450
+ const currentTheme = html.getAttribute('data-theme');
451
+ const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
452
+ setTheme(newTheme);
453
+ });
454
+
455
+ function setTheme(theme) {
456
+ html.setAttribute('data-theme', theme);
457
+ localStorage.setItem('theme', theme);
458
+
459
+ if (theme === 'dark') {
460
+ sun.style.display = 'none';
461
+ moon.style.display = 'block';
462
+ } else {
463
+ sun.style.display = 'block';
464
+ moon.style.display = 'none';
465
+ }
466
+ }
467
+ </script>
468
+ </body>
469
+
470
+ </html>
@@ -0,0 +1,34 @@
1
+ import { Route } from '@arikajs/router';
2
+ import { UserController } from '../app/Controllers/UserController';
3
+
4
+ Route.get('/', () => {
5
+ return {
6
+ framework: 'ArikaJS',
7
+ version: '1.0.0',
8
+ type: 'Fullstack',
9
+ language: 'TypeScript',
10
+ status: 'Online',
11
+ message: 'Welcome to your premium ArikaJS Fullstack Application',
12
+ links: {
13
+ docs: 'https://github.com/arikajs/arikajs#readme',
14
+ github: 'https://github.com/arikajs/arikajs'
15
+ }
16
+ };
17
+ });
18
+
19
+ Route.get('/status', () => {
20
+ return {
21
+ status: 'UP',
22
+ uptime: process.uptime(),
23
+ timestamp: new Date().toISOString()
24
+ };
25
+ });
26
+
27
+ // Users CRUD Routes
28
+ const userController = new UserController();
29
+
30
+ Route.get('/users', userController.index);
31
+ Route.get('/users/:id', userController.show);
32
+ Route.post('/users', userController.store);
33
+ Route.put('/users/:id', userController.update);
34
+ Route.delete('/users/:id', userController.destroy);
@@ -0,0 +1,6 @@
1
+
2
+ import { Route } from 'arikajs';
3
+
4
+ Route.get('/', ({ view }: any) => {
5
+ return view.render('welcome', { name: 'ArikaApp' });
6
+ });
@@ -0,0 +1,16 @@
1
+ import app from './bootstrap/app';
2
+ import { Log } from 'arikajs';
3
+ import './routes/web';
4
+
5
+ const start = async () => {
6
+ // Start the application
7
+ console.log('🚀 Starting ArikaJS application...');
8
+
9
+ const port = process.env.APP_PORT ? parseInt(process.env.APP_PORT) : 8000;
10
+
11
+ await app.listen(port);
12
+ };
13
+
14
+ start().catch((err) => {
15
+ Log.error('Failed to start application', { error: err.message });
16
+ });
@@ -0,0 +1,15 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "outDir": "./dist",
7
+ "rootDir": "./",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "experimentalDecorators": true,
13
+ "emitDecoratorMetadata": true
14
+ }
15
+ }