Awesome
Vue Starter
:poodle: A boilerplate for web applications with Vue and Tailwind using TypeScript on Vite.
:rainbow: View Demo: Live | Windows | macOS | Android | iOS
:octocat: Source Code: Web-side | Native-side | Server-side | Cloud-side
Table of Contents
Getting Started
Prerequisites:
- Node.js v20
- PNPM v9
Get started with Vue Starter.
# install dependencies
$ pnpm install
# dev server (in one terminal)
$ pnpm dev
# mock server (in another terminal)
$ pnpm mock
Or use barebones scaffolding for your new Vue app
$ pnpm dlx degit Shyam-Chen/Barebones-Templates/vue my-vue-app
Project Setup
Follow steps to execute this boilerplate.
Install dependencies
$ pnpm install
Compiles and hot-reloads for development
$ pnpm dev
Mock APIs during development
$ pnpm mock
Compiles and minifies for production
$ pnpm build
Locally preview the production build
$ pnpm preview
Lints and fixes files
$ pnpm lint
Check types
$ pnpm check
Runs unit tests
$ pnpm test
Runs end-to-end tests
$ pnpm e2e
Key Features
This seed repository provides the following features:
- ---------- Essentials ----------
- Vue - User Interface Framework
- Router - Routing
- Routes - File-based Routing
- Storer - State Management
- Formor - Form Validation
- Valibot - Schema Validation
- Localer - Internationalization and Localization
- Use - Composition Utilities
- Qrcode Image - QR Code Generation
- Lodash - JavaScript Utilities
- Date Fns - Date Utilities
- UnoCSS - CSS Utilities
- Iconify - Icon Utilities
- Tiptap - Rich Text Editor
- ECharts - Data Visualization
- ---------- Tools ----------
- Vite - Bundler
- TypeScript - JavaScript with Syntax for Types
- Sassy CSS - CSS Extension
- ESLint - Linter
- Prettier - Formatter
- Vitest - Test Runner
- Playwright - Test Automation
- ---------- Environments ----------
- Node.js - JavaScript Runtime Environment
- Pnpm - Package Manager
- Caddy - Web Server
- Docker - Containerized Application Development
- GitHub Actions - Continuous Integration and Delivery
- Render - Cloud Application Hosting
Configuration
Control the environment.
Default environments
Set your local environment variables.
// vite.config.ts
define: envify({
API_URL: process.env.API_URL || '',
}),
Continuous integration environments
Add environment secrets to the GitHub Actions workflow.
DEPLOY_HOOK=xxx
Continuous delivery environments
Add environment variables to the Render build.
API_URL=xxx
Container registry
Push the image to your registry.
$ docker build -f ./.github/registry/Dockerfile \
--build-arg SITE_ADDRESS=$SITE_ADDRESS \
-t $SITE_NAME .
$ docker tag $SITE_NAME $REGISTRY_URL
$ docker push $REGISTRY_URL
Directory Structure
The structure follows the LIFT Guidelines.
.
├── .github
├── app
│ ├── public
│ ├── src
│ │ ├── assets
│ │ ├── components
│ │ ├── composables
│ │ ├── layouts
│ │ ├── locales
│ │ ├── middleware
│ │ ├── plugins
│ │ ├── routes
│ │ ├── utilities
│ │ ├── workers
│ │ ├── App.vue
│ │ ├── main.ts
│ │ └── shims.d.ts
│ ├── index.html
│ ├── package.json
│ ├── tsconfig.json
│ └── vite.config.ts
├── e2e -> End-to-end testing of web pages
│ ├── src
│ ├── package.json
│ ├── playwright.config.ts
│ └── tsconfig.json
├── mock -> Mock backend API
│ ├── src
│ ├── package.json
│ ├── tsconfig.json
│ └── vite.config.ts
├── ui -> Design system
│ ├── src
│ ├── package.json
│ ├── tsconfig.json
│ └── vite.config.ts
├── .dockerignore
├── .editorconfig
├── .gitignore
├── Caddyfile
├── compose.yaml
├── Dockerfile
├── eslint.config.js
├── package.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── prettier.config.js
├── README.md
└── render.yaml