Awesome
<p align="center"> <img alt="Vitify - Opinionated Vuetify Admin Starter Template" src="public/favicon.svg" width=200px/> </p> <h1 align="center">Vitify Admin</h1> <p align="center"> <a href="https://github.com/vuejs/vue"> <img src="https://img.shields.io/badge/vue-2.7.16-brightgreen.svg" alt="vue"> </a> <a href="https://github.com/vuetifyjs/vuetify"> <img src="https://img.shields.io/badge/vuetify-2.7.2-blue.svg" alt="vuetify"> </a> <a href="https://github.com/kingyue737/vitify-admin/blob/main/LICENSE"> <img src="https://img.shields.io/github/license/mashape/apistatus.svg" alt="license"> </a> </p> <p align='center'> <b>Vite</b> + <b>Vuetify</b>, Opinionated Admin Starter Template<br><br> </p> <p align='center'> <a href="https://vitify-admin.netlify.app/">Live Demo<br><br></a> <a href="https://kingyue737.github.io/vitify-docs/">Documentation<br><br></a> </p>Variants
-
vitify-nuxt - with Nuxt 3, the best DX ๐ฅ๐ฅ๐ฅ
-
vitify-next - Lightweight Vue 3 version of this template
-
vitify-electron - Vuetify 3 + Electron starter
Features
-
๐ฆพ Full TypeScript Support and intellisense for Vuetify 2 components, powered by Volar
-
๐ Vue 2.7 - Composition API and
<script setup>
-
๐๏ธ File based routing
-
๐ Layout system
-
๐ I18n ready
-
๐ฅ APIs auto importing - use Composition API and others directly
-
โ๏ธ Deploy on Netlify, zero-config
-
๐งช Unit/Component Testing with Vitest + Testing Library, E2E Testing with Cypress on GitHub Actions
Admin Starter Template
-
๐ช Layout with drawer, header, footer(status bar) and login page
-
๐งญ Auto generated navigation drawer and breadcrumbs based on routes
-
๐คก Mock API in dev and testing with Mock Service Worker
-
๐ Notification store
-
๐งโ๐ผ Route authority based on user role
-
๐ Data visualization with vue-echarts
-
๐ Communicate with backend with REST API powered by axios
-
๐จ Theme color customization and dark mode
-
๐ฑ Responsive layout
Pre-packed
UI Frameworks
- Vuetify 2 - Material Design Framework
Plugins
- Vue Router
vite-plugin-pages
- File system based routingvite-plugin-vue-layouts
- Layouts for pages
- Pinia - Intuitive, type safe, light and flexible Store for Vue using the Composition API
unplugin-vue-components
- Auto import Vuetify 2 componentsunplugin-auto-import
- Directly use Vue Composition API and others without importing- PortalVue - Use
<Teleport>
of Vue 3 in Vue 2 - Vue I18n - Internationalization
vue-i18n-bridge
- Backport Composition API and message format syntax to Vue 2unplugin-vue-i18n
- Prebundle Vue I18n messages and support SFC i18n custom block
- VueUse - Collection of useful composition APIs
- Mock Service Worker - Seamless REST/GraphQL API mocking library for browser and Node.js
vite-plugin-vue2-svg
- Load SVG files as Vue components, and auto register as Vuetifyv-icon
s
Compatibility
@vitejs/plugin-legacy
- Generate polyfills with@babel/preset-env
in production bundlepostcss-preset-env
- Convert modern CSS into what most browsers understand, determining polyfills based onbrowserslist
Coding Style
Dev tools
- TypeScript
- Vitest - Unit testing powered by Vite
- Cypress - E2E testing
- pnpm - Fast, disk space efficient package manager
- Netlify - zero-config deployment
- VS Code Extensions
- Volar - TypeScript support inside Vue SFCs
- i18n Ally - All in one i18n support
- ESLint - Find and fix problems in your code
- Prettier - Code formatter
- EditorConfig for VS Code
- Material Design Icons Intellisense
Try it now!
Vitify Admin requires Node >=16.6.0
GitHub Template
Create a repo from this template on GitHub.
Clone to local
If you prefer to do it manually with the cleaner git history
npx degit kingyue737/vitify-admin my-vitify-app
cd my-vitify-app
pnpm i
Vitify Admin requires
pnpm patch
for bug fixing in dependencies before maintainers release them. If you are usingyarn
, you can useyarn patch
. Fornpm
users,patch-package
is required asnpm
has no built-in patching functionality.
Checklist
When you use this template, try follow the checklist to update your info properly
- Change the author name in
LICENSE
- Change the title in
index.html
, navigation drawer and login page - Change the hostname in
vite.config.ts
- Change the favicon in
public
- Clean up the
README
and remove routes - Change the copyright in navigation drawer and login page
- Change default locale of
vue-i18n
- Change or remove Cypress Cloud related ID in ci.yml
And, enjoy :)
Usage
Development
Just run and visit http://localhost:9527
pnpm dev
Build
To build the App, run
pnpm build
And you will see the generated file in dist
that ready to be served.
Type Check
pnpm typecheck
Testing
pnpm test:unit
For E2E test, you need to build the project first
pnpm build
pnpm test:e2e
Record on Cypress Cloud
Go to Cypress Cloud, create a new project and add its projectId
as ${CYPRESS_PROJECT_ID}
, its record key
as $CYPRESS_RECORD_KEY
in your repositry secrets (https://github.com/your-name/project-name/settings/secrets/actions).
If you don't want to use Cypress Cloud, remove record: true
and the entire env
block from .github/workflows/ci.yml
:
- name: Cypress
uses: cypress-io/github-action@v4
with:
install-command: echo
build: pnpm run build
start: pnpm run preview
record: true
command-prefix: '--'
env:
# pass the Dashboard record key as an environment variable
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
# pass GitHub token to allow accurately detecting a build vs a re-run build
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# pass the project ID from the secrets through environment variable
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
Deploy on Netlify
Go to Netlify and select your clone, OK
along the way, and your App will be live in a minute.
Documentation
The documentation of this template is powered by VitePress and DocSearch
Repo: https://github.com/kingyue737/vitify-docs
Acknowledgement
Inspired by vitesse and vue-element-admin ๐. Thanks for every developer for making frontend community better.
I made this starter template for promptly scaffolding admin projects of my company, along with some good practices I've learned during making these apps.
Currently, plenty of awesome Vue 2 librarys have not migrated to Vue 3 ecosystem, maybe never ๐ญ. There is still a long way to go before Vuetify 3 includes all the features of Vuetify 2. So I struggle with bridging perfect DX of Vue 3 to my Vuetify 2 projects. It's strongly opinionated, but hope it can help you to avoid detours.
Don't hesitate to open an issue or a discussion if you meet any problem.