@arikajs/cli 0.0.4 → 0.0.5

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 (228) hide show
  1. package/README.md +99 -6
  2. package/dist/bin/arika.js +2 -2
  3. package/dist/bin/arika.js.map +1 -1
  4. package/dist/src/ApplicationLoader.d.ts +5 -0
  5. package/dist/src/ApplicationLoader.d.ts.map +1 -1
  6. package/dist/src/ApplicationLoader.js +24 -2
  7. package/dist/src/ApplicationLoader.js.map +1 -1
  8. package/dist/src/Bootstrap.d.ts.map +1 -1
  9. package/dist/src/Bootstrap.js +35 -0
  10. package/dist/src/Bootstrap.js.map +1 -1
  11. package/dist/src/Commands/AuthApiInstallCommand.d.ts +24 -0
  12. package/dist/src/Commands/AuthApiInstallCommand.d.ts.map +1 -0
  13. package/dist/src/Commands/AuthApiInstallCommand.js +751 -0
  14. package/dist/src/Commands/AuthApiInstallCommand.js.map +1 -0
  15. package/dist/src/Commands/AuthInstallCommand.d.ts +7 -0
  16. package/dist/src/Commands/AuthInstallCommand.d.ts.map +1 -0
  17. package/dist/src/Commands/AuthInstallCommand.js +46 -0
  18. package/dist/src/Commands/AuthInstallCommand.js.map +1 -0
  19. package/dist/src/Commands/AuthWebInstallCommand.d.ts +31 -0
  20. package/dist/src/Commands/AuthWebInstallCommand.d.ts.map +1 -0
  21. package/dist/src/Commands/AuthWebInstallCommand.js +1100 -0
  22. package/dist/src/Commands/AuthWebInstallCommand.js.map +1 -0
  23. package/dist/src/Commands/BenchmarkCommand.d.ts +7 -0
  24. package/dist/src/Commands/BenchmarkCommand.d.ts.map +1 -0
  25. package/dist/src/Commands/BenchmarkCommand.js +25 -0
  26. package/dist/src/Commands/BenchmarkCommand.js.map +1 -0
  27. package/dist/src/Commands/CacheClearCommand.d.ts +7 -0
  28. package/dist/src/Commands/CacheClearCommand.d.ts.map +1 -0
  29. package/dist/src/Commands/CacheClearCommand.js +33 -0
  30. package/dist/src/Commands/CacheClearCommand.js.map +1 -0
  31. package/dist/src/Commands/CacheTableCommand.d.ts.map +1 -1
  32. package/dist/src/Commands/CacheTableCommand.js +21 -9
  33. package/dist/src/Commands/CacheTableCommand.js.map +1 -1
  34. package/dist/src/Commands/ConfigCacheCommand.d.ts +7 -0
  35. package/dist/src/Commands/ConfigCacheCommand.d.ts.map +1 -0
  36. package/dist/src/Commands/ConfigCacheCommand.js +86 -0
  37. package/dist/src/Commands/ConfigCacheCommand.js.map +1 -0
  38. package/dist/src/Commands/ConfigClearCommand.d.ts +7 -0
  39. package/dist/src/Commands/ConfigClearCommand.d.ts.map +1 -0
  40. package/dist/src/Commands/ConfigClearCommand.js +29 -0
  41. package/dist/src/Commands/ConfigClearCommand.js.map +1 -0
  42. package/dist/src/Commands/DocsGenerateCommand.d.ts +0 -1
  43. package/dist/src/Commands/DocsGenerateCommand.d.ts.map +1 -1
  44. package/dist/src/Commands/DocsGenerateCommand.js +68 -77
  45. package/dist/src/Commands/DocsGenerateCommand.js.map +1 -1
  46. package/dist/src/Commands/EnvValidateCommand.d.ts +7 -0
  47. package/dist/src/Commands/EnvValidateCommand.d.ts.map +1 -0
  48. package/dist/src/Commands/EnvValidateCommand.js +51 -0
  49. package/dist/src/Commands/EnvValidateCommand.js.map +1 -0
  50. package/dist/src/Commands/ListCommand.d.ts.map +1 -1
  51. package/dist/src/Commands/ListCommand.js +15 -8
  52. package/dist/src/Commands/ListCommand.js.map +1 -1
  53. package/dist/src/Commands/MakeCommand.d.ts +7 -0
  54. package/dist/src/Commands/MakeCommand.d.ts.map +1 -0
  55. package/dist/src/Commands/MakeCommand.js +110 -0
  56. package/dist/src/Commands/MakeCommand.js.map +1 -0
  57. package/dist/src/Commands/MakeCommandCommand.d.ts +20 -0
  58. package/dist/src/Commands/MakeCommandCommand.d.ts.map +1 -0
  59. package/dist/src/Commands/MakeCommandCommand.js +82 -0
  60. package/dist/src/Commands/MakeCommandCommand.js.map +1 -0
  61. package/dist/src/Commands/MakeControllerCommand.d.ts +17 -0
  62. package/dist/src/Commands/MakeControllerCommand.d.ts.map +1 -0
  63. package/dist/src/Commands/MakeControllerCommand.js +90 -0
  64. package/dist/src/Commands/MakeControllerCommand.js.map +1 -0
  65. package/dist/src/Commands/MakeEventCommand.d.ts +8 -0
  66. package/dist/src/Commands/MakeEventCommand.d.ts.map +1 -0
  67. package/dist/src/Commands/MakeEventCommand.js +48 -0
  68. package/dist/src/Commands/MakeEventCommand.js.map +1 -0
  69. package/dist/src/Commands/MakeJobCommand.d.ts +8 -0
  70. package/dist/src/Commands/MakeJobCommand.d.ts.map +1 -0
  71. package/dist/src/Commands/MakeJobCommand.js +55 -0
  72. package/dist/src/Commands/MakeJobCommand.js.map +1 -0
  73. package/dist/src/Commands/MakeListenerCommand.d.ts +8 -0
  74. package/dist/src/Commands/MakeListenerCommand.d.ts.map +1 -0
  75. package/dist/src/Commands/MakeListenerCommand.js +55 -0
  76. package/dist/src/Commands/MakeListenerCommand.js.map +1 -0
  77. package/dist/src/Commands/MakeMiddlewareCommand.d.ts +17 -0
  78. package/dist/src/Commands/MakeMiddlewareCommand.d.ts.map +1 -0
  79. package/dist/src/Commands/MakeMiddlewareCommand.js +69 -0
  80. package/dist/src/Commands/MakeMiddlewareCommand.js.map +1 -0
  81. package/dist/src/Commands/MakeMigrationCommand.js +4 -4
  82. package/dist/src/Commands/MakeMigrationCommand.js.map +1 -1
  83. package/dist/src/Commands/MakeModelCommand.d.ts +26 -0
  84. package/dist/src/Commands/MakeModelCommand.d.ts.map +1 -0
  85. package/dist/src/Commands/MakeModelCommand.js +193 -0
  86. package/dist/src/Commands/MakeModelCommand.js.map +1 -0
  87. package/dist/src/Commands/MakeProviderCommand.d.ts +17 -0
  88. package/dist/src/Commands/MakeProviderCommand.d.ts.map +1 -0
  89. package/dist/src/Commands/MakeProviderCommand.js +72 -0
  90. package/dist/src/Commands/MakeProviderCommand.js.map +1 -0
  91. package/dist/src/Commands/MakeViewCommand.d.ts +7 -0
  92. package/dist/src/Commands/MakeViewCommand.d.ts.map +1 -0
  93. package/dist/src/Commands/MakeViewCommand.js +37 -0
  94. package/dist/src/Commands/MakeViewCommand.js.map +1 -0
  95. package/dist/src/Commands/MigrateFreshCommand.d.ts +10 -0
  96. package/dist/src/Commands/MigrateFreshCommand.d.ts.map +1 -0
  97. package/dist/src/Commands/MigrateFreshCommand.js +129 -0
  98. package/dist/src/Commands/MigrateFreshCommand.js.map +1 -0
  99. package/dist/src/Commands/NewCommand.d.ts.map +1 -1
  100. package/dist/src/Commands/NewCommand.js +92 -24
  101. package/dist/src/Commands/NewCommand.js.map +1 -1
  102. package/dist/src/Commands/QueueFailedCommand.d.ts +7 -0
  103. package/dist/src/Commands/QueueFailedCommand.d.ts.map +1 -0
  104. package/dist/src/Commands/QueueFailedCommand.js +30 -0
  105. package/dist/src/Commands/QueueFailedCommand.js.map +1 -0
  106. package/dist/src/Commands/QueueFailedTableCommand.d.ts +7 -0
  107. package/dist/src/Commands/QueueFailedTableCommand.d.ts.map +1 -0
  108. package/dist/src/Commands/QueueFailedTableCommand.js +55 -0
  109. package/dist/src/Commands/QueueFailedTableCommand.js.map +1 -0
  110. package/dist/src/Commands/QueueFlushCommand.d.ts +7 -0
  111. package/dist/src/Commands/QueueFlushCommand.d.ts.map +1 -0
  112. package/dist/src/Commands/QueueFlushCommand.js +21 -0
  113. package/dist/src/Commands/QueueFlushCommand.js.map +1 -0
  114. package/dist/src/Commands/QueueRetryCommand.d.ts +7 -0
  115. package/dist/src/Commands/QueueRetryCommand.d.ts.map +1 -0
  116. package/dist/src/Commands/QueueRetryCommand.js +36 -0
  117. package/dist/src/Commands/QueueRetryCommand.js.map +1 -0
  118. package/dist/src/Commands/QueueTableCommand.d.ts.map +1 -1
  119. package/dist/src/Commands/QueueTableCommand.js +19 -13
  120. package/dist/src/Commands/QueueTableCommand.js.map +1 -1
  121. package/dist/src/Commands/QueueWorkCommand.d.ts +8 -0
  122. package/dist/src/Commands/QueueWorkCommand.d.ts.map +1 -0
  123. package/dist/src/Commands/QueueWorkCommand.js +88 -0
  124. package/dist/src/Commands/QueueWorkCommand.js.map +1 -0
  125. package/dist/src/Commands/RouteListCommand.d.ts +7 -0
  126. package/dist/src/Commands/RouteListCommand.d.ts.map +1 -0
  127. package/dist/src/Commands/RouteListCommand.js +108 -0
  128. package/dist/src/Commands/RouteListCommand.js.map +1 -0
  129. package/dist/src/Commands/ScheduleRunCommand.d.ts +9 -0
  130. package/dist/src/Commands/ScheduleRunCommand.d.ts.map +1 -0
  131. package/dist/src/Commands/ScheduleRunCommand.js +80 -0
  132. package/dist/src/Commands/ScheduleRunCommand.js.map +1 -0
  133. package/dist/src/Commands/ScheduleWorkCommand.d.ts +9 -0
  134. package/dist/src/Commands/ScheduleWorkCommand.d.ts.map +1 -0
  135. package/dist/src/Commands/ScheduleWorkCommand.js +81 -0
  136. package/dist/src/Commands/ScheduleWorkCommand.js.map +1 -0
  137. package/dist/src/Commands/ServeCommand.d.ts +1 -0
  138. package/dist/src/Commands/ServeCommand.d.ts.map +1 -1
  139. package/dist/src/Commands/ServeCommand.js +111 -21
  140. package/dist/src/Commands/ServeCommand.js.map +1 -1
  141. package/dist/src/TemplateManager.d.ts +4 -0
  142. package/dist/src/TemplateManager.d.ts.map +1 -1
  143. package/dist/src/TemplateManager.js +35 -6
  144. package/dist/src/TemplateManager.js.map +1 -1
  145. package/dist/templates/app/.env.example +47 -0
  146. package/dist/templates/app/README.md +62 -0
  147. package/dist/templates/app/app/Exceptions/Handler.ts +19 -0
  148. package/dist/templates/app/app/Http/Controllers/UserController.ts +90 -0
  149. package/dist/templates/app/app/Http/Kernel.ts +43 -0
  150. package/dist/templates/app/app/Http/Middleware/Authenticate.ts +10 -0
  151. package/dist/templates/app/app/Http/Middleware/EnsureEmailIsVerified.ts +18 -0
  152. package/dist/templates/app/app/Http/Middleware/ExampleMiddleware.ts +12 -0
  153. package/dist/templates/app/app/Http/Middleware/RedirectIfAuthenticated.ts +18 -0
  154. package/dist/templates/app/app/Http/Middleware/TrimStrings.ts +12 -0
  155. package/dist/templates/app/app/Http/Middleware/TrustProxies.ts +23 -0
  156. package/dist/templates/app/app/Http/Middleware/VerifyCsrfToken.ts +10 -0
  157. package/dist/templates/app/app/Models/User.ts +15 -0
  158. package/dist/templates/app/app/Providers/AppServiceProvider.ts +17 -0
  159. package/dist/templates/app/app/Providers/RouteServiceProvider.ts +35 -0
  160. package/dist/templates/app/bootstrap/app.ts +41 -0
  161. package/dist/templates/app/config/app.ts +10 -0
  162. package/dist/templates/app/config/cache.ts +44 -0
  163. package/dist/templates/app/config/database.ts +63 -0
  164. package/dist/templates/app/config/filesystems.ts +35 -0
  165. package/dist/templates/app/config/http.ts +6 -0
  166. package/dist/templates/app/config/logging.ts +37 -0
  167. package/dist/templates/app/config/mail.ts +29 -0
  168. package/dist/templates/app/config/queue.ts +42 -0
  169. package/{templates/app/database/migrations/0001_create_users_table.ts → dist/templates/app/database/migrations/2024_01_01_000001_create_users_table.ts} +3 -1
  170. package/dist/templates/app/database/migrations/2024_01_01_000002_create_password_resets_table.ts +22 -0
  171. package/dist/templates/app/database/migrations/2024_01_01_000003_create_failed_jobs_table.ts +25 -0
  172. package/dist/templates/app/package.json +22 -0
  173. package/dist/templates/app/public/assets/img/favicon.png +0 -0
  174. package/dist/templates/app/public/assets/img/logo.png +0 -0
  175. package/dist/templates/app/resources/views/errors/401.ark.html +320 -0
  176. package/dist/templates/app/resources/views/errors/403.ark.html +320 -0
  177. package/dist/templates/app/resources/views/errors/404.ark.html +320 -0
  178. package/dist/templates/app/resources/views/errors/419.ark.html +320 -0
  179. package/dist/templates/app/resources/views/errors/429.ark.html +320 -0
  180. package/dist/templates/app/resources/views/errors/500.ark.html +320 -0
  181. package/dist/templates/app/resources/views/errors/503.ark.html +320 -0
  182. package/dist/templates/app/resources/views/welcome.ark.html +846 -0
  183. package/dist/templates/app/routes/api.ts +39 -0
  184. package/dist/templates/app/routes/web.ts +10 -0
  185. package/dist/templates/app/server.ts +15 -0
  186. package/dist/templates/app/tsconfig.json +27 -0
  187. package/package.json +16 -10
  188. package/templates/app/.env.example +2 -2
  189. package/templates/app/README.md +62 -0
  190. package/templates/app/app/Exceptions/Handler.ts +19 -0
  191. package/templates/app/app/Http/Controllers/UserController.ts +90 -0
  192. package/templates/app/app/Http/Kernel.ts +39 -14
  193. package/templates/app/app/Http/Middleware/Authenticate.ts +10 -0
  194. package/templates/app/app/Http/Middleware/EnsureEmailIsVerified.ts +18 -0
  195. package/templates/app/app/Http/Middleware/ExampleMiddleware.ts +12 -0
  196. package/templates/app/app/Http/Middleware/RedirectIfAuthenticated.ts +18 -0
  197. package/templates/app/app/Http/Middleware/TrimStrings.ts +12 -0
  198. package/templates/app/app/Http/Middleware/TrustProxies.ts +23 -0
  199. package/templates/app/app/Http/Middleware/VerifyCsrfToken.ts +10 -0
  200. package/templates/app/app/Models/User.ts +5 -5
  201. package/templates/app/app/Providers/AppServiceProvider.ts +17 -0
  202. package/templates/app/app/Providers/RouteServiceProvider.ts +35 -0
  203. package/templates/app/bootstrap/app.ts +30 -2
  204. package/templates/app/config/app.ts +7 -6
  205. package/templates/app/config/cache.ts +14 -7
  206. package/templates/app/config/database.ts +48 -21
  207. package/templates/app/config/filesystems.ts +11 -9
  208. package/templates/app/config/http.ts +3 -2
  209. package/templates/app/config/logging.ts +6 -4
  210. package/templates/app/config/mail.ts +10 -8
  211. package/templates/app/config/queue.ts +6 -4
  212. package/templates/app/database/migrations/2024_01_01_000001_create_users_table.ts +25 -0
  213. package/templates/app/database/migrations/2024_01_01_000002_create_password_resets_table.ts +22 -0
  214. package/templates/app/database/migrations/2024_01_01_000003_create_failed_jobs_table.ts +25 -0
  215. package/templates/app/package.json +4 -3
  216. package/templates/app/public/assets/img/favicon.png +0 -0
  217. package/templates/app/public/assets/img/logo.png +0 -0
  218. package/templates/app/resources/views/welcome.ark.html +846 -0
  219. package/templates/app/routes/api.ts +8 -3
  220. package/templates/app/routes/web.ts +8 -4
  221. package/templates/app/server.ts +3 -4
  222. package/templates/app/tsconfig.json +12 -0
  223. package/dist/tests/Cli.test.d.ts +0 -2
  224. package/dist/tests/Cli.test.d.ts.map +0 -1
  225. package/dist/tests/Cli.test.js +0 -16
  226. package/dist/tests/Cli.test.js.map +0 -1
  227. package/templates/app/app/Controllers/UserController.ts +0 -88
  228. package/templates/app/resources/views/welcome.html +0 -470
