├── template ├── static │ ├── v.png │ ├── favicon.ico │ └── README.md ├── .gitignore ├── store │ ├── index.js │ └── README.md ├── components │ ├── README.md │ ├── NuxtLogo.vue │ └── VuetifyLogo.vue ├── layouts │ ├── README.md │ └── default.vue ├── pages │ ├── README.md │ ├── inspire.vue │ └── index.vue ├── assets │ ├── README.md │ └── style │ │ └── app.styl ├── .eslintrc.js ├── plugins │ ├── README.md │ └── vuetify.js ├── middleware │ └── README.md ├── README.md ├── package.json └── nuxt.config.js ├── meta.js ├── README.md └── LICENSE /template/static/v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vuetifyjs/nuxt/HEAD/template/static/v.png -------------------------------------------------------------------------------- /template/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vuetifyjs/nuxt/HEAD/template/static/favicon.ico -------------------------------------------------------------------------------- /template/.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | node_modules 3 | 4 | # logs 5 | npm-debug.log 6 | 7 | # Nuxt build 8 | .nuxt 9 | 10 | # Nuxt generate 11 | dist 12 | -------------------------------------------------------------------------------- /template/store/index.js: -------------------------------------------------------------------------------- 1 | export const state = () => ({ 2 | sidebar: false 3 | }) 4 | 5 | export const mutations = { 6 | toggleSidebar (state) { 7 | state.sidebar = !state.sidebar 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /template/components/README.md: -------------------------------------------------------------------------------- 1 | # COMPONENTS 2 | 3 | The components directory contains your Vue.js Components. 4 | Nuxt.js doesn't supercharge these components. 5 | 6 | **This directory is not required, you can delete it if you don't want to use it.** 7 | -------------------------------------------------------------------------------- /template/layouts/README.md: -------------------------------------------------------------------------------- 1 | # LAYOUTS 2 | 3 | This directory contains your Application Layouts. 4 | 5 | More information about the usage of this directory in the documentation: 6 | https://nuxtjs.org/guide/views#layouts 7 | 8 | **This directory is not required, you can delete it if you don't want to use it.** 9 | -------------------------------------------------------------------------------- /template/pages/README.md: -------------------------------------------------------------------------------- 1 | # PAGES 2 | 3 | This directory contains your Application Views and Routes. 4 | The framework reads all the .vue files inside this directory and create the router of your application. 5 | 6 | More information about the usage of this directory in the documentation: 7 | https://nuxtjs.org/guide/routing 8 | -------------------------------------------------------------------------------- /template/assets/README.md: -------------------------------------------------------------------------------- 1 | # ASSETS 2 | 3 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript. 4 | 5 | More information about the usage of this directory in the documentation: 6 | https://nuxtjs.org/guide/assets#webpacked 7 | 8 | **This directory is not required, you can delete it if you don't want to use it.** 9 | -------------------------------------------------------------------------------- /template/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: 'babel-eslint', 4 | env: { 5 | browser: true, 6 | node: true 7 | }, 8 | extends: 'standard', 9 | // required to lint *.vue files 10 | plugins: [ 11 | 'html' 12 | ], 13 | // add your custom rules here 14 | rules: {}, 15 | globals: {} 16 | } 17 | -------------------------------------------------------------------------------- /template/plugins/README.md: -------------------------------------------------------------------------------- 1 | # PLUGINS 2 | 3 | This directory contains your Javascript plugins that you want to run before instantiating the root vue.js application. 4 | 5 | More information about the usage of this directory in the documentation: 6 | https://nuxtjs.org/guide/plugins 7 | 8 | **This directory is not required, you can delete it if you don't want to use it.** 9 | -------------------------------------------------------------------------------- /template/static/README.md: -------------------------------------------------------------------------------- 1 | # STATIC 2 | 3 | This directory contains your static files. 4 | Each file inside this directory is mapped to /. 5 | 6 | Example: /static/robots.txt is mapped as /robots.txt. 7 | 8 | More information about the usage of this directory in the documentation: 9 | https://nuxtjs.org/guide/assets#static 10 | 11 | **This directory is not required, you can delete it if you don't want to use it.** 12 | -------------------------------------------------------------------------------- /template/middleware/README.md: -------------------------------------------------------------------------------- 1 | # MIDDLEWARE 2 | 3 | This directory contains your Application Middleware. 4 | The middleware lets you define custom function to be ran before rendering a page or a group of pages (layouts). 5 | 6 | More information about the usage of this directory in the documentation: 7 | https://nuxtjs.org/guide/routing#middleware 8 | 9 | **This directory is not required, you can delete it if you don't want to use it.** 10 | -------------------------------------------------------------------------------- /template/store/README.md: -------------------------------------------------------------------------------- 1 | # STORE 2 | 3 | This directory contains your Vuex Store files. 4 | Vuex Store option is implemented in the Nuxt.js framework. 5 | Creating a index.js file in this directory activate the option in the framework automatically. 6 | 7 | More information about the usage of this directory in the documentation: 8 | https://nuxtjs.org/guide/vuex-store 9 | 10 | **This directory is not required, you can delete it if you don't want to use it.** 11 | -------------------------------------------------------------------------------- /template/pages/inspire.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /template/README.md: -------------------------------------------------------------------------------- 1 | # {{ name }} 2 | 3 | > {{ description }} 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | $ npm install # Or yarn install 10 | 11 | # serve with hot reload at localhost:3000 12 | $ npm run dev 13 | 14 | # build for production and launch server 15 | $ npm run build 16 | $ npm start 17 | 18 | # generate static project 19 | $ npm run generate 20 | ``` 21 | 22 | For detailed explanation on how things work, check out the [Nuxt.js](https://github.com/nuxt/nuxt.js) and [Vuetify.js](https://vuetifyjs.com/) documentation. 23 | -------------------------------------------------------------------------------- /template/assets/style/app.styl: -------------------------------------------------------------------------------- 1 | // Import and define Vuetify color theme 2 | // https://vuetifyjs.com/en/style/colors 3 | @require '~vuetify/src/stylus/settings/_colors' 4 | $theme := { 5 | primary: $blue.darken-2 6 | accent: $blue.accent-2 7 | secondary: $grey.lighten-1 8 | info: $blue.lighten-1 9 | warning: $amber.darken-2 10 | error: $red.accent-4 11 | success: $green.lighten-2 12 | } 13 | 14 | // Import Vuetify styling 15 | {{#alacarte}} 16 | @require '~vuetify/src/stylus/app' 17 | {{else}} 18 | @require '~vuetify/src/stylus/main' 19 | {{/alacarte}} 20 | 21 | .page 22 | @extend .fade-transition 23 | -------------------------------------------------------------------------------- /meta.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | helpers: { 3 | raw: function(options) { 4 | return options.fn(this) 5 | } 6 | }, 7 | prompts: { 8 | name: { 9 | 'type': 'string', 10 | 'required': true, 11 | 'message': 'Project name' 12 | }, 13 | description: { 14 | 'type': 'string', 15 | 'required': false, 16 | 'message': 'Project description', 17 | 'default': 'Nuxt.js + Vuetify.js project' 18 | }, 19 | author: { 20 | 'type': 'string', 21 | 'message': 'Author' 22 | }, 23 | alacarte: { 24 | 'type': 'confirm', 25 | 'message': 'Use a-la-carte components?', 26 | 'default': false 27 | } 28 | }, 29 | completeMessage: '{{#inPlace}}To get started:\n\n npm install # Or yarn\n npm run dev{{else}}To get started:\n\n cd {{destDirName}}\n npm install # Or yarn\n npm run dev{{/inPlace}}' 30 | }; 31 | -------------------------------------------------------------------------------- /template/plugins/vuetify.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | {{#alacarte}} 3 | import Vuetify, { 4 | VApp, // required 5 | VNavigationDrawer, 6 | VFooter, 7 | VToolbar 8 | } from 'vuetify/lib' 9 | import { Ripple } from 'vuetify/lib/directives' 10 | 11 | Vue.use(Vuetify, { 12 | components: { 13 | VApp, 14 | VNavigationDrawer, 15 | VFooter, 16 | VToolbar 17 | }, 18 | directives: { 19 | Ripple 20 | }{{#theme}}, 21 | theme: { 22 | primary: '#9c27b0', 23 | accent: '#ce93d8', 24 | secondary: '#424242', 25 | info: '#0D47A1', 26 | warning: '#ffb300', 27 | error: '#B71C1C', 28 | success: '#2E7D32' 29 | }{{/theme}} 30 | }) 31 | {{else}} 32 | import Vuetify from 'vuetify' 33 | 34 | Vue.use(Vuetify{{#theme}}, { theme: { 35 | primary: '#9c27b0', 36 | accent: '#ce93d8', 37 | secondary: '#424242', 38 | info: '#0D47A1', 39 | warning: '#ffb300', 40 | error: '#B71C1C', 41 | success: '#2E7D32' 42 | }}{{/theme}}) 43 | {{/alacarte}} 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Starter 2 | 3 | A [Nuxt.js](https://github.com/nuxt/nuxt.js) + [Vuetify.js](https://github.com/vuetifyjs/vuetify) starter project template without the distraction of a complicated development environment. 4 | 5 | ## Installation 6 | 7 | This is a project template for [vue-cli](https://github.com/vuejs/vue-cli). 8 | 9 | ``` bash 10 | $ vue init vuetifyjs/nuxt my-project 11 | $ cd my-project 12 | # install dependencies 13 | $ npm install # Or yarn install 14 | ``` 15 | 16 | > Make sure to use a version of vue-cli >= 2.1 (`vue -V`). 17 | 18 | ## Usage 19 | 20 | ### Development 21 | 22 | ``` bash 23 | # serve with hot reloading at localhost:3000 24 | $ npm run dev 25 | ``` 26 | 27 | Go to [http://localhost:3000](http://localhost:3000) 28 | 29 | ### Production 30 | 31 | ``` bash 32 | # build for production and launch the server 33 | $ npm run build 34 | $ npm start 35 | ``` 36 | 37 | ### Generate 38 | 39 | ``` bash 40 | # generate a static project 41 | $ npm run generate 42 | ``` 43 | -------------------------------------------------------------------------------- /template/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "{{ name }}", 3 | "version": "1.0.0", 4 | "description": "{{ description }}", 5 | "author": "{{ author }}", 6 | "private": true, 7 | "scripts": { 8 | "dev": "nuxt", 9 | "build": "nuxt build", 10 | "start": "nuxt start", 11 | "generate": "nuxt generate" 12 | }, 13 | "dependencies": { 14 | {{#alacarte}} 15 | "vuetify-loader": "^1.0.5", 16 | {{/alacarte}} 17 | "nuxt": "^2.2.0", 18 | "vuetify": "^1.3.6" 19 | }, 20 | "devDependencies": { 21 | "babel-eslint": "^10.0.1", 22 | {{#alacarte}} 23 | "babel-plugin-transform-imports": "^1.5.1", 24 | {{/alacarte}} 25 | "eslint": "^5.7.0", 26 | "eslint-config-standard": "^12.0.0", 27 | "eslint-loader": "^2.1.1", 28 | "eslint-plugin-html": "^4.0.6", 29 | "eslint-plugin-import": "^2.14.0", 30 | "eslint-plugin-node": "^7.0.1", 31 | "eslint-plugin-promise": "^4.0.1", 32 | "eslint-plugin-standard": "^4.0.0", 33 | "stylus": "^0.54.5", 34 | "stylus-loader": "^3.0.2" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 NUXT 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /template/pages/index.vue: -------------------------------------------------------------------------------- 1 | 31 | -------------------------------------------------------------------------------- /template/nuxt.config.js: -------------------------------------------------------------------------------- 1 | {{#alacarte}} 2 | const nodeExternals = require('webpack-node-externals') 3 | const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin') 4 | {{/alacarte}} 5 | module.exports = { 6 | /* 7 | ** Headers of the page 8 | */ 9 | head: { 10 | title: '{{ name }}', 11 | meta: [ 12 | { charset: 'utf-8' }, 13 | { name: 'viewport', content: 'width=device-width, initial-scale=1' }, 14 | { hid: 'description', name: 'description', content: '{{ description }}' } 15 | ], 16 | link: [ 17 | { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }, 18 | { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' } 19 | ] 20 | }, 21 | plugins: ['~/plugins/vuetify.js'], 22 | css: ['~/assets/style/app.styl'], 23 | /* 24 | ** Customize the progress bar color 25 | */ 26 | loading: { color: '#3B8070' }, 27 | /* 28 | ** Build configuration 29 | */ 30 | build: { 31 | {{#alacarte}} 32 | transpile: [/^vuetify/], 33 | plugins: [ 34 | new VuetifyLoaderPlugin() 35 | ], 36 | {{/alacarte}} 37 | extractCSS: true, 38 | extend (config, ctx) { 39 | // Run ESLint on save 40 | if (ctx.isDev && ctx.isClient) { 41 | config.module.rules.push({ 42 | enforce: 'pre', 43 | test: /\.(js|vue)$/, 44 | loader: 'eslint-loader', 45 | exclude: /(node_modules)/ 46 | }) 47 | } 48 | {{#alacarte}} 49 | if (process.server) { 50 | config.externals = [ 51 | nodeExternals({ 52 | whitelist: [/^vuetify/] 53 | }) 54 | ] 55 | } 56 | {{/alacarte}} 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /template/components/NuxtLogo.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 80 | -------------------------------------------------------------------------------- /template/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 81 | 82 | 101 | -------------------------------------------------------------------------------- /template/components/VuetifyLogo.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 17 | --------------------------------------------------------------------------------