bertui 1.0.3 → 1.1.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.
- package/README.md +551 -132
- package/package.json +27 -7
- package/src/build/compiler/file-transpiler.js +171 -0
- package/src/build/compiler/index.js +45 -0
- package/src/build/compiler/route-discoverer.js +46 -0
- package/src/build/compiler/router-generator.js +104 -0
- package/src/build/generators/html-generator.js +259 -0
- package/src/build/generators/robots-generator.js +58 -0
- package/src/build/generators/sitemap-generator.js +63 -0
- package/src/build/processors/asset-processor.js +19 -0
- package/src/build/processors/css-builder.js +35 -0
- package/src/build/server-island-validator.js +156 -0
- package/src/build.js +96 -632
- package/src/config/defaultConfig.js +26 -6
- package/src/config/loadConfig.js +21 -5
- package/src/router/Router.js +38 -5
- package/src/router/SSRRouter.js +156 -0
- package/src/utils/meta-extractor.js +61 -0
- package/types/config.d.ts +80 -0
- package/types/index.d.ts +116 -0
- package/types/react.d.ts +13 -0
- package/types/router.d.ts +79 -0
package/README.md
CHANGED
|
@@ -1,89 +1,291 @@
|
|
|
1
|
-
# BertUI
|
|
1
|
+
# BertUI ⚡🏝️
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**The fastest React framework for developers who refuse to wait. Zero configuration, instant feedback, production-ready builds, and now... PERFECT SEO.**
|
|
4
|
+
|
|
5
|
+
Zero configuration. 494ms dev server. 265ms builds. **Server Islands for instant SEO.**
|
|
6
|
+
Powered by Bun and Elysia.
|
|
7
|
+
|
|
8
|
+
[](https://github.com/BunElysiaReact/BERTUI)
|
|
9
|
+
[](https://bun.sh)
|
|
10
|
+
[](https://github.com/BunElysiaReact/BERTUI)
|
|
4
11
|
[](LICENSE)
|
|
5
12
|
|
|
6
|
-
|
|
7
|
-
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 🎉 What's New in v1.1.0: Server Islands Era
|
|
8
16
|
|
|
9
|
-
|
|
17
|
+
**The feature that changes everything.** BertUI is no longer just "fast Vite" (though we were never *just* that). With **Server Islands**, you get:
|
|
10
18
|
|
|
11
|
-
|
|
19
|
+
- 🏝️ **Instant SEO** - Add one line, get static HTML at build time
|
|
20
|
+
- ⚡ **Still Lightning Fast** - 265ms builds haven't changed
|
|
21
|
+
- 🎯 **Per-Page Control** - Choose what gets pre-rendered
|
|
22
|
+
- 🚀 **Zero Complexity** - No SSR setup, no server infrastructure
|
|
23
|
+
- 💯 **Perfect for Everything** - Marketing pages AND interactive apps
|
|
12
24
|
|
|
13
|
-
|
|
14
|
-
- The 15+ animation classes (`.fadein`, `.scalein`, `.bouncein`, etc.) are not currently available
|
|
15
|
-
- You can still use your own CSS animations or external libraries
|
|
16
|
-
- All other BertUI features work normally
|
|
25
|
+
### The Magic Line
|
|
17
26
|
|
|
18
|
-
|
|
27
|
+
```jsx
|
|
28
|
+
// Add this to any page
|
|
29
|
+
export const render = "server";
|
|
30
|
+
|
|
31
|
+
// That's it. You now have instant SEO. 🤯
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**[Read the complete Server Islands guide →](https://bertui-docswebsite.vercel.app/server-islands)**
|
|
19
35
|
|
|
20
36
|
---
|
|
21
37
|
|
|
22
|
-
##
|
|
38
|
+
## ⚡ Proven Performance (Not Promises. Facts.)
|
|
23
39
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
40
|
+
**BertUI vs Vite** (tested Dec 2025 on Intel i3-2348M, 7.6GB RAM):
|
|
41
|
+
|
|
42
|
+
| Metric | BertUI | Vite | Winner |
|
|
43
|
+
|--------|--------|------|--------|
|
|
44
|
+
| Warm Cache Install | **5.0s** | 35.3s | **BertUI (7x faster)** ⚡ |
|
|
45
|
+
| Dev Server Startup | **494ms** | 713ms | **BertUI (1.4x faster)** ⚡ |
|
|
46
|
+
| Production Build | **265ms** | 4.70s | **BertUI (18x faster)** ⚡ |
|
|
47
|
+
| Bundle Size | **100KB** | 220KB | **BertUI (2.2x smaller)** ⚡ |
|
|
48
|
+
| **SSG Capability** | **✅ YES** | **❌ NONE** | **BertUI (exclusive)** 🏝️ |
|
|
49
|
+
|
|
50
|
+
> **"Your speeds are lies!"** — Critics (probably)
|
|
51
|
+
> **Our response:** [Complete reproducible benchmarks](PERFORMANCE.md) with logs, methodology, and test scripts. Run them yourself. We'll wait. ⏱️
|
|
52
|
+
|
|
53
|
+
**[See full performance report →](PERFORMANCE.md)**
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🏝️ Server Islands: The Revolution
|
|
58
|
+
|
|
59
|
+
### What Are They?
|
|
60
|
+
|
|
61
|
+
Server Islands are BertUI's unique feature that gives you **instant SEO and perfect performance** without sacrificing React's developer experience. Think of them as "optional static site generation with one line of code."
|
|
62
|
+
|
|
63
|
+
### Why They Matter
|
|
64
|
+
|
|
65
|
+
```diff
|
|
66
|
+
<!-- ❌ OTHER FRAMEWORKS: Empty HTML until JS loads -->
|
|
67
|
+
<div id="root"></div>
|
|
68
|
+
<script src="app.js"></script>
|
|
69
|
+
|
|
70
|
+
<!-- ✅ BERTUI WITH SERVER ISLANDS: Full content immediately -->
|
|
71
|
+
<div id="root">
|
|
72
|
+
<header>
|
|
73
|
+
<h1>My Awesome Site</h1>
|
|
74
|
+
<nav>...</nav>
|
|
75
|
+
</header>
|
|
76
|
+
<main>
|
|
77
|
+
<article>Full content here!</article>
|
|
78
|
+
</main>
|
|
79
|
+
</div>
|
|
80
|
+
<script src="app.js"></script>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Benefits:**
|
|
84
|
+
- 🚀 **Instant First Paint** - Users see content immediately (0ms TTFB)
|
|
85
|
+
- 🔍 **Perfect SEO** - Search engines index full content
|
|
86
|
+
- ⚡ **Still Interactive** - React hydrates for full app functionality
|
|
87
|
+
- 📦 **Zero Config** - Works automatically for all routes
|
|
88
|
+
- 🎯 **Mixed Architecture** - Use Server Islands for landing pages, client-only for dashboards
|
|
89
|
+
|
|
90
|
+
### How to Use
|
|
91
|
+
|
|
92
|
+
```jsx
|
|
93
|
+
// src/pages/about.jsx
|
|
94
|
+
export const render = "server"; // 🏝️ That's it!
|
|
29
95
|
|
|
30
|
-
|
|
96
|
+
export const meta = {
|
|
97
|
+
title: "About Us",
|
|
98
|
+
description: "Learn about our company"
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export default function About() {
|
|
102
|
+
return (
|
|
103
|
+
<div>
|
|
104
|
+
<h1>About Us</h1>
|
|
105
|
+
<p>Pre-rendered as static HTML at build time!</p>
|
|
106
|
+
<a href="/contact">Contact</a>
|
|
107
|
+
</div>
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Perfect for:**
|
|
113
|
+
- Landing pages
|
|
114
|
+
- Blog posts
|
|
115
|
+
- Documentation
|
|
116
|
+
- Marketing pages
|
|
117
|
+
- Any content-heavy page that needs SEO
|
|
118
|
+
|
|
119
|
+
**Not for:**
|
|
120
|
+
- Dashboards (need state)
|
|
121
|
+
- Forms (need interactivity)
|
|
122
|
+
- Apps with user state
|
|
123
|
+
|
|
124
|
+
**[Complete Server Islands guide →](https://bertui-docswebsite.vercel.app/server-islands)**
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 🚀 Quick Start
|
|
31
129
|
|
|
32
130
|
### Create New App (Recommended)
|
|
131
|
+
|
|
33
132
|
```bash
|
|
34
133
|
bunx create-bertui my-app
|
|
35
134
|
cd my-app
|
|
36
135
|
bun run dev
|
|
37
136
|
```
|
|
38
137
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
138
|
+
That's it. No webpack config. No babel setup. No bullshit.
|
|
139
|
+
|
|
140
|
+
**First install note:** Initial setup downloads Bun platform binaries (~154MB, one-time cost). Subsequent project creation takes ~5 seconds.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 🔄 Migrate Existing Projects
|
|
145
|
+
|
|
146
|
+
Got a Vite, CRA, or other React project? Migrate to BertUI in seconds with our migration tool:
|
|
44
147
|
|
|
45
|
-
### Manual Installation (Advanced)
|
|
46
|
-
If you want to configure everything yourself:
|
|
47
148
|
```bash
|
|
48
|
-
|
|
149
|
+
cd your-existing-project
|
|
150
|
+
bunx migrate-bertui
|
|
49
151
|
```
|
|
50
152
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
153
|
+
**What it does:**
|
|
154
|
+
1. ✅ Backs up all files to `.bertmigrate/`
|
|
155
|
+
2. 🧹 Initializes fresh BertUI project
|
|
156
|
+
3. 📝 Creates detailed migration guide
|
|
157
|
+
4. 🎯 Detects your framework and provides tailored instructions
|
|
55
158
|
|
|
56
|
-
|
|
159
|
+
### Migration Process
|
|
57
160
|
|
|
58
|
-
## Commands
|
|
59
161
|
```bash
|
|
60
|
-
|
|
61
|
-
|
|
162
|
+
# 1. Navigate to your project
|
|
163
|
+
cd my-vite-app
|
|
164
|
+
|
|
165
|
+
# 2. Run migration (backs up everything automatically)
|
|
166
|
+
bunx migrate-bertui
|
|
167
|
+
|
|
168
|
+
# 3. Follow the generated MIGRATION_GUIDE.md
|
|
169
|
+
cat MIGRATION_GUIDE.md
|
|
170
|
+
|
|
171
|
+
# 4. Copy your components
|
|
172
|
+
cp -r .bertmigrate/src/components src/
|
|
173
|
+
cp -r .bertmigrate/src/styles src/
|
|
174
|
+
|
|
175
|
+
# 5. Convert routes to file-based structure
|
|
176
|
+
# Instead of: <Route path="/about" element={<About />} />
|
|
177
|
+
# Just create: src/pages/about.jsx
|
|
178
|
+
|
|
179
|
+
# 6. Update imports
|
|
180
|
+
# From: import { Link } from 'react-router-dom'
|
|
181
|
+
# To: import { Link } from 'bertui/router'
|
|
182
|
+
|
|
183
|
+
# 7. Test it
|
|
184
|
+
bun run dev
|
|
62
185
|
```
|
|
63
186
|
|
|
64
|
-
|
|
187
|
+
### Before Migration (Vite)
|
|
188
|
+
```
|
|
189
|
+
your-vite-app/
|
|
190
|
+
├── src/
|
|
191
|
+
│ ├── App.jsx
|
|
192
|
+
│ ├── main.jsx
|
|
193
|
+
│ └── components/
|
|
194
|
+
├── vite.config.js
|
|
195
|
+
└── package.json
|
|
196
|
+
```
|
|
65
197
|
|
|
66
|
-
|
|
198
|
+
### After Migration (BertUI)
|
|
199
|
+
```
|
|
200
|
+
your-vite-app/
|
|
201
|
+
├── .bertmigrate/ # 📦 Your backup (safe!)
|
|
202
|
+
├── src/
|
|
203
|
+
│ ├── pages/ # ⚡ File-based routing!
|
|
204
|
+
│ │ ├── index.jsx # / route
|
|
205
|
+
│ │ └── about.jsx # /about route
|
|
206
|
+
│ ├── components/ # Your components
|
|
207
|
+
│ └── images/ # Images (auto-served)
|
|
208
|
+
├── MIGRATION_GUIDE.md # Your guide
|
|
209
|
+
└── package.json
|
|
210
|
+
```
|
|
67
211
|
|
|
68
|
-
###
|
|
212
|
+
### Rollback If Needed
|
|
69
213
|
|
|
70
|
-
|
|
214
|
+
```bash
|
|
215
|
+
# Something wrong? Just restore from backup
|
|
216
|
+
rm -rf src/ public/ package.json
|
|
217
|
+
cp -r .bertmigrate/* .
|
|
71
218
|
```
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
219
|
+
|
|
220
|
+
**[Migration tool documentation →](https://github.com/yourusername/migrate-bertui)**
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## 🎯 Why BertUI?
|
|
225
|
+
|
|
226
|
+
### The Problems We Solve
|
|
227
|
+
|
|
228
|
+
**1. "Cool Vite" Problem (SOLVED ✅)**
|
|
229
|
+
- **Before v1.1:** Critics said we were just "fast Vite" with poor SEO
|
|
230
|
+
- **After v1.1:** Server Islands give us perfect SEO + unmatched speed
|
|
231
|
+
- **Vite can't do this:** Vite has NO SSG capability at all
|
|
232
|
+
|
|
233
|
+
**2. Speed Without Compromise**
|
|
234
|
+
- **Next.js:** Great SSR, but complex setup and slow builds
|
|
235
|
+
- **Vite:** Fast dev, but client-only (poor SEO)
|
|
236
|
+
- **BertUI:** Fast dev + fast builds + perfect SEO + zero config
|
|
237
|
+
|
|
238
|
+
**3. The Configuration Hell**
|
|
239
|
+
- **Other frameworks:** webpack.config.js, vite.config.js, tsconfig.json, babel.config.js...
|
|
240
|
+
- **BertUI:** Zero config files. Just code.
|
|
241
|
+
|
|
242
|
+
### What Makes Us Unique
|
|
243
|
+
|
|
75
244
|
```
|
|
245
|
+
┌─────────────────────────────────────────────────────────┐
|
|
246
|
+
│ │
|
|
247
|
+
│ Vite Fast Dev ✅ Poor SEO ❌ No SSG ❌ │
|
|
248
|
+
│ Next.js Good SEO ✅ Slow Build ❌ Complex ❌ │
|
|
249
|
+
│ BertUI Fast Dev ✅ Good SEO ✅ Fast Build ✅ │
|
|
250
|
+
│ Zero Config ✅ Server Islands ✅ │
|
|
251
|
+
│ │
|
|
252
|
+
└─────────────────────────────────────────────────────────┘
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**BertUI is the only framework with:**
|
|
256
|
+
- Sub-300ms production builds
|
|
257
|
+
- Optional per-page SSG (Server Islands)
|
|
258
|
+
- Zero configuration required
|
|
259
|
+
- File-based routing out of the box
|
|
260
|
+
- Bun-native speed
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 📁 File-Based Routing
|
|
265
|
+
|
|
266
|
+
BertUI has **complete file-based routing** with zero configuration:
|
|
76
267
|
|
|
77
|
-
#### ✅ Dynamic Routes
|
|
78
268
|
```
|
|
79
|
-
src/pages/
|
|
80
|
-
src/pages/
|
|
81
|
-
src/pages/
|
|
269
|
+
src/pages/index.jsx → /
|
|
270
|
+
src/pages/about.jsx → /about
|
|
271
|
+
src/pages/blog/index.jsx → /blog
|
|
272
|
+
src/pages/user/[id].jsx → /user/:id
|
|
273
|
+
src/pages/shop/[cat]/[prod].jsx → /shop/:cat/:prod
|
|
82
274
|
```
|
|
83
275
|
|
|
84
|
-
|
|
276
|
+
### Dynamic Routes Example
|
|
277
|
+
|
|
85
278
|
```jsx
|
|
86
|
-
|
|
279
|
+
// src/pages/user/[id].jsx
|
|
280
|
+
export default function UserProfile({ params }) {
|
|
281
|
+
return <div>User ID: {params.id}</div>;
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Navigation
|
|
286
|
+
|
|
287
|
+
```jsx
|
|
288
|
+
import { Link, useRouter } from 'bertui/router';
|
|
87
289
|
|
|
88
290
|
// Link component
|
|
89
291
|
<Link to="/about">About</Link>
|
|
@@ -93,113 +295,330 @@ const { navigate } = useRouter();
|
|
|
93
295
|
navigate('/dashboard');
|
|
94
296
|
```
|
|
95
297
|
|
|
96
|
-
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 🖼️ Image Handling
|
|
301
|
+
|
|
302
|
+
**CRITICAL:** BertUI only processes images from two directories:
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
✅ src/images/ → Served at /images/* (component images)
|
|
306
|
+
✅ public/ → Served at /* (global assets like favicon)
|
|
307
|
+
|
|
308
|
+
❌ Anywhere else → Will cause compilation errors!
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**Example:**
|
|
97
312
|
```jsx
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
313
|
+
// ✅ CORRECT
|
|
314
|
+
import Logo from '../images/logo.png'; // From src/images/
|
|
315
|
+
import Favicon from '/favicon.svg'; // From public/
|
|
316
|
+
|
|
317
|
+
// ❌ WRONG (will break)
|
|
318
|
+
import Banner from '../../assets/banner.png'; // Outside allowed dirs
|
|
101
319
|
```
|
|
102
320
|
|
|
103
|
-
|
|
104
|
-
- Still works with `src/main.jsx` if no `pages/` directory
|
|
105
|
-
- Automatically detects routing mode
|
|
106
|
-
- No breaking changes!
|
|
321
|
+
---
|
|
107
322
|
|
|
108
|
-
## 📊
|
|
323
|
+
## 📊 Real-World Performance
|
|
109
324
|
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
src/pages/
|
|
113
|
-
├── index.jsx
|
|
114
|
-
├── about.jsx
|
|
115
|
-
└── user/[id].jsx
|
|
116
|
-
```
|
|
325
|
+
Tested on Intel i3-2348M (your results will be better on modern hardware):
|
|
117
326
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
```
|
|
327
|
+
| Metric | BertUI | Next.js | Vite |
|
|
328
|
+
|--------|--------|---------|------|
|
|
329
|
+
| Dev Server Start | **494ms** | 2.1s | 713ms |
|
|
330
|
+
| Production Build | **265ms** | 8.4s | 4.7s |
|
|
331
|
+
| SSG Per Route | **~80ms** | ~200ms | N/A |
|
|
332
|
+
| Bundle Size | **100KB** | 280KB | 220KB |
|
|
333
|
+
| **SSG Support** | **✅ YES** | ✅ YES | **❌ NO** |
|
|
126
334
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
335
|
+
**Time saved per year:**
|
|
336
|
+
- 5 projects/week: ~2.5 hours/year on project creation
|
|
337
|
+
- 10 dev server restarts/day: ~9 minutes/year
|
|
338
|
+
- 3 builds/day: ~32 minutes/year
|
|
131
339
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
- Client-side routing handles navigation
|
|
135
|
-
- HMR updates routes on file changes
|
|
340
|
+
**Total: ~2.7 hours of pure waiting time eliminated.**
|
|
341
|
+
But the real win? **Flow state.** When tools respond instantly, you stay focused and ship faster.
|
|
136
342
|
|
|
137
|
-
|
|
343
|
+
---
|
|
138
344
|
|
|
139
|
-
|
|
140
|
-
// src/pages/index.jsx
|
|
141
|
-
import { Link } from 'bertui/router';
|
|
345
|
+
## 🎨 Features
|
|
142
346
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
</nav>
|
|
152
|
-
</div>
|
|
153
|
-
);
|
|
154
|
-
}
|
|
347
|
+
### Core Features
|
|
348
|
+
- ⚡ **38ms Compilation** - Compiles 20 React files in 38ms
|
|
349
|
+
- 📁 **Zero Config Routing** - File-based routing with dynamic routes
|
|
350
|
+
- 🏝️ **Server Islands** - Optional SSG with one line
|
|
351
|
+
- 🔥 **Hot Module Replacement** - Instant updates (30ms HMR)
|
|
352
|
+
- 📦 **Zero Config** - Works out of the box
|
|
353
|
+
- 🚀 **Production Ready** - Optimized builds, semantic versioning
|
|
354
|
+
- 🎯 **React-Focused** - Optimized for React ecosystem
|
|
155
355
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
356
|
+
### Developer Experience
|
|
357
|
+
- 🔍 **Perfect SEO** - Server Islands generate static HTML
|
|
358
|
+
- 💅 **CSS Optimization** - Single minified CSS file with LightningCSS
|
|
359
|
+
- 🐛 **Error Overlay** - Full-screen error messages with stack traces
|
|
360
|
+
- 📊 **Build Analytics** - Detailed build reports
|
|
361
|
+
- 🎨 **Modern CSS** - Support for nesting, variables, and modern features
|
|
362
|
+
|
|
363
|
+
### Dependency Count
|
|
364
|
+
|
|
365
|
+
| Framework | Dependencies | Install Size |
|
|
366
|
+
|-----------|-------------|--------------|
|
|
367
|
+
| **BertUI** | **4** | **~14MB** |
|
|
368
|
+
| Vite + React | 15+ | ~50MB |
|
|
369
|
+
| Next.js | 50+ | ~200MB |
|
|
370
|
+
| Gatsby | 100+ | ~500MB |
|
|
371
|
+
|
|
372
|
+
**Still the fastest, still the lightest.** 🔥
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## 🛠️ Commands
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
bertui dev # Start dev server (494ms startup)
|
|
380
|
+
bertui build # Build for production (265ms builds)
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
Or via package.json:
|
|
384
|
+
```bash
|
|
385
|
+
bun run dev # Development
|
|
386
|
+
bun run build # Production build
|
|
387
|
+
bun run preview # Preview production build
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## 🏆 When to Use BertUI
|
|
393
|
+
|
|
394
|
+
### ✅ Perfect For:
|
|
395
|
+
|
|
396
|
+
- **Speed-First Projects** - You want the fastest possible dev experience
|
|
397
|
+
- **Content Sites** - Landing pages, blogs, docs (with Server Islands)
|
|
398
|
+
- **Hybrid Apps** - Mix static pages (Server Islands) with interactive apps
|
|
399
|
+
- **Multiple Projects** - Create new projects frequently (7x faster scaffolding)
|
|
400
|
+
- **Fast CI/CD** - Need quick builds in pipelines (18x faster than Vite)
|
|
401
|
+
- **Bun Users** - Already using or willing to try Bun
|
|
402
|
+
|
|
403
|
+
### ❌ Not For You If:
|
|
404
|
+
|
|
405
|
+
- **Need Full SSR** - Real-time server rendering (use Next.js or Remix)
|
|
406
|
+
- **Content-Heavy Blog** - Needs MDX and advanced content features (use Astro)
|
|
407
|
+
- **Multi-Framework** - Want Vue, Svelte support (use Astro or Vite)
|
|
408
|
+
- **Can't Use Bun** - Company policy or legacy systems prevent Bun usage
|
|
409
|
+
- **Need TypeScript** - We're JavaScript-first by design (see Philosophy below)
|
|
410
|
+
|
|
411
|
+
**BertUI is laser-focused on: Fast React development with optional perfect SEO.**
|
|
412
|
+
If that's what you need, you'll love it. If not, use the right tool.
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
## 💭 JavaScript-First Philosophy
|
|
417
|
+
|
|
418
|
+
**BertUI is JavaScript-first and will remain that way.**
|
|
419
|
+
|
|
420
|
+
We fully support `.jsx` files with complete JSX syntax, but we **do not plan to add TypeScript (`.tsx`) support.**
|
|
421
|
+
|
|
422
|
+
**Why?**
|
|
423
|
+
- We believe in keeping tools simple and focused
|
|
424
|
+
- TypeScript adds complexity that goes against "zero config, just code"
|
|
425
|
+
- JavaScript is powerful, universal, and requires no compilation step
|
|
426
|
+
- We want to eliminate barriers, not add them
|
|
427
|
+
|
|
428
|
+
If you need TypeScript, we recommend Next.js or Remix - they're excellent frameworks with first-class TypeScript support.
|
|
429
|
+
|
|
430
|
+
**BertUI's mission:** The fastest React development with zero complexity.
|
|
431
|
+
TypeScript would compromise that mission.
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## 🌐 Production Deployment
|
|
436
|
+
|
|
437
|
+
### Supported Platforms
|
|
438
|
+
- ✅ Vercel (zero config with included `vercel.json`)
|
|
439
|
+
- ✅ Netlify (works out of the box)
|
|
440
|
+
- ✅ Cloudflare Pages (instant deploys)
|
|
441
|
+
- ✅ Any static host (Nginx, Apache, S3, etc.)
|
|
442
|
+
|
|
443
|
+
### Vercel Deployment (Recommended)
|
|
444
|
+
|
|
445
|
+
Your project includes a pre-configured `vercel.json`:
|
|
446
|
+
|
|
447
|
+
```json
|
|
448
|
+
{
|
|
449
|
+
"buildCommand": "bun run build",
|
|
450
|
+
"outputDirectory": "dist",
|
|
451
|
+
"framework": null,
|
|
452
|
+
"rewrites": [
|
|
453
|
+
{
|
|
454
|
+
"source": "/(.*)",
|
|
455
|
+
"destination": "/index.html"
|
|
456
|
+
}
|
|
457
|
+
]
|
|
164
458
|
}
|
|
165
459
|
```
|
|
166
460
|
|
|
167
|
-
|
|
461
|
+
**Deployment steps:**
|
|
462
|
+
1. Push to GitHub
|
|
463
|
+
2. Import to Vercel
|
|
464
|
+
3. Deploy (auto-detects config)
|
|
465
|
+
4. Done! 🎉
|
|
466
|
+
|
|
467
|
+
**[Complete deployment guide →](https://bertui-docswebsite.vercel.app/deployment)**
|
|
468
|
+
|
|
469
|
+
### Live Sites Using BertUI
|
|
470
|
+
- [BertUI Docs](https://bertui-docswebsite.vercel.app/) - The site you're reading
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## 📚 Documentation & Resources
|
|
475
|
+
|
|
476
|
+
- **Documentation:** https://bertui-docswebsite.vercel.app/
|
|
477
|
+
- **Getting Started:** https://bertui-docswebsite.vercel.app/getstarted
|
|
478
|
+
- **Server Islands Guide:** https://bertui-docswebsite.vercel.app/server-islands
|
|
479
|
+
- **Performance Benchmarks:** [PERFORMANCE.md](PERFORMANCE.md)
|
|
480
|
+
- **GitHub:** https://github.com/BunElysiaReact/BERTUI
|
|
481
|
+
- **NPM:** https://www.npmjs.com/package/bertui
|
|
482
|
+
- **Discord:** https://discord.gg/kvbXfkJG
|
|
483
|
+
- **Issues:** https://github.com/BunElysiaReact/BERTUI/issues
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## 🎓 Learning Path
|
|
168
488
|
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
489
|
+
1. **Quick Start** (5 min)
|
|
490
|
+
- Run `bunx create-bertui my-app`
|
|
491
|
+
- Explore the generated files
|
|
492
|
+
- Start dev server with `bun run dev`
|
|
173
493
|
|
|
174
|
-
|
|
494
|
+
2. **File-Based Routing** (10 min)
|
|
495
|
+
- Create `src/pages/about.jsx`
|
|
496
|
+
- Add dynamic route `src/pages/blog/[slug].jsx`
|
|
497
|
+
- Test navigation with `Link` component
|
|
175
498
|
|
|
176
|
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
499
|
+
3. **Server Islands** (15 min)
|
|
500
|
+
- Add `export const render = "server";` to a page
|
|
501
|
+
- Build and check the generated HTML
|
|
502
|
+
- View page source to see pre-rendered content
|
|
179
503
|
|
|
180
|
-
|
|
504
|
+
4. **Production Build** (5 min)
|
|
505
|
+
- Run `bun run build`
|
|
506
|
+
- Deploy to Vercel or Netlify
|
|
507
|
+
- Celebrate your blazing-fast site! 🎉
|
|
181
508
|
|
|
182
|
-
|
|
183
|
-
1. **Layouts** - Wrap pages with shared layouts
|
|
184
|
-
2. **Middleware** - Auth, logging, etc.
|
|
185
|
-
3. **Data Loading** - Fetch data before rendering
|
|
186
|
-
4. **API Routes** - Backend API in `pages/api/`
|
|
187
|
-
5. **Static Generation** - Pre-render at build time
|
|
509
|
+
**Total time to mastery: ~35 minutes**
|
|
188
510
|
|
|
189
|
-
|
|
190
|
-
Update `build.js` to:
|
|
191
|
-
- Generate static HTML for each route
|
|
192
|
-
- Create optimized bundles per route
|
|
193
|
-
- Handle dynamic routes appropriately
|
|
511
|
+
---
|
|
194
512
|
|
|
195
|
-
##
|
|
513
|
+
## 🤝 Contributing
|
|
196
514
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
515
|
+
Contributions are welcome! Here's how to get started:
|
|
516
|
+
|
|
517
|
+
```bash
|
|
518
|
+
# Clone the repo
|
|
519
|
+
git clone https://github.com/BunElysiaReact/BERTUI
|
|
520
|
+
cd BERTUI
|
|
521
|
+
|
|
522
|
+
# Install dependencies
|
|
523
|
+
bun install
|
|
524
|
+
|
|
525
|
+
# Start development
|
|
526
|
+
bun run dev
|
|
527
|
+
|
|
528
|
+
# Make your changes
|
|
529
|
+
# Run tests
|
|
530
|
+
bun test
|
|
531
|
+
|
|
532
|
+
# Submit PR
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
**Areas we need help:**
|
|
536
|
+
- Documentation improvements
|
|
537
|
+
- Bug fixes
|
|
538
|
+
- Performance optimizations
|
|
539
|
+
- Example projects
|
|
540
|
+
- Migration tools
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## 📄 License
|
|
545
|
+
|
|
546
|
+
MIT License - See [LICENSE](LICENSE) for details.
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
## 🙏 Credits & Thanks
|
|
551
|
+
|
|
552
|
+
**Built with 🔥 by [Pease Ernest](https://github.com/Ernest12287)**
|
|
553
|
+
*Because developers deserve faster tooling and better SEO.*
|
|
554
|
+
|
|
555
|
+
**Special Thanks:**
|
|
556
|
+
- The Bun team for creating an incredible runtime
|
|
557
|
+
- The Elysia team for the fastest web framework
|
|
558
|
+
- Our early adopters who gave critical feedback
|
|
559
|
+
- Everyone who believed in BertUI when it was "just Cool Vite"
|
|
560
|
+
|
|
561
|
+
**v1.1.0 is dedicated to everyone who said we needed better SEO.**
|
|
562
|
+
You were right. Server Islands is for you. 🏝️
|
|
563
|
+
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
## 🎯 The Journey: From "Cool Vite" to Revolution
|
|
567
|
+
|
|
568
|
+
**v0.1.0 (Nov 26, 2025)** - First release. Fast, but client-only.
|
|
569
|
+
**v1.0.0 (Dec 17, 2025)** - Stable foundation after 35 beta versions.
|
|
570
|
+
**v1.1.0 (Dec 23, 2025)** - Server Islands. Everything changed.
|
|
571
|
+
|
|
572
|
+
We were called "Cool Vite" and it hurt. We were fast, but missing something crucial: **perfect SEO without complexity.**
|
|
573
|
+
|
|
574
|
+
Server Islands solved it. Now we're not "Cool Vite." Vite can't do this at all.
|
|
575
|
+
|
|
576
|
+
**We're BertUI - the framework with Bun speed AND perfect SEO.**
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## ❓ FAQ
|
|
581
|
+
|
|
582
|
+
**Q: Is BertUI production-ready?**
|
|
583
|
+
A: Yes! v1.0.0+ is stable and production-ready. Live sites are using it.
|
|
584
|
+
|
|
585
|
+
**Q: Do I need to use Server Islands?**
|
|
586
|
+
A: No! They're optional. Use them for SEO-critical pages, skip them for interactive apps.
|
|
587
|
+
|
|
588
|
+
**Q: Can I migrate from Vite/CRA/Next.js?**
|
|
589
|
+
A: Yes! Use `bunx migrate-bertui` for automated migration with backups.
|
|
590
|
+
|
|
591
|
+
**Q: Does BertUI require a server?**
|
|
592
|
+
A: No! Server Islands generate static HTML at build time. Deploy anywhere.
|
|
593
|
+
|
|
594
|
+
**Q: What about TypeScript?**
|
|
595
|
+
A: BertUI is JavaScript-first. We don't plan `.tsx` support. Use Next.js if you need TS.
|
|
596
|
+
|
|
597
|
+
**Q: How do Server Islands compare to Next.js SSG?**
|
|
598
|
+
A: Server Islands are simpler (one line vs complex config) and faster (265ms vs 8s builds).
|
|
599
|
+
|
|
600
|
+
**Q: Can I use Server Islands with dynamic routes?**
|
|
601
|
+
A: Not yet. Coming in a future release.
|
|
602
|
+
|
|
603
|
+
**Q: What if I need full SSR?**
|
|
604
|
+
A: Use Next.js or Remix. BertUI focuses on static-first with optional SSG.
|
|
605
|
+
|
|
606
|
+
---
|
|
607
|
+
|
|
608
|
+
## 🚀 Ready to Build?
|
|
609
|
+
|
|
610
|
+
```bash
|
|
611
|
+
bunx create-bertui my-app
|
|
612
|
+
cd my-app
|
|
613
|
+
bun run dev
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
**Join developers building the fastest React apps with perfect SEO.**
|
|
617
|
+
|
|
618
|
+
---
|
|
202
619
|
|
|
203
|
-
|
|
620
|
+
**Performance claims questioned?** [Read the receipts.](PERFORMANCE.md)
|
|
621
|
+
**Want to understand Server Islands?** [Read the guide.](https://bertui-docswebsite.vercel.app/server-islands)
|
|
622
|
+
**Need help?** [Join our Discord.](https://discord.gg/kvbXfkJG)
|
|
204
623
|
|
|
205
|
-
|
|
624
|
+
**Made with ⚡ and 🏝️ by the BertUI team**
|