<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Menghour Say</title>
    <description>The latest articles on Forem by Menghour Say (@saymenghour).</description>
    <link>https://forem.com/saymenghour</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F621498%2F7694f8c6-405d-46f8-8f70-a3f549d7de77.jpeg</url>
      <title>Forem: Menghour Say</title>
      <link>https://forem.com/saymenghour</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/saymenghour"/>
    <language>en</language>
    <item>
      <title>Vue Boilerplate with Vite, Tailwind CSS, Pinia, and Axios</title>
      <dc:creator>Menghour Say</dc:creator>
      <pubDate>Sat, 10 Feb 2024 08:47:19 +0000</pubDate>
      <link>https://forem.com/saymenghour/vue-boilerplate-with-vite-tailwind-css-pinia-and-axios-1fc6</link>
      <guid>https://forem.com/saymenghour/vue-boilerplate-with-vite-tailwind-css-pinia-and-axios-1fc6</guid>
      <description>&lt;p&gt;I’d like to share the most recent Vuejs boilerplate with you here. When you clone this repository, the boilerplate of Vue v3, Typescript, Vite, Vue Router, Pinia, Axios, Tailwind CSS, and Vue i18n for buildings efficient, faster, maintainable, and scalable for enterprise applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F398uilzm1vwfthfo323f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F398uilzm1vwfthfo323f.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/saymenghour/vue3-enterprise-boilerplate" rel="noopener noreferrer"&gt;Github - Vue Boilerplate&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 Table of Contents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;❓ What's Included?&lt;/li&gt;
&lt;li&gt;🖇️ Core Dependencies&lt;/li&gt;
&lt;li&gt;🗂️ Project Structure&lt;/li&gt;
&lt;li&gt;
🚀 Getting Started

&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;Installation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;💡 Scripts&lt;/li&gt;

&lt;li&gt;📝 License&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  ❓ What's Included?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[x] Authentication: Provides a secure login system for users.&lt;/li&gt;
&lt;li&gt;[x] Authorization: Implements role-based access control to manage user permissions.&lt;/li&gt;
&lt;li&gt;[x] Multiple Language: Supports localization and enables users to switch between different languages.&lt;/li&gt;
&lt;li&gt;[x] Theme (Light/Dark/System): Offers a choice of light, dark, or system-based theme for a personalized user experience.&lt;/li&gt;
&lt;li&gt;[x] Form Validation: Includes form validation functionality to ensure data integrity and improve user experience.&lt;/li&gt;
&lt;li&gt;[x] Error Handling: Handles and displays error messages in a user-friendly manner.&lt;/li&gt;
&lt;li&gt;[x] API Integration: Integrates with external APIs to fetch data and provide dynamic content.&lt;/li&gt;
&lt;li&gt;[ ] Responsive Design: Ensures the application is optimized for various screen sizes and devices.&lt;/li&gt;
&lt;li&gt;[ ] Testing: Includes a test suite with unit tests and integration tests for reliable code quality.&lt;/li&gt;
&lt;li&gt;[ ] Documentation: Provides comprehensive documentation to guide developers and users.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🖇️ Core Dependencies
&lt;/h2&gt;

