Prerequisites
Before you start, make sure you have the following installed:- Node.js 18 or later
- npm (included with Node.js)
Get the template
You have two ways to start a new project from this template:Run the app
Start the dev server
http://localhost:5173 with hot module replacement enabled. Changes to any file in src/ are reflected instantly in the browser.Build for production
Compile and bundle
tsc -b to type-check the project, then bundles everything with Vite (powered by rolldown-vite). Output goes to the dist/ directory.Lint the codebase
What you get
After setup, you have a fully working app with the following structure:Three pages
The router is configured with three pages under a shared layout:| Route | Component | File |
|---|---|---|
/ | HomePage | src/pages/HomePage.tsx |
/features | FeaturesPage | src/pages/FeaturesPage.tsx |
/about | AboutPage | src/pages/AboutPage.tsx |
src/routes/AppRoutes.tsx:
src/routes/AppRoutes.tsx
Shared layout
All pages render inside theLayout component (src/components/Layout), which provides a consistent navigation bar and footer. Child pages are injected via React Router’s <Outlet />.
UI components
The template includes three shadcn/ui-style primitives built on Radix UI and styled with Tailwind CSS:Button
Accessible button with variants powered by
class-variance-authority.Card
Container component for grouping related content.
Input
Styled text input with full TypeScript props forwarding.
Path aliases
The@ alias resolves to the src/ directory, so you can import from anywhere without relative path traversal:
vite.config.ts
example usage
Next steps
Project structure
Understand how the template is organized.
Adding pages
Add new routes and pages to the app.
UI components
Explore the included shadcn/ui primitives.
Customizing styles
Extend or override Tailwind CSS styles.