Project Structure
Project Structure
Section titled “Project Structure”Understanding the project structure is essential for efficient development. This guide covers the directory organization, file conventions, and architectural patterns used in the template.
📁 Directory Overview
Section titled “📁 Directory Overview”Directorypublic/ Static assets served directly
- vite.svg
Directorysrc/ Main application source code
Directoryassets/ Static assets and global styles
Directorystyles/ Global CSS and theme files
- index.css
- vue.svg
Directorycomponents/ Reusable Vue components
Directoryui/ shadcn-vue component library (40+ components)
- …
DirectoryHiTable/ Advanced data table component
- …
DirectoryHiForm/ Dynamic form builder component
- …
DirectoryHiExport/ Data export component
- …
DirectoryCharts/ ApexCharts wrapper components
- …
DirectoryRichTextEditor/ TipTap rich text editor
- …
DirectoryGlobalSearch/ Global search functionality
- …
DirectoryAnimatedButton/ Custom animated button
- …
DirectoryBaseCard/ Reusable card components
- …
DirectoryHiLoading/ Loading state component
- …
DirectoryHiLogo/ Application logo component
- …
DirectoryNumeral/ Number formatting component
- …
Directorylayouts/ Layout components and structures
Directorycomponents/ Layout-specific components
- …
- mainLayout.vue
DirectorysideLayout/ Sidebar layout variant
- …
DirectorytopLayout/ Top navigation layout variant
- …
Directoryviews/ Page components and routes
Directoryoverview/ Dashboard and analytics pages
- …
Directorymanagement/ Admin management modules
- …
Directoryauth/ Authentication pages
- …
Directoryerrors/ Error pages (403, 404, 500)
- …
Directorysettings/ Settings and profile pages
- …
DirectoryUIElement/ Component showcase pages
- …
Directorystores/ Pinia state management
- …
Directoryrouter/ Vue Router configuration
- …
Directorylocales/ Internationalization files
- …
Directoryproviders/ Vue providers and context
- …
Directoryhooks/ Composable functions
- …
Directoryutils/ Utility functions and helpers
- …
Directorylib/ Library configurations
- …
Directoryconstant/ Application constants
- …
- main.ts Application entry point
- App.vue Root Vue component
- package.json Project dependencies and scripts
- vite.config.ts Vite build configuration
- tailwind.config.js Tailwind CSS configuration
- tsconfig.json TypeScript configuration
- components.json shadcn-vue configuration
🏗 Core Architecture
Section titled “🏗 Core Architecture”The template follows a modular, scalable architecture with clear separation of concerns:
Vue 3 + Composition API
Section titled “Vue 3 + Composition API”- Script Setup syntax for cleaner component code
- TypeScript everywhere with strict type checking
- Composable pattern for reusable logic
- Reactive state management with Pinia
Component Architecture
Section titled “Component Architecture”- Atomic design principles with ui/, components/, and layout separation
- Props-based configuration for maximum flexibility
- Slot-based composition for extensibility
- TypeScript interfaces for prop validation
📂 Key Directories Deep Dive
Section titled “📂 Key Directories Deep Dive”/src/components/
- Component Library
Section titled “/src/components/ - Component Library”shadcn-vue Library (/src/components/ui/
)
Contains 50+ production-ready components:
- Form Components: Button, Input, Select, Checkbox, Radio, Switch
- Layout Components: Card, Separator, Aspect Ratio, Container
- Navigation: Breadcrumb, Tabs, Menu, Pagination
- Feedback: Alert, Toast, Dialog, Popover, Tooltip
- Data Display: Table, Badge, Avatar, Calendar
- Advanced: Carousel, Stepper, Sidebar, Navigation Menu
Each component follows the shadcn-vue pattern with:
- TypeScript definitions
- Tailwind CSS styling
- Accessibility support
- Consistent API design
Custom Business Components
- HiTable: Enterprise data table with sorting, filtering, pagination, and export
- HiForm: Dynamic form builder with 9 field types and validation
- HiExport: Data export functionality with multiple formats
- Charts: ApexCharts integration with 6 chart types
- RichTextEditor: TipTap-based rich text editing
- GlobalSearch: Application-wide search functionality
Each business component includes:
- README.md documentation
- TypeScript type definitions
- Composable hooks for logic
- Example usage files
/src/views/
- Page Components
Section titled “/src/views/ - Page Components”Dashboard & Analytics (/src/views/overview/
)
dashboard/: Main dashboard with KPI metrics and charts
components/DataCard.vue
- Metric display cardscomponents/MonthlyRevenueComparison.vue
- Revenue comparison chartscomponents/RecentOrders.vue
- Recent order listingcomponents/TopReferralSources.vue
- Traffic source analyticscomponents/UserDeviceDistribution.vue
- Device usage charts
analyze/: Advanced analytics dashboard
components/KPIMetricsCard.vue
- Key performance indicatorscomponents/RevenueAreaChart.vue
- Revenue trend visualizationcomponents/SalesLineChart.vue
- Sales performance tracking
Admin Management (/src/views/management/
)
- user/: User management CRUD operations
- order/: Order tracking and management
- product/: Product catalog and inventory
- invoice/: Invoice generation and management
- calendar/: Event calendar with FullCalendar
- mail/: Email management interface
- chat/: Real-time messaging system
Each module includes:
- Index page with data table
- Detail page for individual items
- Add/edit forms
- Component library for module-specific UI
- Composables for data management
- TypeScript type definitions
/src/layouts/
- Layout System
Section titled “/src/layouts/ - Layout System”Flexible Layout Architecture
- mainLayout.vue: Base layout with theme and router setup
- sideLayout/: Sidebar navigation layout (default)
- Collapsible sidebar with menu
- Header with search and notifications
- Breadcrumb navigation
- topLayout/: Top navigation layout (alternative)
- Horizontal navigation bar
- Dropdown menus for sections
Layout components:
- LayoutHeader.vue: Application header with actions
- LayoutSidebar.vue: Navigation sidebar
- LayoutBreadcrumb.vue: Dynamic breadcrumb navigation
- LanguageSwitcher.vue: Internationalization controls
- Notification.vue: Notification center
- SettingSheet.vue: Theme and preference settings
🔧 Configuration Files
Section titled “🔧 Configuration Files”TypeScript Configuration
Section titled “TypeScript Configuration”Main TypeScript configuration with strict settings:
{ "compilerOptions": { "strict": true, "noImplicitAny": true, "strictNullChecks": true, "moduleResolution": "bundler", "target": "ES2020", "module": "ESNext" }}
Application-specific TypeScript settings:
{ "extends": "./tsconfig.json", "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}
Build Configuration
Section titled “Build Configuration”Vite Configuration (vite.config.ts
)
- Vue plugin with TypeScript support
- Path aliases for clean imports
- Development server settings
- Build optimizations
- CSS preprocessing
Tailwind Configuration (tailwind.config.js
)
- Design system tokens
- Custom component styles
- Dark mode configuration
- Plugin integrations
📋 File Naming Conventions
Section titled “📋 File Naming Conventions”Component Files
Section titled “Component Files”- PascalCase for component names:
UserTable.vue
,OrderDetail.vue
- kebab-case for directories:
user-management/
,order-detail/
- index files for barrel exports:
components/index.ts
TypeScript Files
Section titled “TypeScript Files”- camelCase for utilities:
formatDate.ts
,apiClient.ts
- PascalCase for classes:
ApiClient.ts
,UserService.ts
- lowercase for configuration:
router.ts
,store.ts
Asset Files
Section titled “Asset Files”- kebab-case for images:
user-avatar.png
,company-logo.svg
- descriptive names for CSS:
global.css
,components.css
🔄 State Management
Section titled “🔄 State Management”Pinia Store Structure (/src/stores/
)
- user.ts: User authentication and profile state
- setting.ts: Application settings and preferences
- index.ts: Store configuration and plugins
Each store follows the composition API pattern:
export const useUserStore = defineStore('user', () => { const user = ref<User | null>(null) const isLoggedIn = computed(() => !!user.value)
function login(credentials: LoginCredentials) { // Login logic }
return { user, isLoggedIn, login }})
🌐 Internationalization
Section titled “🌐 Internationalization”Locales Structure (/src/locales/
)
- en-US.json: English translations
- zh-CN.json: Chinese translations
- index.ts: i18n configuration
- types.ts: Translation type definitions
Translation key structure:
{ "common": { "buttons": { "save": "Save", "cancel": "Cancel" } }, "pages": { "dashboard": { "title": "Dashboard" } }}
🎯 Development Patterns
Section titled “🎯 Development Patterns”Composables Pattern
Section titled “Composables Pattern”Reusable Logic (/src/hooks/
)
- useMediaQuery.ts: Responsive design utilities
- useThemeColor.ts: Theme management
- useGlobalSearch.ts: Search functionality
- useAlertDialog.ts: Dialog management
Provider Pattern
Section titled “Provider Pattern”Context Providers (/src/providers/
)
- AlertDialogProvider: Global dialog management
- Centralized state for cross-component communication
- Type-safe context injection
📚 Documentation Structure
Section titled “📚 Documentation Structure”Each major component includes:
- README.md: Component overview and usage
- types/: TypeScript definitions
- composables/: Logic hooks
- components/: Sub-components
- sample.vue: Usage examples (where applicable)
🔍 Import Path Mapping
Section titled “🔍 Import Path Mapping”The project uses path aliases for clean imports:
// Instead ofimport UserTable from '../../../components/UserTable.vue'
// Use clean pathsimport UserTable from '@/components/UserTable.vue'import { formatDate } from '@/utils/date'import { useUserStore } from '@/stores/user'
Common aliases:
@/
→src/
@/components/
→src/components/
@/views/
→src/views/
@/utils/
→src/utils/