@nitronjs/framework 0.1.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 (87) hide show
  1. package/README.md +429 -0
  2. package/cli/create.js +260 -0
  3. package/cli/njs.js +164 -0
  4. package/lib/Auth/Manager.js +111 -0
  5. package/lib/Build/Manager.js +1232 -0
  6. package/lib/Console/Commands/BuildCommand.js +25 -0
  7. package/lib/Console/Commands/DevCommand.js +385 -0
  8. package/lib/Console/Commands/MakeCommand.js +110 -0
  9. package/lib/Console/Commands/MigrateCommand.js +98 -0
  10. package/lib/Console/Commands/MigrateFreshCommand.js +97 -0
  11. package/lib/Console/Commands/SeedCommand.js +92 -0
  12. package/lib/Console/Commands/StorageLinkCommand.js +31 -0
  13. package/lib/Console/Stubs/controller.js +19 -0
  14. package/lib/Console/Stubs/middleware.js +9 -0
  15. package/lib/Console/Stubs/migration.js +23 -0
  16. package/lib/Console/Stubs/model.js +7 -0
  17. package/lib/Console/Stubs/page-hydration.tsx +54 -0
  18. package/lib/Console/Stubs/seeder.js +9 -0
  19. package/lib/Console/Stubs/vendor.tsx +11 -0
  20. package/lib/Core/Config.js +86 -0
  21. package/lib/Core/Environment.js +21 -0
  22. package/lib/Core/Paths.js +188 -0
  23. package/lib/Database/Connection.js +61 -0
  24. package/lib/Database/DB.js +84 -0
  25. package/lib/Database/Drivers/MySQLDriver.js +234 -0
  26. package/lib/Database/Manager.js +162 -0
  27. package/lib/Database/Model.js +161 -0
  28. package/lib/Database/QueryBuilder.js +714 -0
  29. package/lib/Database/QueryValidation.js +62 -0
  30. package/lib/Database/Schema/Blueprint.js +126 -0
  31. package/lib/Database/Schema/Manager.js +116 -0
  32. package/lib/Date/DateTime.js +108 -0
  33. package/lib/Date/Locale.js +68 -0
  34. package/lib/Encryption/Manager.js +47 -0
  35. package/lib/Filesystem/Manager.js +49 -0
  36. package/lib/Hashing/Manager.js +25 -0
  37. package/lib/Http/Server.js +317 -0
  38. package/lib/Logging/Manager.js +153 -0
  39. package/lib/Mail/Manager.js +120 -0
  40. package/lib/Route/Loader.js +81 -0
  41. package/lib/Route/Manager.js +265 -0
  42. package/lib/Runtime/Entry.js +11 -0
  43. package/lib/Session/File.js +299 -0
  44. package/lib/Session/Manager.js +259 -0
  45. package/lib/Session/Memory.js +67 -0
  46. package/lib/Session/Session.js +196 -0
  47. package/lib/Support/Str.js +100 -0
  48. package/lib/Translation/Manager.js +49 -0
  49. package/lib/Validation/MimeTypes.js +39 -0
  50. package/lib/Validation/Validator.js +691 -0
  51. package/lib/View/Manager.js +544 -0
  52. package/lib/View/Templates/default/Home.tsx +262 -0
  53. package/lib/View/Templates/default/MainLayout.tsx +44 -0
  54. package/lib/View/Templates/errors/404.tsx +13 -0
  55. package/lib/View/Templates/errors/500.tsx +13 -0
  56. package/lib/View/Templates/errors/ErrorLayout.tsx +112 -0
  57. package/lib/View/Templates/messages/Maintenance.tsx +17 -0
  58. package/lib/View/Templates/messages/MessageLayout.tsx +136 -0
  59. package/lib/index.js +57 -0
  60. package/package.json +47 -0
  61. package/skeleton/.env.example +26 -0
  62. package/skeleton/app/Controllers/HomeController.js +9 -0
  63. package/skeleton/app/Kernel.js +11 -0
  64. package/skeleton/app/Middlewares/Authentication.js +9 -0
  65. package/skeleton/app/Middlewares/Guest.js +9 -0
  66. package/skeleton/app/Middlewares/VerifyCsrf.js +24 -0
  67. package/skeleton/app/Models/User.js +7 -0
  68. package/skeleton/config/app.js +4 -0
  69. package/skeleton/config/auth.js +16 -0
  70. package/skeleton/config/database.js +27 -0
  71. package/skeleton/config/hash.js +3 -0
  72. package/skeleton/config/server.js +28 -0
  73. package/skeleton/config/session.js +21 -0
  74. package/skeleton/database/migrations/2025_01_01_00_00_users.js +20 -0
  75. package/skeleton/database/seeders/UserSeeder.js +15 -0
  76. package/skeleton/globals.d.ts +1 -0
  77. package/skeleton/package.json +24 -0
  78. package/skeleton/public/.gitkeep +0 -0
  79. package/skeleton/resources/css/.gitkeep +0 -0
  80. package/skeleton/resources/langs/.gitkeep +0 -0
  81. package/skeleton/resources/views/Site/Home.tsx +66 -0
  82. package/skeleton/routes/web.js +4 -0
  83. package/skeleton/storage/app/private/.gitkeep +0 -0
  84. package/skeleton/storage/app/public/.gitkeep +0 -0
  85. package/skeleton/storage/framework/sessions/.gitkeep +0 -0
  86. package/skeleton/storage/logs/.gitkeep +0 -0
  87. package/skeleton/tsconfig.json +33 -0
