A minimal, production-ready Vue 3 starter template with TypeScript, Vite, and Tailwind CSS v3.
- Vue 3 with Composition API and
<script setup>syntax - TypeScript for type safety and better developer experience
- Vite for lightning-fast development and optimized builds
- Tailwind CSS with complete design system and CSS resets
- Reka UI v2+ - 30+ accessible, unstyled components
- Responsive Layout with proper centering utilities and flexbox structure
- Mobile Detection -
useIsMobilecomposable for responsive design - Clean Starting Point - minimal boilerplate, maximum flexibility
- Bun Compatible - works seamlessly with Bun package manager
- Dark Mode Support - class-based dark mode switching
- Animation Ready - includes tailwindcss-animate plugin
- Production Ready - CSS resets, proper layout structure, and optimized builds
- Node.js ^20.19.0 || >=22.12.0 (as specified in package.json engines)
- Bun (recommended), npm, yarn, or pnpm
# Clone the template
git clone https://github.com/k1lgor/dyad-vue-template.git
cd dyad-vue-template
# Install dependencies
bun install
# or
pnpm install# Start development server (runs on http://localhost:5173)
bun dev
# or
pnpm run dev
# Type checking
pnpm run type-checkOpen http://localhost:5173 to view your app.
# Type-check, compile and minify
bun run build
# or
pnpm run build
# Preview production build
bun run preview
# or
pnpm run previewThis template includes a complete Tailwind CSS setup with:
- Custom Design System - predefined colors, spacing, and typography using CSS variables
- Dark Mode - class-based dark mode (
dark:prefix) - Custom Animations - accordion animations and transitions via tailwindcss-animate
- CSS Resets - proper margin/padding resets for html/body elements
- Component-Ready - all utility classes available out of the box
- Responsive Design - mobile-first approach with responsive breakpoints
tailwind.config.ts- Tailwind configuration with TypeScriptpostcss.config.js- PostCSS configuration with autoprefixersrc/global.css- Global styles and CSS custom properties
.
βββ src/
β βββ components/ # Reusable Vue components
β β βββ ui/ # Reka UI component library (30+ components)
β β βββ MadeWithDyad.vue # Centered footer component
β βββ composables/ # Vue composables (useIsMobile, etc.)
β βββ views/ # Page components
β β βββ HomeView.vue # Home page with centered layout
β βββ router/ # Vue Router configuration
β βββ stores/ # Pinia stores
β βββ lib/ # Utility functions (utils.ts)
β βββ App.vue # Root component with flexbox layout
β βββ main.ts # Application entry point
β βββ global.css # Global styles with Tailwind & CSS resets
βββ public/ # Public static files
βββ tailwind.config.ts # Tailwind CSS configuration
βββ postcss.config.js # PostCSS configuration
βββ vite.config.ts # Vite configuration
βββ package.json # Dependencies and scripts
- Frontend Framework: Vue 3.5.18
- Language: TypeScript
- Build Tool: Vite 6.0.0
- Styling: Tailwind CSS with tailwindcss-animate
- UI Components: Reka UI v2+ (30+ accessible components)
- Routing: Vue Router
- State Management: Pinia
- Form Validation: VeeValidate + Zod
- Utilities: @vueuse/core
- Icons: Lucide Vue Next
- Notifications: Vue Sonner
- Data Tables: @tanstack/vue-table
- Package Manager: Bun compatible (also works with npm/yarn/pnpm)
This template provides a clean starting point with:
- Responsive Layout - Flexbox-based App.vue with proper centering utilities
- Centered Footer - MadeWithDyad component with perfect horizontal centering
- CSS Resets - Proper margin/padding resets for consistent cross-browser rendering
- Mobile Detection -
useIsMobile()composable for responsive design logic - Development Ready - Hot module replacement and fast refresh
- Production Ready - Optimized builds with tree-shaking
-
useIsMobile()- Reactive mobile/desktop detection with 768px breakpoint<script setup> import { useIsMobile } from '@/composables/useIsMobile'; const isMobile = useIsMobile(); </script> <template> <div v-if="isMobile">Mobile View</div> <div v-else>Desktop View</div> </template>
- Start building your components in
src/components/ - Add new routes in
src/router/index.ts - Customize the design system in
tailwind.config.ts - Build your pages in
src/views/ - Create custom composables in
src/composables/ - Leverage the 30+ Reka UI components in
src/components/ui/
Customize colors, fonts, and spacing in tailwind.config.ts:
theme: {
extend: {
colors: {
// Your custom colors
},
fontFamily: {
// Your custom fonts
},
}
}This template includes a comprehensive UI component library in src/components/ui/ with 30+ components. Components are built with:
- Reka UI v2+ for accessibility and logic (formerly Radix Vue)
- Tailwind CSS for styling and theming
- TypeScript for type safety and IntelliSense
- Vue 3 Composition API for modern development patterns
Key Features:
- WCAG compliant accessibility
- Unstyled primitives for complete design freedom
- Dark/light mode support
- Mobile-responsive design
- TypeScript definitions included
Available Components: Accordion, Alert, Avatar, Badge, Button, Calendar, Card, Carousel, Checkbox, Dialog, Dropdown, Form, Input, Select, Table, Tabs, and many more!
- VS Code with the following extensions:
- Vue - Official (formerly Volar)
- TypeScript Vue Plugin
- Tailwind CSS IntelliSense
TypeScript support for .vue imports is enabled through vue-tsc. The template includes proper type declarations in src/vite-env.d.ts.
The built files will be in the dist/ directory, ready for deployment to:
- Static Hosting: Netlify, Vercel, GitHub Pages
- CDN: Any CDN that supports static files
- Traditional Servers: Apache, Nginx, etc.
Contributions, issues, and feature requests are welcome!
This project is Apache License, Version 2.0 licensed.
Made with β€οΈ by k1lgor