&lt;p&gt;↑ Back to top&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Library&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vue&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E3.4.5-blue.svg" alt="Vue"&gt;&lt;/td&gt;
&lt;td&gt;A progressive JavaScript framework for building user interfaces.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vite&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E5.0.11-blue.svg" alt="Vite"&gt;&lt;/td&gt;
&lt;td&gt;Next-generation frontend build tooling for fast and efficient development.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typescript&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E5.3.3-blue.svg" alt="Typescript"&gt;&lt;/td&gt;
&lt;td&gt;A superset of JavaScript that enhances the development experience with static typing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vue Router&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E4.2.5-blue.svg" alt="Vue Router"&gt;&lt;/td&gt;
&lt;td&gt;Official router for Vue.js, used for managing application routes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vue i18n&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E9.7.0-blue.svg" alt="Vue i19n"&gt;&lt;/td&gt;
&lt;td&gt;Internationalization plugin for Vue.js applications, enabling multi-language support.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vue Query&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E1.26.0-blue.svg" alt="Vue i19n"&gt;&lt;/td&gt;
&lt;td&gt;A data-fetching and state management library for Vue.js, with powerful data-fetching capabilities.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pinia&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E2.1.7-blue.svg" alt="Pinia"&gt;&lt;/td&gt;
&lt;td&gt;An intuitive store for Vue.js applications, providing centralized state management.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Axios&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E1.6.5-blue.svg" alt="Axios"&gt;&lt;/td&gt;
&lt;td&gt;Promise-based HTTP client for making API requests.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tailwind CSS&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%255E3.4.1-blue.svg" alt="Tailwind CSS"&gt;&lt;/td&gt;
&lt;td&gt;A highly customizable CSS framework for rapid web development.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🗂️ Project Structure
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── public/&lt;br&gt;
│   ├── assets&lt;br&gt;
│   │   ├── fonts&lt;br&gt;
|   |   └── images&lt;br&gt;
│   └── favicon.ico&lt;br&gt;
├── src&lt;br&gt;
│   ├── assets&lt;br&gt;
│   │   ├── images&lt;br&gt;
│   │   └── styles&lt;br&gt;
│   ├── components&lt;br&gt;
│   │   ├── PrivateOutlet&lt;br&gt;
│   │   ├── ui&lt;br&gt;
│   │   └── ...&lt;br&gt;
│   ├── constants&lt;br&gt;
│   ├── hooks&lt;br&gt;
│   ├── http&lt;br&gt;
│   │   ├── axios&lt;br&gt;
│   │   └── index.ts&lt;br&gt;
│   ├── layouts&lt;br&gt;
│   │   ├── MainLayout.ts&lt;br&gt;
│   │   └── ...&lt;br&gt;
│   ├── locales&lt;br&gt;
│   │   ├── en&lt;br&gt;
│   │   └── km&lt;br&gt;
│   ├── modules&lt;br&gt;
│   │   ├── authentication&lt;br&gt;
│   │   ├── current-user&lt;br&gt;
│   │   ├── dashboard&lt;br&gt;
│   │   └── ...&lt;br&gt;
│   ├── router&lt;br&gt;
│   │   ├── privateRoutes.ts&lt;br&gt;
│   │   ├── publicRoutes.ts&lt;br&gt;
│   │   └── ...&lt;br&gt;
│   ├── services&lt;br&gt;
│   ├── types&lt;br&gt;
│   ├── utils&lt;br&gt;
│   │   ├── common&lt;br&gt;
│   │   ├── crypto&lt;br&gt;
│   │   └── ...&lt;br&gt;
│   ├── App.ts&lt;br&gt;
│   └── main.ts&lt;br&gt;
├── types&lt;br&gt;
├── package.json&lt;br&gt;
└── ...&lt;br&gt;
.&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  🚀 Getting Started&lt;br&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;↑ Back to top&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node Js&lt;/a&gt; version &lt;code&gt;v20.10.0&lt;/code&gt;. The current Long Term Support (LTS) release is an ideal starting point.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/download" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;. Visual Studio Code is the free and open-sourced code editor. It is one of the top most editor used especially for JavaScript application development.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Recommended Plugin for VSCode&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin" rel="noopener noreferrer"&gt;TypeScript Vue Plugin (Volar)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Vue.volar" rel="noopener noreferrer"&gt;Vue Language Features (Volar)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss" rel="noopener noreferrer"&gt;Tailwind CSS IntelliSense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode" rel="noopener noreferrer"&gt;Prettier - Code formatter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=rvest.vs-code-prettier-eslint" rel="noopener noreferrer"&gt;Prettier ESLint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag" rel="noopener noreferrer"&gt;Auto Rename Tag&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker" rel="noopener noreferrer"&gt;Code Spell Checker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint" rel="noopener noreferrer"&gt;ESLint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph" rel="noopener noreferrer"&gt;Git Graph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens" rel="noopener noreferrer"&gt;GitLens — Git supercharged&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;↑ Back to top&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone this repository to your computer:&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;https://github.com/saymenghour/vue3-enterprise-boilerplate.git
&lt;span class="nb"&gt;cd &lt;/span&gt;vue3-enterprise-boilerplate
code &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run command below to ignore git case-sensitive filename&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; core.ignorecase &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;From the project's root directory, install the required packages (dependencies):&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create environment files:&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up the environment variables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To run the app on your local machine:&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dev
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build for production&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Happy Coding :)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  💡 Scripts
&lt;/h2&gt;

&lt;p&gt;↑ Back to top&lt;/p&gt;

&lt;p&gt;The following scripts are available:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Script&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm install&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Installs the project dependencies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm dev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs the application in development mode.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Builds the production-ready optimized bundle.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm preview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Starts the preview server using Vite.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm lint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs ESLint to lint the project files and fix any issues.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Formats the source code using Prettier.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  📝 License
&lt;/h2&gt;

&lt;p&gt;This project is licensed under the &lt;a href="//./LICENSE"&gt;MIT&lt;/a&gt; License.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>pinia</category>
      <category>vite</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