@@ -0,0 +1,846 @@
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 {{ config('app.name', 'ArikaJS') }}</title>
8
+ <link rel="icon" type="image/png" href="/assets/img/favicon.png">
9
+ <link
10
+ href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=Plus+Jakarta+Sans:wght@300;400;600;800&display=swap"
11
+ rel="stylesheet">
12
+ <style>
13
+ :root {
14
+ --primary: #8b5cf6;
15
+ --primary-glow: rgba(139, 92, 246, 0.4);
16
+ --secondary: #ec4899;
17
+ --bg: #f8fafc;
18
+ --card-bg: rgba(255, 255, 255, 0.8);
19
+ --text-main: #0f172a;
20
+ --text-muted: #64748b;
21
+ --border: rgba(15, 23, 42, 0.08);
22
+ --aurora-opacity: 0.3;
23
+ --btn-secondary-bg: rgba(15, 23, 42, 0.05);
24
+ --pill-bg: rgba(15, 23, 42, 0.03);
25
+ --h1-gradient: linear-gradient(135deg, #0f172a 30%, #334155 100%);
26
+ }
27
+
28
+ [data-theme="dark"] {
29
+ --bg: #030712;
30
+ --card-bg: rgba(17, 24, 39, 0.7);
31
+ --text-main: #f8fafc;
32
+ --text-muted: #94a3b8;
33
+ --border: rgba(255, 255, 255, 0.08);
34
+ --aurora-opacity: 0.5;
35
+ --btn-secondary-bg: rgba(255, 255, 255, 0.05);
36
+ --pill-bg: rgba(255, 255, 255, 0.03);
37
+ --h1-gradient: linear-gradient(135deg, #fff 30%, rgba(255, 255, 255, 0.5) 100%);
38
+ }
39
+
40
+ * {
41
+ margin: 0;
42
+ padding: 0;
43
+ box-sizing: border-box;
44
+ transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
45
+ }
46
+
47
+ body {
48
+ font-family: 'Plus Jakarta Sans', sans-serif;
49
+ background-color: var(--bg);
50
+ color: var(--text-main);
51
+ min-height: 100vh;
52
+ display: flex;
53
+ flex-direction: column;
54
+ overflow-x: hidden;
55
+ position: relative;
56
+ }
57
+
58
+ /* Header Styles */
59
+ header {
60
+ width: 100%;
61
+ padding: 1.5rem 5%;
62
+ display: flex;
63
+ justify-content: space-between;
64
+ align-items: center;
65
+ position: fixed;
66
+ top: 0;
67
+ z-index: 100;
68
+ backdrop-filter: blur(10px);
69
+ border-bottom: 1px solid var(--border);
70
+ }
71
+
72
+ .logo-container {
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 1rem;
76
+ text-decoration: none;
77
+ }
78
+
79
+ .logo {
80
+ width: 135px;
81
+ height: auto;
82
+ filter: drop-shadow(0 4px 6px rgba(139, 92, 246, 0.2));
83
+ }
84
+
85
+ [data-theme="dark"] .logo {
86
+ filter: invert(1) drop-shadow(0 4px 6px rgba(139, 92, 246, 0.3));
87
+ }
88
+
89
+ .brand-name {
90
+ font-family: 'Outfit', sans-serif;
91
+ font-size: 1.5rem;
92
+ font-weight: 800;
93
+ background: var(--h1-gradient);
94
+ background-clip: text;
95
+ -webkit-background-clip: text;
96
+ -webkit-text-fill-color: transparent;
97
+ }
98
+
99
+ /* Theme Switcher */
100
+ .theme-toggle {
101
+ background: var(--card-bg);
102
+ border: 1px solid var(--border);
103
+ padding: 0.5rem;
104
+ border-radius: 99px;
105
+ cursor: pointer;
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 0.5rem;
109
+ }
110
+
111
+ .theme-toggle svg {
112
+ width: 20px;
113
+ height: 20px;
114
+ color: var(--text-main);
115
+ }
116
+
117
+ /* Animated Aurora Background */
118
+ .aurora {
119
+ position: fixed;
120
+ top: 0;
121
+ left: 0;
122
+ width: 100%;
123
+ height: 100%;
124
+ z-index: -1;
125
+ filter: blur(100px);
126
+ opacity: var(--aurora-opacity);
127
+ pointer-events: none;
128
+ }
129
+
130
+ .aurora-blur {
131
+ position: absolute;
132
+ border-radius: 50%;
133
+ animation: move 20s infinite alternate;
134
+ }
135
+
136
+ .blur-1 {
137
+ width: 50vw;
138
+ height: 50vw;
139
+ background: radial-gradient(circle, var(--primary) 0%, transparent 70%);
140
+ top: -10%;
141
+ left: -10%;
142
+ }
143
+
144
+ .blur-2 {
145
+ width: 40vw;
146
+ height: 40vw;
147
+ background: radial-gradient(circle, var(--secondary) 0%, transparent 70%);
148
+ bottom: -10%;
149
+ right: -10%;
150
+ animation-duration: 25s;
151
+ }
152
+
153
+ @keyframes move {
154
+ from {
155
+ transform: translate(0, 0) scale(1);
156
+ }
157
+
158
+ to {
159
+ transform: translate(10%, 10%) scale(1.1);
160
+ }
161
+ }
162
+
163
+ .main-content {
164
+ flex: 1;
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: center;
168
+ padding: 8rem 2rem 4rem;
169
+ }
170
+
171
+ .container {
172
+ position: relative;
173
+ z-index: 10;
174
+ max-width: 1000px;
175
+ width: 100%;
176
+ text-align: center;
177
+ animation: fadeIn 1s ease-out;
178
+ }
179
+
180
+ @keyframes fadeIn {
181
+ from {
182
+ opacity: 0;
183
+ transform: translateY(20px);
184
+ }
185
+
186
+ to {
187
+ opacity: 1;
188
+ transform: translateY(0);
189
+ }
190
+ }
191
+
192
+ .badge {
193
+ display: inline-block;
194
+ padding: 0.5rem 1.25rem;
195
+ background: rgba(139, 92, 246, 0.1);
196
+ border: 1px solid var(--primary);
197
+ color: var(--primary);
198
+ border-radius: 999px;
199
+ font-size: 0.85rem;
200
+ font-weight: 600;
201
+ margin-bottom: 2rem;
202
+ text-transform: uppercase;
203
+ letter-spacing: 0.1em;
204
+ }
205
+
206
+ h1 {
207
+ font-family: 'Outfit', sans-serif;
208
+ font-size: clamp(3rem, 10vw, 6rem);
209
+ font-weight: 800;
210
+ line-height: 0.9;
211
+ margin-bottom: 1.5rem;
212
+ letter-spacing: -0.04em;
213
+ background: var(--h1-gradient);
214
+ background-clip: text;
215
+ -webkit-background-clip: text;
216
+ -webkit-text-fill-color: transparent;
217
+ }
218
+
219
+ .description {
220
+ font-size: 1.25rem;
221
+ color: var(--text-muted);
222
+ max-width: 600px;
223
+ margin: 0 auto 3rem;
224
+ line-height: 1.6;
225
+ font-weight: 300;
226
+ }
227
+
228
+ .actions {
229
+ display: flex;
230
+ gap: 1rem;
231
+ justify-content: center;
232
+ margin-bottom: 4rem;
233
+ }
234
+
235
+ .btn {
236
+ padding: 1rem 2.5rem;
237
+ border-radius: 12px;
238
+ font-weight: 600;
239
+ text-decoration: none;
240
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
241
+ font-size: 1rem;
242
+ }
243
+
244
+ .btn-primary {
245
+ background: var(--primary);
246
+ color: white;
247
+ box-shadow: 0 4px 20px var(--primary-glow);
248
+ }
249
+
250
+ .btn-primary:hover {
251
+ transform: translateY(-2px);
252
+ box-shadow: 0 8px 30px var(--primary-glow);
253
+ background: #9d71fd;
254
+ }
255
+
256
+ .btn-secondary {
257
+ background: var(--btn-secondary-bg);
258
+ color: var(--text-main);
259
+ border: 1px solid var(--border);
260
+ backdrop-filter: blur(10px);
261
+ }
262
+
263
+ .btn-secondary:hover {
264
+ background: rgba(255, 255, 255, 0.1);
265
+ border-color: rgba(255, 255, 255, 0.2);
266
+ }
267
+
268
+ .features-grid {
269
+ display: grid;
270
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
271
+ gap: 1.5rem;
272
+ margin-top: 2rem;
273
+ }
274
+
275
+ .feature-card {
276
+ background: var(--card-bg);
277
+ border: 1px solid var(--border);
278
+ padding: 2rem;
279
+ border-radius: 24px;
280
+ text-align: left;
281
+ transition: all 0.4s ease;
282
+ backdrop-filter: blur(10px);
283
+ }
284
+
285
+ .feature-card:hover {
286
+ border-color: var(--primary);
287
+ background: var(--card-bg);
288
+ transform: translateY(-8px);
289
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
290
+ }
291
+
292
+ .icon {
293
+ width: 48px;
294
+ height: 48px;
295
+ background: rgba(139, 92, 246, 0.1);
296
+ border-radius: 12px;
297
+ display: flex;
298
+ align-items: center;
299
+ justify-content: center;
300
+ margin-bottom: 1.5rem;
301
+ color: var(--primary);
302
+ }
303
+
304
+ .feature-card h3 {
305
+ font-size: 1.25rem;
306
+ margin-bottom: 0.75rem;
307
+ color: var(--text-main);
308
+ }
309
+
310
+ .feature-card p {
311
+ color: var(--text-muted);
312
+ font-size: 0.95rem;
313
+ line-height: 1.6;
314
+ }
315
+
316
+ .footer {
317
+ padding: 3rem 0;
318
+ color: var(--text-muted);
319
+ font-size: 0.875rem;
320
+ text-align: center;
321
+ border-top: 1px solid var(--border);
322
+ }
323
+
324
+ .footer span {
325
+ color: var(--primary);
326
+ font-weight: 600;
327
+ }
328
+
329
+ /* Performance Section Improvements */
330
+ .section-title {
331
+ font-family: 'Outfit', sans-serif;
332
+ font-size: 3rem;
333
+ margin-bottom: 1rem;
334
+ background: var(--h1-gradient);
335
+ background-clip: text;
336
+ -webkit-background-clip: text;
337
+ -webkit-text-fill-color: transparent;
338
+ font-weight: 800;
339
+ }
340
+
341
+ .section-subtitle {
342
+ color: var(--text-muted);
343
+ max-width: 700px;
344
+ margin: 0 auto;
345
+ font-size: 1.1rem;
346
+ }
347
+
348
+ .perf-dashboard {
349
+ max-width: 850px;
350
+ margin: 0 auto;
351
+ position: relative;
352
+ }
353
+
354
+ .perf-stats-card {
355
+ background: var(--card-bg);
356
+ padding: 3.5rem;
357
+ border-radius: 40px;
358
+ border: 1px solid var(--border);
359
+ backdrop-filter: blur(30px);
360
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
361
+ position: relative;
362
+ overflow: hidden;
363
+ }
364
+
365
+ .perf-stats-card::before {
366
+ content: '';
367
+ position: absolute;
368
+ top: 0;
369
+ left: 0;
370
+ right: 0;
371
+ height: 2px;
372
+ background: linear-gradient(90deg, transparent, var(--primary), transparent);
373
+ opacity: 0.5;
374
+ }
375
+
376
+ .stat-item {
377
+ margin-bottom: 2.5rem;
378
+ transition: all 0.6s cubic-bezier(0.22, 1, 0.36, 1);
379
+ }
380
+
381
+
382
+
383
+ .stat-item:last-child {
384
+ margin-bottom: 0;
385
+ }
386
+
387
+ .stat-info {
388
+ display: flex;
389
+ justify-content: space-between;
390
+ align-items: flex-end;
391
+ margin-bottom: 1rem;
392
+ }
393
+
394
+ .framework {
395
+ display: flex;
396
+ align-items: center;
397
+ gap: 0.75rem;
398
+ }
399
+
400
+ .dot {
401
+ width: 8px;
402
+ height: 8px;
403
+ border-radius: 50%;
404
+ background: var(--text-muted);
405
+ }
406
+
407
+ .arika-highlight .dot {
408
+ background: var(--primary);
409
+ box-shadow: 0 0 10px var(--primary);
410
+ animation: pulse 2s infinite;
411
+ }
412
+
413
+ @keyframes pulse {
414
+ 0% {
415
+ transform: scale(1);
416
+ opacity: 1;
417
+ }
418
+
419
+ 50% {
420
+ transform: scale(1.5);
421
+ opacity: 0.5;
422
+ }
423
+
424
+ 100% {
425
+ transform: scale(1);
426
+ opacity: 1;
427
+ }
428
+ }
429
+
430
+ .framework .name {
431
+ font-weight: 700;
432
+ font-size: 1.1rem;
433
+ color: var(--text-main);
434
+ }
435
+
436
+ .tag {
437
+ font-size: 0.7rem;
438
+ background: var(--primary);
439
+ color: white;
440
+ padding: 0.2rem 0.6rem;
441
+ border-radius: 99px;
442
+ font-weight: 700;
443
+ text-transform: uppercase;
444
+ letter-spacing: 0.05em;
445
+ }
446
+
447
+ .value {
448
+ font-family: 'Outfit', sans-serif;
449
+ font-weight: 800;
450
+ font-size: 1.5rem;
451
+ color: var(--text-main);
452
+ }
453
+
454
+ .arika-highlight .value {
455
+ color: var(--primary);
456
+ }
457
+
458
+ .progress-container {
459
+ height: 14px;
460
+ background: var(--pill-bg);
461
+ border-radius: 99px;
462
+ overflow: hidden;
463
+ position: relative;
464
+ border: 1px solid var(--border);
465
+ }
466
+
467
+ .progress-bar {
468
+ height: 100%;
469
+ width: var(--width);
470
+ border-radius: 99px;
471
+ position: relative;
472
+ transform-origin: left;
473
+ animation: expandWidth 1.5s cubic-bezier(0.65, 0, 0.35, 1) forwards;
474
+ }
475
+
476
+ @keyframes expandWidth {
477
+ 0% { transform: scaleX(0); }
478
+ 100% { transform: scaleX(1); }
479
+ }
480
+
481
+
482
+
483
+ .arika-glow {
484
+ background: linear-gradient(90deg, var(--primary), var(--secondary));
485
+ box-shadow: 0 0 20px var(--primary-glow);
486
+ }
487
+
488
+ .stat-item:not(.arika-highlight) .progress-bar {
489
+ background: var(--text-muted);
490
+ opacity: 0.4;
491
+ }
492
+
493
+ .shimmer {
494
+ position: absolute;
495
+ top: 0;
496
+ left: 0;
497
+ width: 100%;
498
+ height: 100%;
499
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
500
+ transform: translateX(-100%);
501
+ animation: shimmer 3s infinite;
502
+ }
503
+
504
+ @keyframes shimmer {
505
+ 100% {
506
+ transform: translateX(100%);
507
+ }
508
+ }
509
+
510
+ .benchmark-note {
511
+ margin-top: 2.5rem;
512
+ display: flex;
513
+ align-items: center;
514
+ justify-content: center;
515
+ gap: 0.5rem;
516
+ font-size: 0.85rem;
517
+ color: var(--text-muted);
518
+ font-style: italic;
519
+ }
520
+
521
+ @media (max-width: 768px) {
522
+ h1 {
523
+ font-size: 3rem;
524
+ }
525
+
526
+ .features-grid {
527
+ grid-template-columns: 1fr;
528
+ }
529
+
530
+ .actions {
531
+ flex-direction: column;
532
+ }
533
+
534
+ header {
535
+ padding: 1rem 5%;
536
+ }
537
+
538
+ .perf-stats-card {
539
+ padding: 1.5rem;
540
+ }
541
+
542
+ .section-title {
543
+ font-size: 2rem;
544
+ }
545
+ }
546
+ </style>
547
+ </head>
548
+
549
+ <body>
550
+ <header>
551
+ <a href="/" class="logo-container">
552
+ <img src="/assets/img/logo.png" alt="ArikaJS Logo" class="logo">
553
+ </a>
554
+
555
+ <div class="header-right" style="display: flex; align-items: center; gap: 1.5rem;">
556
+ <button class="theme-toggle" id="theme-toggle" title="Toggle Theme">
557
+ <svg id="moon-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
558
+ stroke="currentColor">
559
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
560
+ 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" />
561
+ </svg>
562
+ <svg id="sun-icon" style="display: none;" xmlns="http://www.w3.org/2000/svg" fill="none"
563
+ viewBox="0 0 24 24" stroke="currentColor">
564
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
565
+ 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" />
566
+ </svg>
567
+ </button>
568
+ </div>
569
+ </header>
570
+
571
+ <div class="aurora">
572
+ <div class="aurora-blur blur-1"></div>
573
+ <div class="aurora-blur blur-2"></div>
574
+ </div>
575
+
576
+ <main class="main-content">
577
+ <div class="container">
578
+ <div class="badge">Version 0.0.4 Now Live</div>
579
+ <h1>The Next Generation Node.js Framework</h1>
580
+ <p class="description">
581
+ Crafted for high-performance applications and exceptional developer
582
+ experience. ArikaJS gives you the tools to build scalable systems with ease.
583
+ </p>
584
+
585
+ <div class="actions">
586
+ <a href="https://github.com/arikajs/arikajs#readme" class="btn btn-primary">Documentation</a>
587
+ <a href="https://github.com/arikajs/arikajs" class="btn btn-secondary">Star on GitHub</a>
588
+ </div>
589
+
590
+ <!-- Performance Section -->
591
+ <section class="perf-section" id="performance" style="margin-bottom: 8rem; perspective: 1000px;">
592
+ <div style="margin-bottom: 3.5rem;">
593
+ <h2 class="section-title">Performance Without Compromise</h2>
594
+ <p class="section-subtitle">ArikaJS is architected for extreme efficiency, outperforming industry
595
+ leaders by 2.5x.</p>
596
+ </div>
597
+
598
+ <div class="perf-dashboard">
599
+ <div class="perf-stats-card">
600
+ <div class="stat-item arika-highlight">
601
+ <div class="stat-info">
602
+ <div class="framework">
603
+ <span class="dot"></span>
604
+ <span class="name">ArikaJS</span>
605
+ <span class="tag">Next Gen</span>
606
+ </div>
607
+ <div class="value"><span class="count" data-target="42800">42,800</span> <small>req/s</small>
608
+ </div>
609
+ </div>
610
+ <div class="progress-container">
611
+ <div class="progress-bar arika-glow" style="--width: 100%">
612
+ <div class="shimmer"></div>
613
+ </div>
614
+ </div>
615
+ </div>
616
+
617
+ <div class="stat-item">
618
+ <div class="stat-info">
619
+ <div class="framework">
620
+ <span class="dot"></span>
621
+ <span class="name">Fastify</span>
622
+ </div>
623
+ <div class="value"><span class="count" data-target="40400">40,400</span> <small>req/s</small>
624
+ </div>
625
+ </div>
626
+ <div class="progress-container">
627
+ <div class="progress-bar" style="--width: 94%"></div>
628
+ </div>
629
+ </div>
630
+
631
+ <div class="stat-item">
632
+ <div class="stat-info">
633
+ <div class="framework">
634
+ <span class="dot"></span>
635
+ <span class="name">Express</span>
636
+ </div>
637
+ <div class="value"><span class="count" data-target="16500">16,500</span> <small>req/s</small>
638
+ </div>
639
+ </div>
640
+ <div class="progress-container">
641
+ <div class="progress-bar" style="--width: 38%"></div>
642
+ </div>
643
+ </div>
644
+
645
+ <div class="benchmark-note">
646
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor"
647
+ stroke-width="2">
648
+ <circle cx="12" cy="12" r="10"></circle>
649
+ <line x1="12" y1="16" x2="12" y2="12"></line>
650
+ <line x1="12" y1="8" x2="12.01" y2="8"></line>
651
+ </svg>
652
+ Standard JSON hello-world benchmark (v0.0.4)
653
+ </div>
654
+ </div>
655
+ </div>
656
+ </section>
657
+
658
+ <div class="features-grid">
659
+ <div class="feature-card">
660
+ <div class="icon">
661
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
662
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
663
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
664
+ </svg>
665
+ </div>
666
+ <h3>Type-Safe from Core</h3>
667
+ <p>Leverage the full power of TypeScript with deep type safety throughout the entire framework
668
+ pipeline.</p>
669
+ </div>
670
+ <div class="feature-card">
671
+ <div class="icon">
672
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
673
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
674
+ <rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
675
+ <line x1="8" y1="21" x2="16" y2="21"></line>
676
+ <line x1="12" y1="17" x2="12" y2="21"></line>
677
+ </svg>
678
+ </div>
679
+ <h3>Modular Architecture</h3>
680
+ <p>Driver-based system for Cache, Database, and Storage. Built for scalability from day one.</p>
681
+ </div>
682
+ <div class="feature-card">
683
+ <div class="icon">
684
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
685
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
686
+ <polyline points="16 18 22 12 16 6"></polyline>
687
+ <polyline points="8 6 2 12 8 18"></polyline>
688
+ </svg>
689
+ </div>
690
+ <h3>Developer Experience</h3>
691
+ <p>Powerful CLI, intuitive Routing, and Dependency Injection container to keep your code clean and
692
+ testable.</p>
693
+ </div>
694
+ <div class="feature-card">
695
+ <div class="icon">
696
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
697
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
698
+ <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
699
+ <circle cx="12" cy="7" r="4"></circle>
700
+ </svg>
701
+ </div>
702
+ <h3>Authentication Ready</h3>
703
+ <p>Secure your app with built-in support for multiple guards, providers, and session management
704
+ strategies.</p>
705
+ </div>
706
+ <div class="feature-card">
707
+ <div class="icon">
708
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
709
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
710
+ <ellipse cx="12" cy="5" rx="9" ry="3"></ellipse>
711
+ <path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"></path>
712
+ <path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"></path>
713
+ </svg>
714
+ </div>
715
+ <h3>Modern ORM</h3>
716
+ <p>Fluent and intuitive database interactions with built-in relationship handling and automated
717
+ transformations.</p>
718
+ </div>
719
+ <div class="feature-card">
720
+ <div class="icon">
721
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
722
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
723
+ <path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path>
724
+ </svg>
725
+ </div>
726
+ <h3>Blazing Performance</h3>
727
+ <p>Optimized for minimal overhead and lightning-fast response times, making it ideal for modern web
728
+ apps.</p>
729
+ </div>
730
+ <div class="feature-card">
731
+ <div class="icon">
732
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
733
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
734
+ <path
735
+ d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z">
736
+ </path>
737
+ </svg>
738
+ </div>
739
+ <h3>Middleware Pipeline</h3>
740
+ <p>Highly customizable middleware stack using an onion-style execution model for robust request
741
+ processing.</p>
742
+ </div>
743
+ <div class="feature-card">
744
+ <div class="icon">
745
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
746
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
747
+ <rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect>
748
+ <rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect>
749
+ <line x1="6" y1="6" x2="6.01" y2="6"></line>
750
+ <line x1="6" y1="18" x2="6.01" y2="18"></line>
751
+ </svg>
752
+ </div>
753
+ <h3>Global Cache System</h3>
754
+ <p>Boost performance with multiple drivers for Redis, Filesystem, or in-memory caching out of the
755
+ box.</p>
756
+ </div>
757
+ <div class="feature-card">
758
+ <div class="icon">
759
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
760
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
761
+ <polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>
762
+ </svg>
763
+ </div>
764
+ <h3>Real-time Ready</h3>
765
+ <p>Built-in support for events, broadcasting, and real-time updates to keep your users engaged.</p>
766
+ </div>
767
+ </div>
768
+ </div>
769
+ </main>
770
+
771
+ <footer class="footer">
772
+ Crafted with passion for <span>{{name}}</span>. <br>
773
+ ArikaJS &copy; 2026. Empowering the next generation of developers.
774
+ </footer>
775
+
776
+ <script>
777
+ const html = document.documentElement;
778
+ const toggle = document.getElementById('theme-toggle');
779
+ const sun = document.getElementById('sun-icon');
780
+ const moon = document.getElementById('moon-icon');
781
+
782
+ const savedTheme = localStorage.getItem('arika_theme') || 'light';
783
+ setTheme(savedTheme);
784
+
785
+ toggle.addEventListener('click', () => {
786
+ const currentTheme = html.getAttribute('data-theme');
787
+ const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
788
+ setTheme(newTheme);
789
+ });
790
+
791
+ function setTheme(theme) {
792
+ html.setAttribute('data-theme', theme);
793
+ localStorage.setItem('arika_theme', theme);
794
+
795
+ if (theme === 'dark') {
796
+ sun.style.display = 'block';
797
+ moon.style.display = 'none';
798
+ } else {
799
+ sun.style.display = 'none';
800
+ moon.style.display = 'block';
801
+ }
802
+ }
803
+
804
+ /* Performance Counter & Scroll Animation */
805
+ function initCounters() {
806
+ const items = document.querySelectorAll('.stat-item');
807
+ items.forEach((item, index) => {
808
+ setTimeout(() => {
809
+ item.classList.add('active');
810
+ const counter = item.querySelector('.count');
811
+ if (counter) {
812
+ const target = parseInt(counter.getAttribute('data-target')) || 0;
813
+ animateCounter(counter, target);
814
+ }
815
+ }, 500 + (index * 200));
816
+ });
817
+ }
818
+
819
+ if (document.readyState === 'loading') {
820
+ document.addEventListener('DOMContentLoaded', initCounters);
821
+ } else {
822
+ initCounters();
823
+ }
824
+
825
+ function animateCounter(el, target) {
826
+ let start = 0;
827
+ const duration = 1500;
828
+ const stepTime = 20;
829
+ const steps = duration / stepTime;
830
+ const increment = target / steps;
831
+
832
+ const timer = setInterval(() => {
833
+ start += increment;
834
+ if (start >= target) {
835
+ el.innerText = target.toLocaleString();
836
+ clearInterval(timer);
837
+ } else {
838
+ el.innerText = Math.floor(start).toLocaleString();
839
+ }
840
+ }, stepTime);
841
+ }
842
+ </script>
843
+
844
+ </body>
845
+
846
+ </html>