# nuxt3-awesome-starter3
**Repository Path**: xiaolinlu/nuxt3-awesome-starter3
## Basic Information
- **Project Name**: nuxt3-awesome-starter3
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: add-unit-testing
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-04-12
- **Last Updated**: 2025-04-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Nuxt 3 Awesome Starter
a Nuxt 3 starter template or boilerplate with a lot of useful features. and integrated with TailwindCSS 3.
> **WARNING** \
> Nuxt 3 is still in beta and is not recommended for production use.
## Features
- [x] 💨 [Tailwind CSS v3](https://tailwindcss.com/)
- [x] ✨ [Headless UI](https://headlessui.dev/)
- [x] 🔔 [Icon Pack Component (unplugin-icons)](https://icones.js.org/)
- [x] 🛹 [State & Store Management (Pinia)](https://pinia.vuejs.org/)
- [x] 🚩 [Localization (i18n) by @intlify](https://github.com/intlify/nuxt3)
- [x] 🌙 Switch Theme (light, dark, system, realtime)
- [x] 🇮🇩 Language Switcher
- [x] 🪝 Built-in Component & Layout
- [x] Eslint & Prettier
- [x] Husky & Commitlint
- [ ] Http Request (axios ?)
. | .
:-------------------------:|:-------------------------:
 | 
## Demo
[Demo](https://nuxt3-awesome-starter.vercel.app/)
## Table of Contents
- [Nuxt 3 Awesome Starter](#nuxt-3-awesome-starter)
* [Built-in Components](#built-in-components)
* [Quick Start](#quick-start)
* [Notes](#notes)
+ [Styles](#styles)
+ [Theme (Dark Mode)](#theme--dark-mode-)
+ [Localization](#localization)
+ [Icons](#icons)
+ [Precommit and Postmerge](#precommit-and-postmerge)
* [License](#license)
## Built-in Components
- [x] Footer
- [x] Button
- [x] Anchor (link)
- [x] Navbar
- [x] Navbar Builder
- [x] Drawer (on mobile)
- [x] Options (on mobile)
- [x] Action Sheet
- [x] Theme Toggle / Switcher
- [x] Page Layout
- [x] Wrapper
- [x] Header
- [x] Title
- [x] Body
- [x] Section
- [x] Section Wrapper
- [x] Section Title
- [x] Dashboard Layout
- [x] Sidebar
- [ ] Modal
- [ ] Alert
## Quick Start
* Clone this project to your computer `git clone https://github.com/viandwi24/nuxt3-awesome-starter`
* Install dependencies `npm install`
* Run `npm run dev` to start development server and open `http://localhost:3000` in your browser
* Run `npm run build` to build project and `npm run start` to start production server
Checkout the [deployment documentation](https://v3.nuxtjs.org/docs/deployment).
## Notes
### Styles
Tailwindcss import in :
```
/path/to/assets/sass/vendor.scss
```
and you can add custom styles in :
```
/path/to/assets/sass/app.scss
```
### Theme (Dark Mode)
ThemeManager is a plugin that allows you to switch between themes. this lib in :
```
/path/to/utils/theme.ts
```
`Thememanager` is a function-class construct when app.vue before mounted. theme construct inside `AppSetup()` in `/path/to/app.vue` :
```vue
```
To change theme, you can direct set theme from state `theme.setting`, example :
```vue
```
When you change state `theme.setting`, it will automatically change theme.
Theme Setting have 4 options :
- `light`
- `dark`
- `system` (operating system theme)
- `realtime` (realtime theme, if 05:00 - 17:00, it will change to light theme, otherwise dark)
We have state `theme.current`, this state return `light` or `dark` theme. basically it's process from `theme.setting`.
dont change theme with this state.
### Localization
Localization is a plugin that allows you to switch between languages. this lib in :
```
/path/to/utils/lang.ts
```
`LanguageManager` is a function-class construct when app.vue before mounted.
this lib depend on [@intlify/nuxt3](https://github.com/intlify/nuxt3)
lang construct inside `AppSetup()` in `/path/to/app.vue` :
To change language, you can direct set language from state `lang.setting`, example :
```vue
```
When you change state `locale.setting`, it will automatically change language.
### Icons
This project using unplugin-icons for auto generate and import icon as component.
You can see collection icon list in : [https://icones.js.org/](https://icones.js.org/)
you can use `` or ``.
in this project, configuration prefix as a "icon", you can see in `nuxt.config.ts` :
```js
export default defineNuxtConfig({
...
vite: {
plugins: [
UnpluginComponentsVite({
dts: true,
resolvers: [
IconsResolver({
prefix: 'Icon',
}),
],
}),
],
},
...
})
```
Example :
```vue
// use icon from collection "Simple Icons" and name icon is "nuxtdotjs"
// use icon from collection "Unicons" and name icon is "sun"
```
### Precommit and Postmerge
This project using husky and commitlint for precommit and postmerge.
when you commit, it will check your commit message and running "yarn lint-staged" to check your staged files.
configuration in : `/path/to/.husky/pre-commit` and `/path/to/commitlint.config.js`
And when Postmerge, it will run "yarn" to automatically install new dependencies.
configuration in `/path/to/.husky/post-merge`
## License
This project is licensed under the MIT license, Copyright (c) 2022 Alfian Dwi Nugraha. For more information see the [LICENSE](LICENSE.md) file.