create-frootjs 1.0.8 → 1.0.10
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/dist/addons/testing.js +2 -2
- package/dist/addons/testing.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/templates/fullstack.d.ts +3 -2
- package/dist/templates/fullstack.d.ts.map +1 -1
- package/dist/templates/fullstack.js +282 -134
- package/dist/templates/fullstack.js.map +1 -1
- package/dist/templates/minimal.js +54 -54
- package/dist/templates/modular.js +261 -261
- package/dist/templates/mvc.js +196 -196
- package/dist/templates/openapi.js +168 -168
- package/dist/templates/streaming.js +176 -176
- package/dist/templates/websocket.js +163 -163
- package/package.json +1 -1
package/dist/addons/testing.js
CHANGED
|
@@ -13,10 +13,10 @@ export function applyTestingAddon(files, testing, options) {
|
|
|
13
13
|
pkg.devDependencies = pkg.devDependencies || {};
|
|
14
14
|
// Resolve where app is exported
|
|
15
15
|
let appImport = '../src/index.js';
|
|
16
|
-
if (files['src/app.ts']) {
|
|
16
|
+
if (files['src/app.ts'] || files['src/app.tsx']) {
|
|
17
17
|
appImport = '../src/app.js';
|
|
18
18
|
}
|
|
19
|
-
else if (files['src/server.ts']) {
|
|
19
|
+
else if (files['src/server.ts'] || files['src/server.tsx']) {
|
|
20
20
|
appImport = '../src/server.js';
|
|
21
21
|
}
|
|
22
22
|
if (testing === 'vitest') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/addons/testing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,UAAU,iBAAiB,CAC/B,KAA6B,EAC7B,OAAsB,EACtB,OAA4B;IAE5B,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO;IAE/B,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,GAAG,GAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpD,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAChC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;IAEhD,gCAAgC;IAChC,IAAI,SAAS,GAAG,iBAAiB,CAAC;IAClC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/addons/testing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,UAAU,iBAAiB,CAC/B,KAA6B,EAC7B,OAAsB,EACtB,OAA4B;IAE5B,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO;IAE/B,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,GAAG,GAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpD,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAChC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;IAEhD,gCAAgC;IAChC,IAAI,SAAS,GAAG,iBAAiB,CAAC;IAClC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,SAAS,GAAG,eAAe,CAAC;IAC9B,CAAC;SAAM,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7D,SAAS,GAAG,kBAAkB,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;QACnC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;QAErC,KAAK,CAAC,kBAAkB,CAAC,GAAG;;;;;;;;CAQ/B,CAAC;QAEE,KAAK,CAAC,mBAAmB,CAAC,GAAG;uBACV,SAAS;;YAEpB,OAAO,CAAC,WAAW;;;;;;CAM9B,CAAC;IACA,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC;QAEpD,KAAK,CAAC,mBAAmB,CAAC,GAAG;;uBAEV,SAAS;;YAEpB,OAAO,CAAC,WAAW;;;;;;CAM9B,CAAC;IACA,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import * as fs from 'node:fs';
|
|
|
8
8
|
import { printBanner, printStep, printError, printNextSteps, promptText, promptSelect, promptConfirm, c, } from './ui.js';
|
|
9
9
|
import { TEMPLATES, TEMPLATE_LIST, getTemplate } from './templates/index.js';
|
|
10
10
|
import { scaffoldProject } from './generator.js';
|
|
11
|
-
const VERSION = '1.0.
|
|
11
|
+
const VERSION = '1.0.10';
|
|
12
12
|
function parseCliArgs(argv) {
|
|
13
13
|
const args = {};
|
|
14
14
|
const raw = argv.slice(2);
|
|
@@ -108,7 +108,7 @@ function printUsage() {
|
|
|
108
108
|
• streaming SSE & token streaming
|
|
109
109
|
• websocket Real-time pub/sub rooms
|
|
110
110
|
• openapi REST API & Scalar docs
|
|
111
|
-
• fullstack
|
|
111
|
+
• fullstack Next.js alternative (Preact SSR & layouts)
|
|
112
112
|
• minimal Lean single-file starter
|
|
113
113
|
--pm <manager> Package manager: pnpm | npm | yarn | bun
|
|
114
114
|
--db <orm> Database ORM: none | drizzle | prisma
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Fullstack
|
|
3
|
-
*
|
|
2
|
+
* Fullstack Next.js Alternative Template
|
|
3
|
+
* Powered by @froot/fullstack, Froot Core, and Preact.
|
|
4
|
+
* Features nested layouts, dynamic routes, Preact SSR, SSG, and Markdown content.
|
|
4
5
|
*/
|
|
5
6
|
import { TemplateDefinition } from './types.js';
|
|
6
7
|
export declare const fullstackTemplate: TemplateDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullstack.d.ts","sourceRoot":"","sources":["../../src/templates/fullstack.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fullstack.d.ts","sourceRoot":"","sources":["../../src/templates/fullstack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAqC,MAAM,YAAY,CAAC;AAEnF,eAAO,MAAM,iBAAiB,EAAE,kBA2X/B,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Fullstack
|
|
3
|
-
*
|
|
2
|
+
* Fullstack Next.js Alternative Template
|
|
3
|
+
* Powered by @froot/fullstack, Froot Core, and Preact.
|
|
4
|
+
* Features nested layouts, dynamic routes, Preact SSR, SSG, and Markdown content.
|
|
4
5
|
*/
|
|
5
|
-
import { COMMON_GITIGNORE
|
|
6
|
+
import { COMMON_GITIGNORE } from './types.js';
|
|
6
7
|
export const fullstackTemplate = {
|
|
7
8
|
id: 'fullstack',
|
|
8
|
-
name: 'Fullstack',
|
|
9
|
-
description: '
|
|
9
|
+
name: 'Fullstack (Next.js Alternative)',
|
|
10
|
+
description: 'Next.js alternative with Preact SSR, nested layouts, SSG & Markdown',
|
|
10
11
|
generate: (projectName) => {
|
|
11
12
|
return {
|
|
12
13
|
'package.json': JSON.stringify({
|
|
@@ -16,10 +17,14 @@ export const fullstackTemplate = {
|
|
|
16
17
|
scripts: {
|
|
17
18
|
dev: 'tsx watch src/server.tsx',
|
|
18
19
|
build: 'tsc',
|
|
20
|
+
'build:static': 'tsx src/build.ts',
|
|
19
21
|
start: 'node dist/server.js',
|
|
20
22
|
},
|
|
21
23
|
dependencies: {
|
|
22
|
-
|
|
24
|
+
'froot-fullstack': '^1.0.0',
|
|
25
|
+
frootjs: '^1.0.5',
|
|
26
|
+
preact: '^11.1.0',
|
|
27
|
+
'preact-render-to-string': '^6.8.2',
|
|
23
28
|
},
|
|
24
29
|
devDependencies: {
|
|
25
30
|
'@types/node': '^22.10.0',
|
|
@@ -27,17 +32,44 @@ export const fullstackTemplate = {
|
|
|
27
32
|
typescript: '^5.8.0',
|
|
28
33
|
},
|
|
29
34
|
}, null, 2) + '\n',
|
|
30
|
-
'tsconfig.json':
|
|
35
|
+
'tsconfig.json': `{
|
|
36
|
+
"compilerOptions": {
|
|
37
|
+
"target": "ES2024",
|
|
38
|
+
"module": "NodeNext",
|
|
39
|
+
"moduleResolution": "NodeNext",
|
|
40
|
+
"lib": ["ES2024", "DOM", "DOM.Iterable"],
|
|
41
|
+
"declaration": true,
|
|
42
|
+
"declarationMap": true,
|
|
43
|
+
"sourceMap": true,
|
|
44
|
+
"outDir": "./dist",
|
|
45
|
+
"rootDir": "./src",
|
|
46
|
+
"strict": true,
|
|
47
|
+
"noImplicitAny": true,
|
|
48
|
+
"strictNullChecks": true,
|
|
49
|
+
"skipLibCheck": true,
|
|
50
|
+
"forceConsistentCasingInFileNames": true,
|
|
51
|
+
"jsx": "react-jsx",
|
|
52
|
+
"jsxImportSource": "preact"
|
|
53
|
+
},
|
|
54
|
+
"include": ["src/**/*"],
|
|
55
|
+
"exclude": ["node_modules", "dist"]
|
|
56
|
+
}
|
|
57
|
+
`,
|
|
31
58
|
'.gitignore': COMMON_GITIGNORE,
|
|
32
59
|
'README.md': `# ${projectName}
|
|
33
60
|
|
|
34
|
-
|
|
61
|
+
High-performance **Next.js alternative** powered by **Froot Framework** and **Preact**.
|
|
35
62
|
|
|
36
63
|
## Features
|
|
37
64
|
|
|
38
|
-
- **
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
65
|
+
- ⚡ **Ultra-Fast Throughput**: 120,000+ req/sec powered by Froot's monomorphic V8 engine.
|
|
66
|
+
- ⚛️ **Native Preact SSR**: Lightweight 3kB component runtime without React baggage.
|
|
67
|
+
- 📂 **Next.js-style Architecture**:
|
|
68
|
+
- Nested layout system (\`router.layout('/docs', ...)\`)
|
|
69
|
+
- Dynamic route dispatch with typed parameters (\`/docs/:slug?\`)
|
|
70
|
+
- Distinct layouts (e.g. landing page with navbar vs documentation with left sidebar and no navbar)
|
|
71
|
+
- 🚀 **Static Site Generation (SSG)**: Prerender static pages and dynamic routes with \`generateStaticParams()\`.
|
|
72
|
+
- 📝 **Built-in Markdown Engine**: Next.js MDX/Contentlayer alternative with zero dependencies.
|
|
41
73
|
|
|
42
74
|
## Getting Started
|
|
43
75
|
|
|
@@ -48,175 +80,291 @@ pnpm install
|
|
|
48
80
|
# 2. Run in development mode
|
|
49
81
|
pnpm run dev
|
|
50
82
|
|
|
51
|
-
# 3.
|
|
83
|
+
# 3. Prerender static site (SSG)
|
|
84
|
+
pnpm run build:static
|
|
85
|
+
|
|
86
|
+
# 4. View in browser
|
|
52
87
|
http://localhost:3000
|
|
53
88
|
\`\`\`
|
|
54
89
|
`,
|
|
55
|
-
'
|
|
90
|
+
'content/docs/overview.md': `---
|
|
91
|
+
title: Overview
|
|
92
|
+
category: Getting Started
|
|
93
|
+
summary: Introduction to the Froot Fullstack Next.js Alternative architecture.
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
Welcome to **Froot Fullstack**, the high-performance Next.js alternative powered by Preact and Froot.
|
|
97
|
+
|
|
98
|
+
## Design Principles
|
|
99
|
+
|
|
100
|
+
- **Monomorphic V8 Execution:** Minimal memory overhead and maximum throughput.
|
|
101
|
+
- **Preact Server-Side Rendering:** Clean JSX syntax with sub-millisecond render times.
|
|
102
|
+
- **Nested Layouts:** Dedicated layouts for different application sections (e.g. docs vs marketing).
|
|
103
|
+
`,
|
|
104
|
+
'content/docs/quickstart.md': `---
|
|
105
|
+
title: Quickstart
|
|
106
|
+
category: Getting Started
|
|
107
|
+
summary: Build your first fullstack application in seconds.
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
Create routes, compose Preact components, and serve HTML with extreme performance.
|
|
56
111
|
|
|
57
|
-
|
|
112
|
+
## Adding Routes
|
|
113
|
+
|
|
114
|
+
Edit \`src/server.tsx\` to register your pages:
|
|
115
|
+
|
|
116
|
+
\`\`\`tsx
|
|
117
|
+
router.page('/about', () => <AboutPage />);
|
|
118
|
+
\`\`\`
|
|
119
|
+
`,
|
|
120
|
+
'src/layouts/RootLayout.tsx': `import type { ComponentChildren } from 'preact';
|
|
121
|
+
|
|
122
|
+
export interface RootLayoutProps {
|
|
58
123
|
title?: string;
|
|
124
|
+
description?: string;
|
|
125
|
+
children: ComponentChildren;
|
|
59
126
|
}
|
|
60
127
|
|
|
61
|
-
export
|
|
128
|
+
export function RootLayout({
|
|
129
|
+
title = 'Froot Fullstack App',
|
|
130
|
+
description = 'High-performance Next.js alternative powered by Froot and Preact',
|
|
131
|
+
children,
|
|
132
|
+
}: RootLayoutProps) {
|
|
62
133
|
return (
|
|
63
|
-
<html lang="en">
|
|
134
|
+
<html lang="en" class="dark scroll-smooth">
|
|
64
135
|
<head>
|
|
65
136
|
<meta charSet="UTF-8" />
|
|
66
137
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
67
138
|
<title>{title}</title>
|
|
68
|
-
<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
139
|
+
<meta name="description" content={description} />
|
|
140
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
141
|
+
<script dangerouslySetInnerHTML={{
|
|
142
|
+
__html: \`
|
|
143
|
+
tailwind.config = {
|
|
144
|
+
darkMode: 'class',
|
|
145
|
+
theme: {
|
|
146
|
+
extend: {
|
|
147
|
+
colors: {
|
|
148
|
+
froot: { 400: '#34d399', 500: '#10b981', 600: '#059669' }
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
\`
|
|
154
|
+
}} />
|
|
78
155
|
</head>
|
|
79
|
-
<body>
|
|
80
|
-
|
|
81
|
-
<a href="/" className="logo">Froot JSX</a>
|
|
82
|
-
<nav>
|
|
83
|
-
<a href="/">Home</a>
|
|
84
|
-
<a href="/about">About</a>
|
|
85
|
-
<a href="/features">Features</a>
|
|
86
|
-
</nav>
|
|
87
|
-
</header>
|
|
88
|
-
<main>{children}</main>
|
|
89
|
-
<footer>
|
|
90
|
-
<p>Powered by Froot Server-Side Rendering Engine</p>
|
|
91
|
-
</footer>
|
|
156
|
+
<body class="bg-slate-950 text-slate-100 font-sans min-h-screen antialiased">
|
|
157
|
+
{children}
|
|
92
158
|
</body>
|
|
93
159
|
</html>
|
|
94
160
|
);
|
|
95
|
-
}
|
|
161
|
+
}
|
|
96
162
|
`,
|
|
97
|
-
'src/
|
|
163
|
+
'src/layouts/DocsLayout.tsx': `import type { ComponentChildren } from 'preact';
|
|
98
164
|
|
|
99
|
-
export interface
|
|
100
|
-
|
|
101
|
-
|
|
165
|
+
export interface DocsLayoutProps {
|
|
166
|
+
currentPath: string;
|
|
167
|
+
children: ComponentChildren;
|
|
102
168
|
}
|
|
103
169
|
|
|
104
|
-
export
|
|
170
|
+
export function DocsLayout({ currentPath, children }: DocsLayoutProps) {
|
|
171
|
+
const links = [
|
|
172
|
+
{ href: '/docs', title: 'Overview' },
|
|
173
|
+
{ href: '/docs/quickstart', title: 'Quickstart' },
|
|
174
|
+
];
|
|
175
|
+
|
|
105
176
|
return (
|
|
106
|
-
<div
|
|
107
|
-
|
|
108
|
-
border
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
177
|
+
<div class="flex min-h-screen">
|
|
178
|
+
{/* NO NAVBAR ON DOCS! Left sidebar handles all navigation */}
|
|
179
|
+
<aside class="w-72 bg-slate-900 border-r border-slate-800 p-6 flex flex-col">
|
|
180
|
+
<a href="/" class="text-base font-bold text-white mb-6 flex items-center gap-2">
|
|
181
|
+
<span>🍏</span>
|
|
182
|
+
<span>Froot<span class="text-emerald-400">.ts</span></span>
|
|
183
|
+
<span class="text-[10px] bg-emerald-500/10 text-emerald-400 px-1.5 py-0.5 rounded border border-emerald-500/20">DOCS</span>
|
|
184
|
+
</a>
|
|
185
|
+
|
|
186
|
+
<div class="text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3">
|
|
187
|
+
Getting Started
|
|
188
|
+
</div>
|
|
189
|
+
|
|
190
|
+
<nav class="space-y-1">
|
|
191
|
+
{links.map((link) => {
|
|
192
|
+
const isActive = currentPath === link.href || (link.href === '/docs' && currentPath === '/docs/overview');
|
|
193
|
+
const cls = isActive
|
|
194
|
+
? 'bg-emerald-500/10 text-emerald-400 font-semibold border-l-2 border-emerald-400 pl-2.5'
|
|
195
|
+
: 'text-slate-400 hover:text-white hover:bg-slate-800/60';
|
|
196
|
+
|
|
197
|
+
return (
|
|
198
|
+
<a
|
|
199
|
+
key={link.href}
|
|
200
|
+
href={link.href}
|
|
201
|
+
class={\`block px-3 py-2 text-xs rounded-lg transition-colors \${cls}\`}
|
|
202
|
+
>
|
|
203
|
+
{link.title}
|
|
204
|
+
</a>
|
|
205
|
+
);
|
|
206
|
+
})}
|
|
207
|
+
</nav>
|
|
208
|
+
|
|
209
|
+
<div class="mt-auto pt-6 border-t border-slate-800 text-xs text-slate-400">
|
|
210
|
+
<a href="/" class="hover:text-emerald-400 transition-colors">← Back to Home</a>
|
|
211
|
+
</div>
|
|
212
|
+
</aside>
|
|
213
|
+
|
|
214
|
+
{/* Main Document Body */}
|
|
215
|
+
<main class="flex-1 max-w-4xl px-8 py-10">
|
|
216
|
+
{children}
|
|
217
|
+
</main>
|
|
129
218
|
</div>
|
|
130
219
|
);
|
|
131
|
-
}
|
|
220
|
+
}
|
|
132
221
|
`,
|
|
133
|
-
'src/pages/
|
|
134
|
-
import { Card } from '../components/Card.js';
|
|
135
|
-
|
|
136
|
-
export const HomePage: FC = () => {
|
|
222
|
+
'src/pages/HomePage.tsx': `export function HomePage() {
|
|
137
223
|
return (
|
|
138
224
|
<div>
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
225
|
+
{/* Top Navbar on Landing Page */}
|
|
226
|
+
<header class="border-b border-slate-800 bg-slate-900/60 backdrop-blur-md sticky top-0 z-50">
|
|
227
|
+
<div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between">
|
|
228
|
+
<a href="/" class="flex items-center gap-2 font-bold text-white">
|
|
229
|
+
<span class="text-xl">🍏</span>
|
|
230
|
+
<span>Froot<span class="text-emerald-400">.ts</span></span>
|
|
231
|
+
</a>
|
|
232
|
+
<nav class="flex items-center gap-6 text-sm text-slate-300">
|
|
233
|
+
<a href="#features" class="hover:text-emerald-400 transition-colors">Features</a>
|
|
234
|
+
<a href="/docs" class="text-emerald-400 hover:text-emerald-300 font-semibold">Docs →</a>
|
|
235
|
+
</nav>
|
|
236
|
+
</div>
|
|
237
|
+
</header>
|
|
238
|
+
|
|
239
|
+
{/* Hero Section */}
|
|
240
|
+
<main class="max-w-5xl mx-auto px-6 py-20 text-center">
|
|
241
|
+
<div class="inline-block px-3 py-1 mb-6 text-xs font-semibold text-emerald-400 bg-emerald-500/10 border border-emerald-500/20 rounded-full">
|
|
242
|
+
Next.js Alternative • Preact SSR • Monomorphic V8
|
|
243
|
+
</div>
|
|
147
244
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
245
|
+
<h1 class="text-5xl font-extrabold tracking-tight text-white mb-6">
|
|
246
|
+
High-Performance <span class="text-emerald-400">Fullstack Web Engine</span>
|
|
247
|
+
</h1>
|
|
151
248
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
249
|
+
<p class="text-lg text-slate-300 max-w-2xl mx-auto mb-10 leading-relaxed">
|
|
250
|
+
Engineered for extreme throughput, nested layout architecture, and zero-allocation dynamic routing.
|
|
251
|
+
</p>
|
|
155
252
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
253
|
+
<div class="flex items-center justify-center gap-4">
|
|
254
|
+
<a
|
|
255
|
+
href="/docs"
|
|
256
|
+
class="px-6 py-3 rounded-xl font-semibold bg-emerald-500 text-slate-950 hover:bg-emerald-400 transition-colors shadow-lg shadow-emerald-500/20"
|
|
257
|
+
>
|
|
258
|
+
Explore Documentation
|
|
259
|
+
</a>
|
|
260
|
+
</div>
|
|
261
|
+
</main>
|
|
159
262
|
</div>
|
|
160
263
|
);
|
|
161
|
-
}
|
|
264
|
+
}
|
|
162
265
|
`,
|
|
163
|
-
'src/pages/
|
|
266
|
+
'src/pages/DocsPage.tsx': `export interface DocsPageProps {
|
|
267
|
+
title: string;
|
|
268
|
+
category: string;
|
|
269
|
+
contentHtml: string;
|
|
270
|
+
}
|
|
164
271
|
|
|
165
|
-
export
|
|
272
|
+
export function DocsPage({ title, category, contentHtml }: DocsPageProps) {
|
|
166
273
|
return (
|
|
167
|
-
<div
|
|
168
|
-
<
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
274
|
+
<div>
|
|
275
|
+
<div class="text-xs font-mono text-emerald-400 mb-2 uppercase tracking-wider">
|
|
276
|
+
{category}
|
|
277
|
+
</div>
|
|
278
|
+
<h1 class="text-3xl font-extrabold text-white mb-6">{title}</h1>
|
|
279
|
+
<article
|
|
280
|
+
class="prose prose-invert max-w-none text-slate-300 leading-relaxed"
|
|
281
|
+
dangerouslySetInnerHTML={{ __html: contentHtml }}
|
|
282
|
+
/>
|
|
176
283
|
</div>
|
|
177
284
|
);
|
|
178
|
-
}
|
|
285
|
+
}
|
|
179
286
|
`,
|
|
180
|
-
'src/server.tsx': `import
|
|
181
|
-
import {
|
|
182
|
-
import {
|
|
183
|
-
import {
|
|
184
|
-
import {
|
|
287
|
+
'src/server.tsx': `import * as path from 'node:path';
|
|
288
|
+
import { fileURLToPath } from 'node:url';
|
|
289
|
+
import { Froot } from 'frootjs';
|
|
290
|
+
import { createAppRouter, renderMarkdownFile } from 'froot-fullstack';
|
|
291
|
+
import { RootLayout } from './layouts/RootLayout.js';
|
|
292
|
+
import { DocsLayout } from './layouts/DocsLayout.js';
|
|
293
|
+
import { HomePage } from './pages/HomePage.js';
|
|
294
|
+
import { DocsPage } from './pages/DocsPage.js';
|
|
185
295
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
// Wrap all HTML responses in the global Layout shell
|
|
189
|
-
app.use('*', jsxRenderer(({ children }) => {
|
|
190
|
-
return <Layout>{children}</Layout>;
|
|
191
|
-
}));
|
|
296
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
297
|
+
const __dirname = path.dirname(__filename);
|
|
192
298
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
return c.render(<HomePage />);
|
|
196
|
-
});
|
|
299
|
+
export const app = new Froot();
|
|
300
|
+
export const router = createAppRouter(app);
|
|
197
301
|
|
|
198
|
-
|
|
199
|
-
|
|
302
|
+
// 1. Docs Layout (NO TOP NAVBAR, left sidebar only)
|
|
303
|
+
router.layout('/docs', ({ children, currentPath }) => {
|
|
304
|
+
return (
|
|
305
|
+
<RootLayout title="Documentation — Froot Fullstack">
|
|
306
|
+
<DocsLayout currentPath={currentPath}>
|
|
307
|
+
{children}
|
|
308
|
+
</DocsLayout>
|
|
309
|
+
</RootLayout>
|
|
310
|
+
);
|
|
200
311
|
});
|
|
201
312
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
<
|
|
207
|
-
|
|
208
|
-
<li>Auto-generated OpenAPI 3.1 & Scalar docs</li>
|
|
209
|
-
<li>Native JSX & async component support</li>
|
|
210
|
-
<li>Full WebCrypto authentication ecosystem</li>
|
|
211
|
-
<li>Universal WebSockets & pub/sub hub</li>
|
|
212
|
-
</ul>
|
|
213
|
-
</div>
|
|
313
|
+
// 2. Landing Page Route (with top navbar)
|
|
314
|
+
router.page('/', () => {
|
|
315
|
+
return (
|
|
316
|
+
<RootLayout title="Froot Fullstack — Next.js Alternative">
|
|
317
|
+
<HomePage />
|
|
318
|
+
</RootLayout>
|
|
214
319
|
);
|
|
215
320
|
});
|
|
216
321
|
|
|
217
|
-
|
|
322
|
+
// 3. Dynamic Documentation Route (/docs and /docs/:slug)
|
|
323
|
+
router.page(
|
|
324
|
+
'/docs/:slug?',
|
|
325
|
+
async ({ params }) => {
|
|
326
|
+
const slug = params['slug'] || 'overview';
|
|
327
|
+
const docPath = path.resolve(__dirname, \`../content/docs/\${slug}.md\`);
|
|
328
|
+
const { frontmatter, html } = await renderMarkdownFile(docPath);
|
|
329
|
+
|
|
330
|
+
return (
|
|
331
|
+
<DocsPage
|
|
332
|
+
title={frontmatter['title'] || slug}
|
|
333
|
+
category={frontmatter['category'] || 'Documentation'}
|
|
334
|
+
contentHtml={html}
|
|
335
|
+
/>
|
|
336
|
+
);
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
generateStaticParams: () => [{ slug: 'overview' }, { slug: 'quickstart' }],
|
|
340
|
+
}
|
|
341
|
+
);
|
|
342
|
+
|
|
343
|
+
const PORT = Number(process.env['PORT'] || 3000);
|
|
218
344
|
app.listen(PORT, () => {
|
|
219
|
-
console.log(
|
|
345
|
+
console.log(\`🍏 Froot Fullstack server running at http://localhost:\${PORT}\`);
|
|
346
|
+
});
|
|
347
|
+
`,
|
|
348
|
+
'src/build.ts': `/**
|
|
349
|
+
* Static Site Generation (SSG) Builder
|
|
350
|
+
*/
|
|
351
|
+
import * as path from 'node:path';
|
|
352
|
+
import { fileURLToPath } from 'node:url';
|
|
353
|
+
import { router } from './server.js';
|
|
354
|
+
|
|
355
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
356
|
+
const __dirname = path.dirname(__filename);
|
|
357
|
+
const outDir = path.resolve(__dirname, '../dist/static');
|
|
358
|
+
|
|
359
|
+
async function build() {
|
|
360
|
+
console.log('🍏 Building static site with @froot/fullstack...');
|
|
361
|
+
const result = await router.exportStatic({ outDir });
|
|
362
|
+
console.log(\`✅ Export complete in \${result.durationMs}ms: \${result.renderedRoutes.length} routes pre-rendered.\`);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
build().catch((err) => {
|
|
366
|
+
console.error('❌ Build failed:', err);
|
|
367
|
+
process.exit(1);
|
|
220
368
|
});
|
|
221
369
|
`,
|
|
222
370
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullstack.js","sourceRoot":"","sources":["../../src/templates/fullstack.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fullstack.js","sourceRoot":"","sources":["../../src/templates/fullstack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuC,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnF,MAAM,CAAC,MAAM,iBAAiB,GAAuB;IACnD,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,iCAAiC;IACvC,WAAW,EAAE,qEAAqE;IAClF,QAAQ,EAAE,CAAC,WAAmB,EAAmB,EAAE;QACjD,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,SAAS,CAC5B;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,GAAG,EAAE,0BAA0B;oBAC/B,KAAK,EAAE,KAAK;oBACZ,cAAc,EAAE,kBAAkB;oBAClC,KAAK,EAAE,qBAAqB;iBAC7B;gBACD,YAAY,EAAE;oBACZ,iBAAiB,EAAE,QAAQ;oBAC3B,OAAO,EAAE,QAAQ;oBACjB,MAAM,EAAE,SAAS;oBACjB,yBAAyB,EAAE,QAAQ;iBACpC;gBACD,eAAe,EAAE;oBACf,aAAa,EAAE,UAAU;oBACzB,GAAG,EAAE,SAAS;oBACd,UAAU,EAAE,QAAQ;iBACrB;aACF,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI;YAER,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBtB;YACK,YAAY,EAAE,gBAAgB;YAE9B,WAAW,EAAE,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BlC;YAEK,0BAA0B,EAAE;;;;;;;;;;;;;CAajC;YAEK,4BAA4B,EAAE;;;;;;;;;;;;;;;CAenC;YAEK,4BAA4B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnC;YAEK,4BAA4B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DnC;YAEK,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C/B;YAEK,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;CAoB/B;YAEK,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DvB;YAEK,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBrB;SACI,CAAC;IACJ,CAAC;CACF,CAAC"}
|