Here’s an organized and easy-to-follow version of your note for online publication:


Steps to Set Up a Vue 3 Project with TypeScript, Tailwind CSS, and Other Useful Libraries

  1. Create the Vue 3 project with TypeScript template

    npm create vue@latest my-app -- --template vue-ts
  2. Install required dependencies

    npm install tailwindcss postcss autoprefixer axios vue-router @vueuse/core @vueuse/motion lucide-vue-next vue-i18n vue-toastification@next yup
  3. Initialize Tailwind CSS

    npx tailwindcss init -p

Project Structure

src Folder Structure

src
β”œβ”€β”€ assets
β”‚   β”œβ”€β”€ styles
β”‚   β”‚   β”œβ”€β”€ base.css
β”‚   β”‚   β”œβ”€β”€ tailwind.css
β”‚   β”‚   β”œβ”€β”€ variables.css
β”‚   └── images
β”‚       └── logo.png
β”œβ”€β”€ components
β”‚   β”œβ”€β”€ common
β”‚   β”‚   β”œβ”€β”€ Button.vue
β”‚   β”‚   β”œβ”€β”€ Modal.vue
β”‚   β”‚   └── InputField.vue
β”‚   β”œβ”€β”€ layout
β”‚   β”‚   β”œβ”€β”€ AppHeader.vue
β”‚   β”‚   β”œβ”€β”€ AppSidebar.vue
β”‚   β”‚   β”œβ”€β”€ AppFooter.vue
β”‚   └── navigation
β”‚       └── Breadcrumbs.vue
β”œβ”€β”€ composables
β”‚   β”œβ”€β”€ useAuth.ts
β”‚   β”œβ”€β”€ useFetch.ts
β”‚   β”œβ”€β”€ useToast.ts
β”‚   └── index.ts
β”œβ”€β”€ i18n
β”‚   β”œβ”€β”€ en.json
β”‚   β”œβ”€β”€ fr.json
β”‚   └── index.ts
β”œβ”€β”€ layouts
β”‚   β”œβ”€β”€ DefaultLayout.vue
β”‚   β”œβ”€β”€ AuthLayout.vue
β”‚   └── AdminLayout.vue
β”œβ”€β”€ middleware
β”‚   β”œβ”€β”€ auth.ts
β”‚   β”œβ”€β”€ guest.ts
β”‚   └── admin.ts
β”œβ”€β”€ modules
β”‚   β”œβ”€β”€ dashboard
β”‚   β”‚   β”œβ”€β”€ components
β”‚   β”‚   β”‚   └── DashboardCard.vue
β”‚   β”‚   β”œβ”€β”€ views
β”‚   β”‚   β”‚   └── DashboardView.vue
β”‚   β”‚   └── store.ts
β”‚   └── users
β”‚       β”œβ”€β”€ components
β”‚       β”‚   └── UserCard.vue
β”‚       β”œβ”€β”€ views
β”‚       β”‚   β”œβ”€β”€ UserListView.vue
β”‚       β”‚   β”œβ”€β”€ UserDetailView.vue
β”‚       └── store.ts
β”œβ”€β”€ router
β”‚   β”œβ”€β”€ modules
β”‚   β”‚   β”œβ”€β”€ dashboardRoutes.ts
β”‚   β”‚   β”œβ”€β”€ authRoutes.ts
β”‚   β”‚   └── userRoutes.ts
β”‚   └── index.ts
β”œβ”€β”€ services
β”‚   β”œβ”€β”€ apiClient.ts
β”‚   β”œβ”€β”€ authService.ts
β”‚   └── userService.ts
β”œβ”€β”€ store
β”‚   β”œβ”€β”€ modules
β”‚   β”‚   β”œβ”€β”€ auth.ts
β”‚   β”‚   β”œβ”€β”€ user.ts
β”‚   β”‚   └── settings.ts
β”‚   └── index.ts
β”œβ”€β”€ utils
β”‚   β”œβ”€β”€ constants.ts
β”‚   β”œβ”€β”€ helpers.ts
β”‚   └── validationSchema.ts
β”œβ”€β”€ views
β”‚   β”œβ”€β”€ HomeView.vue
β”‚   β”œβ”€β”€ LoginView.vue
β”‚   β”œβ”€β”€ RegisterView.vue
β”‚   └── Error404View.vue
β”œβ”€β”€ App.vue
β”œβ”€β”€ main.ts
β”œβ”€β”€ shims-vue.d.ts
└── env.d.ts

Key Libraries Included

  • Tailwind CSS: For utility-first styling.
  • Axios: For HTTP requests.
  • Vue Router: For routing between pages.
  • VueUse: A collection of useful composition API functions.
  • Lucide Vue Next: For scalable vector icons.
  • Vue I18n: For internationalization (i18n) support.
  • Vue Toastification: For easy-to-use toast notifications.
  • Yup: For form validation schema.