@@ -0,0 +1,262 @@
1
+ import MainLayout from "./MainLayout";
2
+
3
+ type HomeProps = {
4
+ name: string;
5
+ };
6
+
7
+ export default function Home({ name }: HomeProps) {
8
+ return (
9
+ <MainLayout title="Welcome to NitronJS">
10
+ <main style={{
11
+ flex: '1',
12
+ display: 'flex',
13
+ flexDirection: 'column',
14
+ justifyContent: 'center',
15
+ alignItems: 'center',
16
+ padding: '5rem 2rem',
17
+ textAlign: 'center',
18
+ position: 'relative'
19
+ }}>
20
+ {/* Animated gradient orb */}
21
+ <div style={{
22
+ position: 'absolute',
23
+ top: '20%',
24
+ left: '50%',
25
+ transform: 'translate(-50%, -50%)',
26
+ width: '500px',
27
+ height: '500px',
28
+ background: 'radial-gradient(circle, rgba(0,112,243,0.15) 0%, transparent 70%)',
29
+ borderRadius: '50%',
30
+ filter: 'blur(60px)',
31
+ pointerEvents: 'none',
32
+ zIndex: '0'
33
+ }} />
34
+
35
+ <div style={{ position: 'relative', zIndex: '1' }}>
36
+ <h1 style={{
37
+ fontSize: '5rem',
38
+ fontWeight: '800',
39
+ margin: '0 0 1.5rem 0',
40
+ lineHeight: '1.1',
41
+ letterSpacing: '-0.03em'
42
+ }}>
43
+ Welcome to{' '}
44
+ <span style={{
45
+ background: 'linear-gradient(90deg, #0070f3 0%, #00d4ff 100%)',
46
+ WebkitBackgroundClip: 'text',
47
+ WebkitTextFillColor: 'transparent',
48
+ backgroundClip: 'text',
49
+ position: 'relative'
50
+ }}>NitronJS!</span>
51
+ </h1>
52
+
53
+ <p style={{
54
+ fontSize: '1.25rem',
55
+ color: '#888',
56
+ maxWidth: '600px',
57
+ margin: '0 auto 3rem',
58
+ lineHeight: '1.6'
59
+ }}>
60
+ The modern JavaScript framework for building fast, scalable applications
61
+ </p>
62
+
63
+ <div style={{
64
+ display: 'flex',
65
+ gap: '1rem',
66
+ justifyContent: 'center',
67
+ flexWrap: 'wrap',
68
+ marginBottom: '4rem'
69
+ }}>
70
+ <a href="#" style={{
71
+ padding: '0.875rem 2rem',
72
+ background: '#0070f3',
73
+ color: '#fff',
74
+ borderRadius: '8px',
75
+ textDecoration: 'none',
76
+ fontWeight: '600',
77
+ fontSize: '1rem',
78
+ border: 'none',
79
+ transition: 'all 0.2s ease',
80
+ cursor: 'pointer'
81
+ }}>
82
+ Get Started →
83
+ </a>
84
+ <a href="#" style={{
85
+ padding: '0.875rem 2rem',
86
+ background: 'transparent',
87
+ color: '#fff',
88
+ borderRadius: '8px',
89
+ textDecoration: 'none',
90
+ fontWeight: '600',
91
+ fontSize: '1rem',
92
+ border: '1px solid #333',
93
+ transition: 'all 0.2s ease',
94
+ cursor: 'pointer'
95
+ }}>
96
+ Documentation
97
+ </a>
98
+ </div>
99
+
100
+ <div style={{
101
+ display: 'grid',
102
+ gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',
103
+ gap: '1.5rem',
104
+ maxWidth: '1000px',
105
+ margin: '0 auto 3rem'
106
+ }}>
107
+ <div style={{
108
+ padding: '2rem',
109
+ background: 'rgba(255, 255, 255, 0.03)',
110
+ border: '1px solid rgba(255, 255, 255, 0.1)',
111
+ borderRadius: '12px',
112
+ textAlign: 'left',
113
+ transition: 'all 0.3s ease'
114
+ }}>
115
+ <div style={{
116
+ fontSize: '2rem',
117
+ marginBottom: '1rem',
118
+ display: 'inline-block',
119
+ padding: '0.75rem',
120
+ background: 'rgba(0, 112, 243, 0.1)',
121
+ borderRadius: '10px'
122
+ }}>⚡</div>
123
+ <h3 style={{
124
+ fontSize: '1.25rem',
125
+ fontWeight: '600',
126
+ marginBottom: '0.75rem',
127
+ color: '#fff'
128
+ }}>Lightning Fast</h3>
129
+ <p style={{
130
+ fontSize: '0.95rem',
131
+ color: '#888',
132
+ lineHeight: '1.6',
133
+ margin: '0'
134
+ }}>Optimized for performance with modern JavaScript and SSR capabilities</p>
135
+ </div>
136
+
137
+ <div style={{
138
+ padding: '2rem',
139
+ background: 'rgba(255, 255, 255, 0.03)',
140
+ border: '1px solid rgba(255, 255, 255, 0.1)',
141
+ borderRadius: '12px',
142
+ textAlign: 'left',
143
+ transition: 'all 0.3s ease'
144
+ }}>
145
+ <div style={{
146
+ fontSize: '2rem',
147
+ marginBottom: '1rem',
148
+ display: 'inline-block',
149
+ padding: '0.75rem',
150
+ background: 'rgba(0, 212, 255, 0.1)',
151
+ borderRadius: '10px'
152
+ }}>🔧</div>
153
+ <h3 style={{
154
+ fontSize: '1.25rem',
155
+ fontWeight: '600',
156
+ marginBottom: '0.75rem',
157
+ color: '#fff'
158
+ }}>Developer First</h3>
159
+ <p style={{
160
+ fontSize: '0.95rem',
161
+ color: '#888',
162
+ lineHeight: '1.6',
163
+ margin: '0'
164
+ }}>Intuitive API design with TypeScript support for rapid development</p>
165
+ </div>
166
+
167
+ <div style={{
168
+ padding: '2rem',
169
+ background: 'rgba(255, 255, 255, 0.03)',
170
+ border: '1px solid rgba(255, 255, 255, 0.1)',
171
+ borderRadius: '12px',
172
+ textAlign: 'left',
173
+ transition: 'all 0.3s ease'
174
+ }}>
175
+ <div style={{
176
+ fontSize: '2rem',
177
+ marginBottom: '1rem',
178
+ display: 'inline-block',
179
+ padding: '0.75rem',
180
+ background: 'rgba(0, 112, 243, 0.1)',
181
+ borderRadius: '10px'
182
+ }}>🚀</div>
183
+ <h3 style={{
184
+ fontSize: '1.25rem',
185
+ fontWeight: '600',
186
+ marginBottom: '0.75rem',
187
+ color: '#fff'
188
+ }}>Production Ready</h3>
189
+ <p style={{
190
+ fontSize: '0.95rem',
191
+ color: '#888',
192
+ lineHeight: '1.6',
193
+ margin: '0'
194
+ }}>Built-in routing, authentication, and database ORM out of the box</p>
195
+ </div>
196
+ </div>
197
+
198
+ <div style={{
199
+ padding: '2rem',
200
+ background: 'rgba(255, 255, 255, 0.02)',
201
+ border: '1px solid rgba(255, 255, 255, 0.1)',
202
+ borderRadius: '12px',
203
+ maxWidth: '700px',
204
+ margin: '0 auto',
205
+ textAlign: 'left'
206
+ }}>
207
+ <div style={{
208
+ display: 'flex',
209
+ alignItems: 'center',
210
+ justifyContent: 'space-between',
211
+ marginBottom: '1rem'
212
+ }}>
213
+ <span style={{
214
+ fontSize: '0.875rem',
215
+ color: '#666',
216
+ fontFamily: 'Monaco, Courier, monospace'
217
+ }}>terminal</span>
218
+ <div style={{
219
+ display: 'flex',
220
+ gap: '0.5rem'
221
+ }}>
222
+ <div style={{ width: '12px', height: '12px', borderRadius: '50%', background: '#ff5f56' }} />
223
+ <div style={{ width: '12px', height: '12px', borderRadius: '50%', background: '#ffbd2e' }} />
224
+ <div style={{ width: '12px', height: '12px', borderRadius: '50%', background: '#27c93f' }} />
225
+ </div>
226
+ </div>
227
+ <code style={{
228
+ display: 'block',
229
+ background: 'rgba(0, 0, 0, 0.5)',
230
+ color: '#4ade80',
231
+ padding: '1.25rem',
232
+ borderRadius: '8px',
233
+ fontSize: '0.95rem',
234
+ fontFamily: 'Monaco, Courier, monospace',
235
+ border: '1px solid rgba(255, 255, 255, 0.05)'
236
+ }}>
237
+ <span style={{ color: '#666' }}>$</span> npm create nitronjs-app my-app
238
+ </code>
239
+ </div>
240
+ </div>
241
+ </main>
242
+
243
+ <footer style={{
244
+ borderTop: '1px solid #1a1a1a',
245
+ width: '100%',
246
+ display: 'flex',
247
+ justifyContent: 'center',
248
+ alignItems: 'center',
249
+ padding: '2rem 0',
250
+ fontSize: '0.875rem',
251
+ color: '#666'
252
+ }}>
253
+ <span>Powered by{' '}
254
+ <span style={{
255
+ fontWeight: '600',
256
+ color: '#fff'
257
+ }}>NitronJS</span>
258
+ </span>
259
+ </footer>
260
+ </MainLayout>
261
+ );
262
+ }
@@ -0,0 +1,44 @@
1
+ import React from "react";
2
+
3
+ export default function MainLayout({ title, children }: { title: string; children: React.ReactNode }) {
4
+ return (
5
+ <html lang="en">
6
+ <head>
7
+ <meta charSet="utf-8" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
9
+ <title>{title}</title>
10
+ <style dangerouslySetInnerHTML={{ __html: `
11
+ * {
12
+ margin: 0;
13
+ padding: 0;
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ body {
18
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
19
+ -webkit-font-smoothing: antialiased;
20
+ -moz-osx-font-smoothing: grayscale;
21
+ background: #000;
22
+ min-height: 100vh;
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: center;
26
+ justify-content: center;
27
+ color: #fff;
28
+ margin: 0;
29
+ padding: 0;
30
+ }
31
+
32
+ #app {
33
+ width: 100%;
34
+ max-width: 1200px;
35
+ padding: 2rem;
36
+ }
37
+ `}}></style>
38
+ </head>
39
+ <body>
40
+ <div id="app">{children}</div>
41
+ </body>
42
+ </html>
43
+ );
44
+ }
@@ -0,0 +1,13 @@
1
+ import ErrorLayout from "./ErrorLayout";
2
+
3
+ export default function Error404() {
4
+ return (
5
+ <ErrorLayout title="404 – Not Found">
6
+ <div>
7
+ <h1>404</h1>
8
+ <p>The page you're looking for can't be found.</p>
9
+ <p className="subtitle" style={{ marginTop: 16 }}>Check the URL and try again.</p>
10
+ </div>
11
+ </ErrorLayout>
12
+ );
13
+ }
@@ -0,0 +1,13 @@
1
+ import ErrorLayout from "./ErrorLayout";
2
+
3
+ export default function Error500({ message }: { message?: string }) {
4
+ return (
5
+ <ErrorLayout title="500 – Server Error">
6
+ <div>
7
+ <h1>500</h1>
8
+ <p>An unexpected server error occurred.</p>
9
+ <p className="subtitle" style={{ marginTop: 16 }}>Please try again later.</p>
10
+ </div>
11
+ </ErrorLayout>
12
+ );
13
+ }
@@ -0,0 +1,112 @@
1
+ export default function SystemLayout({ title, children }: { title: string; children: React.ReactNode }) {
2
+ return (
3
+ <html lang="en">
4
+ <head>
5
+ <meta charSet="utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <title>{title}</title>
8
+ <style dangerouslySetInnerHTML={{ __html: `
9
+ * {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ body {
14
+ margin: 0;
15
+ min-height: 100vh;
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ background: #000000;
20
+ color: #f5f5f7;
21
+ font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
22
+ -webkit-font-smoothing: antialiased;
23
+ -moz-osx-font-smoothing: grayscale;
24
+ padding: 40px 20px;
25
+ }
26
+
27
+ .container {
28
+ max-width: 580px;
29
+ width: 100%;
30
+ text-align: center;
31
+ }
32
+
33
+ h1 {
34
+ margin: 0 0 20px;
35
+ font-size: 96px;
36
+ font-weight: 600;
37
+ letter-spacing: -0.015em;
38
+ color: #f5f5f7;
39
+ line-height: 1;
40
+ background: linear-gradient(135deg, #f5f5f7 0%, #98989d 100%);
41
+ -webkit-background-clip: text;
42
+ -webkit-text-fill-color: transparent;
43
+ background-clip: text;
44
+ }
45
+
46
+ p {
47
+ margin: 0;
48
+ font-size: 21px;
49
+ line-height: 1.381;
50
+ font-weight: 400;
51
+ color: #f5f5f7;
52
+ letter-spacing: 0.011em;
53
+ }
54
+
55
+ .subtitle {
56
+ margin-top: 8px;
57
+ font-size: 17px;
58
+ line-height: 1.47059;
59
+ color: #98989d;
60
+ font-weight: 400;
61
+ letter-spacing: -0.022em;
62
+ }
63
+
64
+ .error-message {
65
+ margin-top: 32px;
66
+ padding: 16px 20px;
67
+ background: #1c1c1e;
68
+ border: 1px solid #38383a;
69
+ border-radius: 12px;
70
+ font-size: 15px;
71
+ line-height: 1.4667;
72
+ color: #a1a1a6;
73
+ text-align: left;
74
+ word-break: break-word;
75
+ font-weight: 400;
76
+ letter-spacing: -0.016em;
77
+ }
78
+
79
+ .divider {
80
+ height: 1px;
81
+ margin: 64px auto;
82
+ max-width: 300px;
83
+ background: linear-gradient(90deg, transparent, #38383a 20%, #38383a 80%, transparent);
84
+ }
85
+
86
+ .brand {
87
+ font-size: 12px;
88
+ color: #636366;
89
+ font-weight: 400;
90
+ letter-spacing: -0.01em;
91
+ }
92
+
93
+ @media (max-width: 734px) {
94
+ h1 {
95
+ font-size: 64px;
96
+ }
97
+ p {
98
+ font-size: 19px;
99
+ }
100
+ }
101
+ `}}></style>
102
+ </head>
103
+ <body>
104
+ <div className="container">
105
+ {children}
106
+ <div className="divider"></div>
107
+ <div className="brand">NitronJS</div>
108
+ </div>
109
+ </body>
110
+ </html>
111
+ );
112
+ }
@@ -0,0 +1,17 @@
1
+ import MessageLayout from "./MessageLayout";
2
+
3
+ export default function Maintenance() {
4
+ return (
5
+ <MessageLayout title="Under Maintenance">
6
+ <div className="icon">
7
+ <svg viewBox="0 0 24 24">
8
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
9
+ </svg>
10
+ </div>
11
+ <h1>Under Maintenance</h1>
12
+ <p>We're making improvements to serve you better.</p>
13
+ <p className="subtitle">We'll be back online shortly. Thank you for your patience.</p>
14
+ <div className="info-box">Our team is working to enhance your experience. Check back soon.</div>
15
+ </MessageLayout>
16
+ );
17
+ }
@@ -0,0 +1,136 @@
1
+ export default function MessageLayout({ title, children }: { title: string; children: React.ReactNode }) {
2
+ return (
3
+ <html lang="en">
4
+ <head>
5
+ <meta charSet="utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <title>{title}</title>
8
+ <style dangerouslySetInnerHTML={{ __html: `
9
+ * {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ body {
14
+ margin: 0;
15
+ min-height: 100vh;
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ background: #fbfbfd;
20
+ color: #1d1d1f;
21
+ font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
22
+ -webkit-font-smoothing: antialiased;
23
+ -moz-osx-font-smoothing: grayscale;
24
+ padding: 40px 20px;
25
+ }
26
+
27
+ .container {
28
+ max-width: 580px;
29
+ width: 100%;
30
+ text-align: center;
31
+ }
32
+
33
+ .icon {
34
+ width: 80px;
35
+ height: 80px;
36
+ margin: 0 auto 32px;
37
+ border-radius: 50%;
38
+ background: linear-gradient(135deg, #007aff 0%, #0051d5 100%);
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ box-shadow: 0 8px 24px rgba(0, 122, 255, 0.25);
43
+ }
44
+
45
+ .icon svg {
46
+ width: 40px;
47
+ height: 40px;
48
+ stroke: white;
49
+ fill: none;
50
+ stroke-width: 2;
51
+ stroke-linecap: round;
52
+ stroke-linejoin: round;
53
+ }
54
+
55
+ h1 {
56
+ margin: 0 0 16px;
57
+ font-size: 48px;
58
+ font-weight: 600;
59
+ letter-spacing: -0.015em;
60
+ color: #1d1d1f;
61
+ line-height: 1.08;
62
+ }
63
+
64
+ p {
65
+ margin: 0;
66
+ font-size: 21px;
67
+ line-height: 1.381;
68
+ font-weight: 400;
69
+ color: #1d1d1f;
70
+ letter-spacing: 0.011em;
71
+ }
72
+
73
+ .subtitle {
74
+ margin-top: 12px;
75
+ font-size: 17px;
76
+ line-height: 1.47059;
77
+ color: #86868b;
78
+ font-weight: 400;
79
+ letter-spacing: -0.022em;
80
+ }
81
+
82
+ .info-box {
83
+ margin-top: 40px;
84
+ padding: 20px 24px;
85
+ background: #f5f5f7;
86
+ border-radius: 12px;
87
+ font-size: 15px;
88
+ line-height: 1.4667;
89
+ color: #6e6e73;
90
+ text-align: center;
91
+ font-weight: 400;
92
+ letter-spacing: -0.016em;
93
+ }
94
+
95
+ .divider {
96
+ height: 1px;
97
+ margin: 64px auto;
98
+ max-width: 300px;
99
+ background: linear-gradient(90deg, transparent, #d2d2d7 20%, #d2d2d7 80%, transparent);
100
+ }
101
+
102
+ .brand {
103
+ font-size: 12px;
104
+ color: #86868b;
105
+ font-weight: 400;
106
+ letter-spacing: -0.01em;
107
+ }
108
+
109
+ @media (max-width: 734px) {
110
+ h1 {
111
+ font-size: 40px;
112
+ }
113
+ p {
114
+ font-size: 19px;
115
+ }
116
+ .icon {
117
+ width: 64px;
118
+ height: 64px;
119
+ }
120
+ .icon svg {
121
+ width: 32px;
122
+ height: 32px;
123
+ }
124
+ }
125
+ `}}></style>
126
+ </head>
127
+ <body>
128
+ <div className="container">
129
+ {children}
130
+ <div className="divider"></div>
131
+ <div className="brand">NitronJS</div>
132
+ </div>
133
+ </body>
134
+ </html>
135
+ );
136
+ }
package/lib/index.js ADDED
@@ -0,0 +1,57 @@
1
+ // Core
2
+ export { default as Config } from "./Core/Config.js";
3
+ export { default as Paths } from "./Core/Paths.js";
4
+ export { default as Environment } from "./Core/Environment.js";
5
+
6
+ // Http
7
+ export { default as Server } from "./Http/Server.js";
8
+ export { start } from "./Runtime/Entry.js";
9
+
10
+ // Routing
11
+ export { default as Route } from "./Route/Manager.js";
12
+
13
+ // Database
14
+ export { default as DB } from "./Database/DB.js";
15
+ export { default as Model } from "./Database/Model.js";
16
+ export { default as Schema } from "./Database/Schema/Manager.js";
17
+ export { default as DatabaseManager } from "./Database/Manager.js";
18
+
19
+ // Authentication
20
+ export { default as Auth } from "./Auth/Manager.js";
21
+
22
+ // Session
23
+ export { default as Session } from "./Session/Session.js";
24
+ export { default as SessionManager } from "./Session/Manager.js";
25
+
26
+ // View
27
+ export { default as View } from "./View/Manager.js";
28
+
29
+ // Hashing
30
+ export { default as Hash } from "./Hashing/Manager.js";
31
+
32
+ // Logging
33
+ export { default as Log } from "./Logging/Manager.js";
34
+
35
+ // Filesystem
36
+ export { default as Storage } from "./Filesystem/Manager.js";
37
+
38
+ // Mail
39
+ export { default as Mail } from "./Mail/Manager.js";
40
+
41
+ // Encryption
42
+ export { default as AES } from "./Encryption/Manager.js";
43
+
44
+ // Validation
45
+ export { default as Validator } from "./Validation/Validator.js";
46
+
47
+ // Translation
48
+ export { default as Lang } from "./Translation/Manager.js";
49
+
50
+ // Date
51
+ export { default as DateTime } from "./Date/DateTime.js";
52
+
53
+ // Support
54
+ export { default as Str } from "./Support/Str.js";
55
+
56
+ // Backward Compatibility Aliases
57
+ export { default as Enviroment } from "./Core/Environment.js";