Vite and Nitro
Why there is no index.html, and how the two engines sit inside BionicJS.
Why no index.html
A plain Vite project exposes index.html because Vite uses it as the application entry point. The developer owns it, edits it, and controls the HTML structure from it.
BionicJS is a framework, not a Vite template. The difference matters: when BionicJS owns the application model, the developer should not need to edit an HTML file. They write app/layout.tsx and app/page.tsx. That is the application root.
index.html. React Router's framework mode replaces it with root.tsx. BionicJS makes the same call: app/layout.tsx is the root. The HTML shell is generated internally.Internally, BionicJS generates an HTML entry point that Vite uses. The developer never sees it or edits it. Changes to the <html> element, <head> tags, or favicon are handled through app/layout.tsx and bionicjs.config.ts.
Vite inside BionicJS
BionicJS uses Vite as its frontend development and build tool. Vite is not exposed to the developer as a configuration surface. There is no vite.config.ts in a BionicJS project.
Internally, BionicJS creates the Vite configuration programmatically when the dev server starts. The configuration includes:
@vitejs/plugin-reactfor JSX and Fast Refresh- The BionicJS Vite plugin for route discovery and manifest generation
- The proxy rule forwarding
/apirequests to Nitro - The
historyApiFallbackconfiguration for SPA routing - The
rootandentrypointing to internal BionicJS files
A developer who needs to extend Vite's configuration does so through bionicjs.config.ts, not by writing a Vite config directly.
Nitro inside BionicJS
Nitro provides the server runtime. It handles HTTP requests, compiles server code, and supports deployment to multiple targets - Node.js, Cloudflare Workers, Deno, Bun, and more.
There is no nitro.config.ts in a BionicJS project. BionicJS creates the Nitro configuration internally; API requests run through h3 handlers. Server code lives in server/ and is auto-discovered by Nitro's filesystem convention for server routes.
server/. BionicJS's application filesystem convention applies to app/. These two conventions do not overlap.09 / 25