Vue3 + Vite + TypeScript admin starter template using `<script setup>` single-file components
light-vue3-starter — Vue Admin dashboard Template
By tommy44458
A Vue3, Vite, and TypeScript admin starter template integrating Pinia, TailwindCSS, ElementPlus, and an MQTT client, with a login page and example console pages.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Preview provided in the project README.
One original preview is available. Open the full image to inspect the design.
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Integrates Pinia state management, Vue Router routing, and the ElementPlus UI component library
Styling layer includes TailwindCSS and Stylus, with Stylelint for style checking
Built-in mqtt-vue-hook; the README provides examples for MQTT connection, subscription, publishing, and event registration, supporting MQTTv5
ESLint uses the Airbnb TypeScript configuration, paired with Prettier, EditorConfig, and a pre-commit hook
Provides an online demo; both login username and password are tommy
Template Details
light-vue3-starter is a starter template for admin management interfaces, described by its author as "A LIGHT Vue3 Starter Admin Template". The stack is based on Vue3 and Vite, written in TypeScript, and uses Vue3 `<script setup>` single-file components. State management uses Pinia, routing uses Vue Router, the UI component library is ElementPlus, and the styling approach includes TailwindCSS and Stylus.
The template includes built-in MQTT support. The README states it supports MQTTv5 and provides example code for connection, subscription, publishing, and event registration via mqtt-vue-hook, which can be used to build IoT device control systems. The repository provides an online demo; the demo login credentials are username tommy and password tommy.
For code standards, the template uses ESLint with the Airbnb TypeScript configuration and includes Stylelint, Prettier, EditorConfig, and a Git pre-commit hook that runs lint checks before committing. The README also explains how to disable code standard checks: add .eslintignore and .stylelintignore under the src/ directory respectively.
Installation and running use yarn: yarn install to install dependencies, yarn dev to start development, yarn build to build, and yarn lint and yarn lint:style to run ESLint and Stylelint checks respectively. The project is under the MIT license, allowing free use, modification, commercial use, and distribution of this version of the code, provided the copyright notice and license notice are retained; third-party assets such as demo images, fonts, and icons require separate verification of their respective licenses.
Is it right for your project?
Use Cases
- Starting projects that need to quickly set up a Vue3 admin management interface
- Console-type applications that need to integrate MQTT on the frontend for communication with IoT devices
- Frontend projects that want to use TypeScript and Airbnb code standards to constrain team collaboration
- Admin systems that need to combine ElementPlus and TailwindCSS for interface development
Suitable For
- Developers familiar with Vue3 and TypeScript who want to use an existing admin skeleton directly
- Projects that need frontend MQTT client examples for device control or data subscription
- Teams that accept Airbnb code standards and are willing to use ESLint, Stylelint, and Prettier
- Individuals or organizations that need a starter template under the MIT license that can be freely modified and used commercially
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Install dependencies with yarn: yarn install
- 2
Run in development mode: yarn dev; build: yarn build
- 3
Code checks: yarn lint (ESLint) and yarn lint:style (Stylelint)
- 4
Demo login username is tommy, password is tommy
- 5
To disable code standard checks, add .eslintignore and .stylelintignore under the src/ directory respectively
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version in the public repository under the MIT license; the free scope is this version of the code and does not mean external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version of the code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- This template is a starter scaffold to help developers begin development based on Vue3, Pinia, TailwindCSS, ElementPlus, MQTT, and TypeScript; it is not a complete production-ready application.
- MQTT functionality requires connecting to an external MQTT broker (e.g., host and port for ws/wss/mqtt protocols); you must prepare this yourself and bear the corresponding service costs.
- The online demo uses fixed username tommy and password tommy for demonstration purposes only and cannot be used as a production authentication solution.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
This template should help get you started developing with Vue3, Pinia, TailwindCSS, ElementPlus, Mqtt and TypeScript in Vite.
Original README
Also, this template also supports MQTTv5 so that it can easily become a control system for IoT devices.
Original README
https://github.com/tommy44458/light-vue3-starter/blob/main/LICENSEhttps://github.com/tommy44458/light-vue3-starter/blob/main/README.mdAccount: tommy Password: tommy
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-03. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 77 / 100
- Technologies
- Vue · Vite
- Website type
- Admin dashboard · Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2024-02-11
- Screenshot last checked
- 2026-10-03
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Vue as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-04
Inspect the recorded source material
SHA-256: 81ea18191b39acfd16d08b5e96a6af99139785f9b15404984d07e71c727ea25f
2026-10-03T18:57:06.161Z
Source file / repository# A LIGHT Vue3 Starter Admin Template.
<p align="center">
<img src="https://img.shields.io/badge/-Vue3-34495e?logo=vue.j" />
<img src="https://img.shields.io/badge/-Vite4-646cff?logo=vite&logoColor=white" />
<img src="https://img.shields.io/badge/-TypeScript-blue?logo=typescript&logoColor=white" />
<img src="https://img.shields.io/badge/-Pinia-yellow?logo=picpay&logoColor=white" />
<img src="https://img.shields.io/badge/-Tailwindcss-blue?logo=TailwindCSS&logoColor=white">
<img src="https://img.shields.io/badge/-ESLint-4b32c3?logo=eslint&logoColor=white" />
<img src="https://img.shields.io/badge/-Prettier-ef9421?logo=Prettier&logoColor=white">
<img src="https://img.shields.io/badge/-ElementPlus-blue?logo=ElementPlus&logoColor=white">
<img src="https://app.codacy.com/project/badge/Grade/e18438ee8e404b43aad89f506934f048"/>
<p>
This template should help get you started developing with Vue3, Pinia, TailwindCSS, ElementPlus, Mqtt and TypeScript in Vite. The template uses Vue3 `<script setup>` SFCs. Also, this template also supports MQTTv5 so that it can easily become a control system for IoT devices.

