React Dashboard Template
March 27, 2026 ยท View on GitHub
Modern dashboard starter rebuilt on top of Vite, React 19, React Router 7, Redux Toolkit, Bootstrap 5, and TypeScript tooling.

Stack
React 19Vite 8React Router 7data routerRedux Toolkit 2Bootstrap 5+reactstrapRechartsVitest+ Testing LibraryESLint 9flat config
What is included
- Modern app shell with lazy routes and route guards
- Demo authentication flow backed by local session storage
- Demo posts module powered by Redux Toolkit slices
- Bootstrap icon explorer, dashboard widgets, charts, tables, notifications, and maps
- SCSS theme layer adapted to Bootstrap 5
Requirements
Node.js 22.12+npm 10+
Getting started
npm install
npm run dev
The app starts with Vite and is available on the local URL printed in the terminal.
Demo access
Use the built-in local demo account on the login screen:
user / password
Scripts
npm run dev
npm run build
npm run preview
npm run lint
npm run typecheck
npm run test
npm run test:watch
npm run devstarts the Vite development server.npm run buildruns TypeScript checks and creates the production bundle.npm run previewserves the built bundle locally afternpm run build.npm run lintruns ESLint.npm run typecheckruns TypeScript without emitting files.npm run testruns the Vitest suite once.npm run test:watchstarts Vitest in watch mode.
Environment variables
Create a local .env file only when you need one of these optional behaviors:
# optional: switch the maps page to Google Maps instead of the built-in OSM fallback
VITE_GOOGLE_MAPS_API_KEY=your_api_key
# optional: deploy the app under a sub-path, for example /react-dashboard/
VITE_BASE_PATH=/your-base-path/
- Without
VITE_GOOGLE_MAPS_API_KEY, the maps demo automatically falls back to an embedded OpenStreetMap view. - Use
VITE_BASE_PATHonly when the app is deployed under a sub-path instead of the site root.
Project notes
- The legacy CRA, GraphQL demo backend, old Redux setup, and browser JWT/polyfill hacks were removed.
- The template keeps demo data local by default so it can run without a backend.
- The app root redirects to
/loginfor guests and to/app/mainfor active demo sessions. - The active local workflow is
npm install+npm run dev; there is nonpm startscript in this template. yarn.lockmay still exist from the original project history, but the active workflow isnpm.