Perfect π Iβll give you a clean React + TypeScript + Vite + SWC + Bootstrap + React Router starter template.
This setup will:
- Use Vite as bundler
- Use SWC (@vitejs/plugin-react-swc) instead of Babel
- Add Bootstrap styling
- Add React Router v6 for pages & navigation
- Include a Navbar + Footer layout
my-app/
βββ index.html
βββ vite.config.ts
βββ tsconfig.json
βββ src/
β   βββ main.tsx
β   βββ App.tsx
β   βββ layouts/
β   β   βββ MainLayout.tsx
β   βββ pages/
β   β   βββ Home.tsx
β   β   βββ About.tsx
β   β   βββ NotFound.tsx
β   βββ components/
β       βββ Navbar.tsx
β       βββ Footer.tsx
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
export default defineConfig({
  plugins: [react()],
})import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { BrowserRouter } from 'react-router-dom'
import App from './App'
// Bootstrap CSS
import 'bootstrap/dist/css/bootstrap.min.css'
createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </StrictMode>,
)import { Routes, Route } from 'react-router-dom'
import MainLayout from './layouts/MainLayout'
import Home from './pages/Home'
import About from './pages/About'
import NotFound from './pages/NotFound'
function App() {
  return (
    <MainLayout>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
        <Route path="*" element={<NotFound />} />
      </Routes>
    </MainLayout>
  )
}
export default Appimport Navbar from '../components/Navbar'
import Footer from '../components/Footer'
import { ReactNode } from 'react'
type Props = {
  children: ReactNode
}
export default function MainLayout({ children }: Props) {
  return (
    <div className="d-flex flex-column min-vh-100">
      <Navbar />
      <main className="container flex-grow-1 py-4">
        {children}
      </main>
      <Footer />
    </div>
  )
}import { Link } from 'react-router-dom'
import { Navbar as BsNavbar, Nav, Container } from 'react-bootstrap'
export default function Navbar() {
  return (
    <BsNavbar bg="dark" variant="dark" expand="lg">
      <Container>
        <BsNavbar.Brand as={Link} to="/">MyApp</BsNavbar.Brand>
        <BsNavbar.Toggle aria-controls="basic-navbar-nav" />
        <BsNavbar.Collapse id="basic-navbar-nav">
          <Nav className="me-auto">
            <Nav.Link as={Link} to="/">Home</Nav.Link>
            <Nav.Link as={Link} to="/about">About</Nav.Link>
          </Nav>
        </BsNavbar.Collapse>
      </Container>
    </BsNavbar>
  )
}export default function Footer() {
  return (
    <footer className="bg-light text-center py-3 mt-auto border-top">
      <small>© {new Date().getFullYear()} MyApp. All rights reserved.</small>
    </footer>
  )
}export default function Home() {
  return <h1>Welcome to MyApp π</h1>
}export default function About() {
  return <h1>About Page</h1>
}export default function NotFound() {
  return <h1>404 - Page Not Found</h1>
}npm create vite@latest my-app -- --template react-ts
cd my-app
npm install
npm install react-router-dom bootstrap react-bootstrap @vitejs/plugin-react-swc -D
npm run devThis gives you a modern, fast, bootstrap-styled React app with layouts.
π Do you also want me to wire this into file-based routing (like Next.js style with vite-plugin-pages), or are you happy with plain react-router-dom + layouts for now?