### Check out the [Online DEMO](https://light-vue3-starter-tommy44458.vercel.app/).

```sh
// login info
Account: tommy
Password: tommy
```
## This starter template includes:
- [Vue 3](https://vuejs.org/guide/introduction.html)
- [Vite](https://vitejs.dev/guide/)
- [Pinia](https://pinia.vuejs.org/)
- [TailwindCSS](https://tailwindcss.com/)
- [Vue Router](https://github.com/vuejs/router)
- [ElementPlus UI](https://element-plus.org/en-US/)
- [Stylus](https://github.com/stylus/stylus)
- [Stylelint](https://github.com/stylelint/stylelint)
- [Eslint](https://eslint.org/)
- [eslint-config-airbnb-typescript](https://github.com/iamturns/eslint-config-airbnb-typescript)
- [mqtt-vue-hook](https://github.com/tommy44458/mqtt-vue-hook)
## Collaboration-code specification
Many tech teams generally use [Airbnb](https://github.com/airbnb/javascript) to constrain code specifications at present.
- Through `pre-commit` to implement lint check,unit test,code formatting,etc.。
- Combined with the VsCode(formatting automatically when saving:editor.formatOnSave: true)
- Combined with the Git hooks(execute before commit:pre-commit => yarn lint)
- IDE configuration(`.editorconfig`),ESLint configuration(`.eslintrc.js` 和 `.eslintignore`),StyleLint configuration(`.stylelintrc`, `.stylelintignore`),for details, please refer to the corresponding configuration file。
Close code specification
add `.eslintignore` and `.stylelintignore` to `src/` directory respectively to ignore
## Recommended IDE Setup
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar)
## Support MQTT client
#### *.ts
``` ts
// protocol = 'wss', 'ws', 'mqtt', ...
// host = ip or domain
// port = 8083, 1883, ...
import { useMQTT } from 'mqtt-vue-hook'
const mqttHook = useMQTT()
mqttHook.connect(`${protocol}://${host}:${port}`, {
clean: false,
keepalive: 60,
clientId: `mqtt_client_${Math.random().toString(16).substring(2, 10)}`,
connectTimeout: 4000,
})
```
#### views/console/ConsolePage1.vue
``` vue
<script setup lang="ts">
import { useMQTT } from 'mqtt-vue-hook'
const mqttHook = useMQTT()
const form = reactive({
// ...data
})
const mqttSubscribe = () => {
mqttHook.subscribe(['+/vue3/starter/console/page1'], 1)
// if receive mes from '+/vue3/starter/console/page1' before excute callback function.
mqttHook.registerEvent(
'+/vue3/starter/console/page1',
// callback funtion
(topic: string, message: string) => {
const mesJson = JSON.parse(message.toString())
ElNotification({
title: `MQTT TOPIC: ${topic}`,
message: mesJson,
type: 'info',
})
},
'key',
)
}
const onPublish = () => {
mqttHook.publish(
'tommy44458/vue3/starter/console/page1',
JSON.stringify({
// ...form.data
}),
)
}
onMounted(() => {
mqttSubscribe()
})
onUnmounted(() => {
// remove Event by topic and key
mqttHook.unRegisterEvent('+/vue3/starter/console/page1', 'key')
mqttHook.unSubscribe('+/vue3/starter/console/page1')
})
```
## Getting Started
#### Install
```sh
yarn install
```
#### Dev
```sh
yarn dev
```
#### Build
```sh
yarn build
```
#### Syntax check
```sh
// eslint
yarn lint
// stylelint
yarn lint:style
```
Explore similar templates
Compare previews and descriptions within the same stack and category.

vuestic-admin
Vuestic Admin is an open-source Vue 3 admin template maintained by Epicmax, built on Vuestic UI with Vite, Pinia, and Tailwind CSS. It provides a ready-to-run dashboard with a dark theme, global configuration, i18n internationalization, and responsive layout.
Vue · Admin dashboard

vitesse
Vitesse is an opinionated Vite + Vue 3 starter template maintained by antfu-collective, offering file-based routing, component and API auto-import, Pinia, UnoCSS, PWA, i18n, Markdown, vite-ssg, TypeScript, Vitest, and Cypress.
Vue · Starter

v3-admin-vite
v3-admin-vite is an AI-friendly Vue3 admin template built on Vue3, Vite, TypeScript, and Element Plus. It keeps a lean structure with detailed comments, supports backend-controlled dynamic route permissions, page-level and button-level permissions, multiple themes and layouts, and mobile compatibility.
Vue · Admin dashboard

vue-typescript-admin-template
A Vue 2.6 + TypeScript + Element UI admin template ported from vue-element-admin, offering type safety and enterprise features like permission authentication, internationalization, dynamic themes, editors, charts, Excel/PDF handling, and PWA support.
Vue · Admin dashboard

vue-antd-admin
Vue Antd Admin is the Vue implementation of Ant Design Pro, providing an out-of-the-box front-end and design solution for admin dashboards.
Vue · Admin dashboard

coreui-free-vue-admin-template
CoreUI's official free Vue admin template, MIT licensed, built on Vue 3 and the CoreUI component library with Vue Router, Pinia, and Vite.
Vue · Admin dashboard
