├── src
├── api
│ └── .gitkeep
├── util
│ └── .gitkeep
├── assets
│ └── .gitkeep
├── components
│ └── .gitkeep
├── modules
│ ├── chat
│ │ ├── _store
│ │ │ ├── getters.js
│ │ │ ├── mutations.js
│ │ │ ├── index.js
│ │ │ └── actions.js
│ │ ├── _components
│ │ │ ├── ChatList.vue
│ │ │ └── ChatListElement.vue
│ │ ├── _api
│ │ │ └── index.js
│ │ └── index.vue
│ └── products
│ │ ├── _store
│ │ ├── getters.js
│ │ ├── mutations.js
│ │ ├── index.js
│ │ └── actions.js
│ │ ├── _components
│ │ ├── ProductListElement.vue
│ │ └── ProductList.vue
│ │ ├── index.vue
│ │ └── _api
│ │ └── index.js
├── store
│ └── index.js
├── router
│ └── index.js
├── App.vue
├── main.js
└── views
│ └── Home.vue
├── static
└── .gitkeep
├── .eslintignore
├── config
├── prod.env.js
├── dev.env.js
└── index.js
├── docs
├── structure.png
├── structure.vsdx
├── vs-code-folder-structure.png
└── structure.svg
├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── index.html
├── .babelrc
├── .gitattributes
├── License.md
├── .eslintrc.js
├── package.json
└── README.md
/src/api/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/util/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | config/*.js
3 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/docs/structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/igeligel/vuex-feature-scoped-structure/HEAD/docs/structure.png
--------------------------------------------------------------------------------
/docs/structure.vsdx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/igeligel/vuex-feature-scoped-structure/HEAD/docs/structure.vsdx
--------------------------------------------------------------------------------
/src/modules/chat/_store/getters.js:
--------------------------------------------------------------------------------
1 | const messages = state => state.messages;
2 |
3 | export default {
4 | messages,
5 | };
6 |
--------------------------------------------------------------------------------
/src/modules/products/_store/getters.js:
--------------------------------------------------------------------------------
1 | const products = state => state.products;
2 |
3 | export default {
4 | products,
5 | };
6 |
--------------------------------------------------------------------------------
/docs/vs-code-folder-structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/igeligel/vuex-feature-scoped-structure/HEAD/docs/vs-code-folder-structure.png
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Vuex from 'vuex';
3 |
4 | Vue.use(Vuex);
5 |
6 | export default new Vuex.Store({});
7 |
--------------------------------------------------------------------------------
/src/modules/chat/_store/mutations.js:
--------------------------------------------------------------------------------
1 | const MESSAGES_UPDATED = (state, messages) => {
2 | state.messages = messages;
3 | };
4 |
5 | export default {
6 | MESSAGES_UPDATED,
7 | };
8 |
--------------------------------------------------------------------------------
/src/modules/products/_store/mutations.js:
--------------------------------------------------------------------------------
1 | const PRODUCTS_UPDATED = (state, products) => {
2 | state.products = products;
3 | };
4 |
5 | export default {
6 | PRODUCTS_UPDATED,
7 | };
8 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | // to edit target browsers: use "browserslist" field in package.json
6 | "autoprefixer": {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | vuex-feature-scoped-structure
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/modules/chat/_store/index.js:
--------------------------------------------------------------------------------
1 | import actions from './actions';
2 | import getters from './getters';
3 | import mutations from './mutations';
4 |
5 | const state = {
6 | messages: [],
7 | };
8 |
9 | export default {
10 | namespaced: true,
11 | state,
12 | actions,
13 | getters,
14 | mutations,
15 | };
16 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Router from 'vue-router';
3 | import HomeView from '@/views/Home';
4 |
5 | Vue.use(Router);
6 |
7 | export default new Router({
8 | routes: [
9 | {
10 | path: '/',
11 | name: 'Home',
12 | component: HomeView,
13 | },
14 | ],
15 | });
16 |
--------------------------------------------------------------------------------
/src/modules/products/_store/index.js:
--------------------------------------------------------------------------------
1 | import actions from './actions';
2 | import getters from './getters';
3 | import mutations from './mutations';
4 |
5 | const state = {
6 | products: [],
7 | };
8 |
9 | export default {
10 | namespaced: true,
11 | state,
12 | actions,
13 | getters,
14 | mutations,
15 | };
16 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
20 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-runtime"],
12 | "env": {
13 | "test": {
14 | "presets": ["env", "stage-2"],
15 | "plugins": ["istanbul"]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/modules/chat/_store/actions.js:
--------------------------------------------------------------------------------
1 | import api from '../_api';
2 |
3 | const getMessages = (context) => {
4 | api.fetchMessages
5 | .then((response) => {
6 | context.commit('MESSAGES_UPDATED', response);
7 | })
8 | .catch((error) => {
9 | // eslint-disable-next-line
10 | console.error(error);
11 | });
12 | };
13 |
14 | export default {
15 | getMessages,
16 | };
17 |
--------------------------------------------------------------------------------
/src/modules/products/_components/ProductListElement.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
19 |
--------------------------------------------------------------------------------
/src/modules/products/_store/actions.js:
--------------------------------------------------------------------------------
1 | import api from '../_api';
2 |
3 | const getProducts = (context) => {
4 | api.fetchProducts
5 | .then((response) => {
6 | context.commit('PRODUCTS_UPDATED', response);
7 | })
8 | .catch((error) => {
9 | // eslint-disable-next-line
10 | console.error(error);
11 | });
12 | };
13 |
14 | export default {
15 | getProducts,
16 | };
17 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue';
4 | import App from './App';
5 | import router from './router';
6 | import store from './store';
7 |
8 | Vue.config.productionTip = false;
9 |
10 | /* eslint-disable no-new */
11 | new Vue({
12 | el: '#app',
13 | router,
14 | store,
15 | template: ' ',
16 | components: { App },
17 | });
18 |
--------------------------------------------------------------------------------
/src/modules/chat/_components/ChatList.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
26 |
--------------------------------------------------------------------------------
/src/modules/chat/_components/ChatListElement.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | [{{timeRepresentation}}]
4 | {{message.author}}:
5 |
6 |
7 |
8 |
9 |
24 |
25 |
30 |
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
21 |
22 |
32 |
--------------------------------------------------------------------------------
/src/modules/chat/_api/index.js:
--------------------------------------------------------------------------------
1 | const fetchMessages = new Promise((resolve) => {
2 | setTimeout(() => {
3 | resolve([
4 | {
5 | id: 'message-a7fe282a-bcb3-47a6-b746-e5f41fc2ea66',
6 | author: 'Robert',
7 | content: 'This is an awesome architecture',
8 | time: '2017-10-21T09:46:19+00:00',
9 | points: 5,
10 | reactions: [],
11 | },
12 | {
13 | id: 'message-192a2e4d-1203-49b9-bd39-09710e6075e5',
14 | author: 'Anna',
15 | content: 'Yeah i agree',
16 | time: '2017-10-21T09:46:25+00:00',
17 | points: 0,
18 | reactions: [],
19 | },
20 | ]);
21 | }, 500);
22 | });
23 |
24 | export default {
25 | fetchMessages,
26 | };
27 |
--------------------------------------------------------------------------------
/src/modules/chat/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
32 |
--------------------------------------------------------------------------------
/src/modules/products/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
32 |
--------------------------------------------------------------------------------
/src/modules/products/_components/ProductList.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Type
5 | Brand
6 | Model
7 |
8 |
13 |
14 | No Products given
15 |
16 |
17 |
18 |
19 |
34 |
35 |
46 |
47 |
--------------------------------------------------------------------------------
/src/modules/products/_api/index.js:
--------------------------------------------------------------------------------
1 | const fetchProducts = new Promise((resolve) => {
2 | setTimeout(() => {
3 | resolve([
4 | {
5 | id: 'product-18b9a98e-812d-4627-95e0-994245a137ee',
6 | type: 'shoe',
7 | brand: 'adidas Originals',
8 | model: 'PW TENNIS HU - Sneaker low',
9 | },
10 | {
11 | id: 'product-4eaf41ba-0632-4d51-9a11-7921ea819e0f',
12 | type: 'shoe',
13 | brand: 'Vans',
14 | model: 'OLD SKOOL - skate shoe',
15 | },
16 | {
17 | id: 'product-cc2bfba2-207e-49ba-b942-3c79c24d6665',
18 | type: 'shoe',
19 | brand: 'adidas Originals',
20 | model: 'TUBULAR SHADOW - Sneaker low',
21 | },
22 | {
23 | id: 'product-5ccca7c3-2bef-4c9e-bb4a-cffc2534b217',
24 | type: 'shoe',
25 | brand: 'Nike SB',
26 | model: 'STEFAN JANOSKI MAX - Sneaker low',
27 | },
28 | ]);
29 | }, 750);
30 | });
31 |
32 | export default {
33 | fetchProducts,
34 | };
35 |
--------------------------------------------------------------------------------
/License.md:
--------------------------------------------------------------------------------
1 | # The MIT License (MIT)
2 |
3 | Copyright (c) 2017-present Kevin Peters
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 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parser: 'babel-eslint',
6 | parserOptions: {
7 | sourceType: 'module',
8 | },
9 | env: {
10 | browser: true,
11 | },
12 | extends: 'airbnb-base',
13 | // required to lint *.vue files
14 | plugins: ['html'],
15 | // check if imports actually resolve
16 | settings: {
17 | 'import/resolver': {
18 | webpack: {
19 | config: 'build/webpack.base.conf.js',
20 | },
21 | },
22 | },
23 | // add your custom rules here
24 | rules: {
25 | // don't require .vue extension when importing
26 | 'import/extensions': [
27 | 'error',
28 | 'always',
29 | {
30 | js: 'never',
31 | vue: 'never',
32 | },
33 | ],
34 | // allow optionalDependencies
35 | 'import/no-extraneous-dependencies': [
36 | 'error',
37 | {
38 | optionalDependencies: ['test/unit/index.js'],
39 | },
40 | ],
41 | // allow debugger during development
42 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
43 | 'no-param-reassign': [
44 | 'error',
45 | { props: true, ignorePropertyModificationsFor: ['state'] },
46 | ],
47 | },
48 | };
49 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 |
2 | 'use strict'
3 | // Template version: 1.1.3
4 | // see http://vuejs-templates.github.io/webpack for documentation.
5 |
6 | const path = require('path')
7 |
8 | module.exports = {
9 | build: {
10 | env: require('./prod.env'),
11 | index: path.resolve(__dirname, '../dist/index.html'),
12 | assetsRoot: path.resolve(__dirname, '../dist'),
13 | assetsSubDirectory: 'static',
14 | assetsPublicPath: '/',
15 | productionSourceMap: true,
16 | // Gzip off by default as many popular static hosts such as
17 | // Surge or Netlify already gzip all static assets for you.
18 | // Before setting to `true`, make sure to:
19 | // npm install --save-dev compression-webpack-plugin
20 | productionGzip: false,
21 | productionGzipExtensions: ['js', 'css'],
22 | // Run the build command with an extra argument to
23 | // View the bundle analyzer report after build finishes:
24 | // `npm run build --report`
25 | // Set to `true` or `false` to always turn it on or off
26 | bundleAnalyzerReport: process.env.npm_config_report
27 | },
28 | dev: {
29 | env: require('./dev.env'),
30 | port: process.env.PORT || 8080,
31 | autoOpenBrowser: true,
32 | assetsSubDirectory: 'static',
33 | assetsPublicPath: '/',
34 | proxyTable: {},
35 | // CSS Sourcemaps off by default because relative paths are "buggy"
36 | // with this option, according to the CSS-Loader README
37 | // (https://github.com/webpack/css-loader#sourcemaps)
38 | // In our experience, they generally work as expected,
39 | // just be aware of this issue when enabling this option.
40 | cssSourceMap: false
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": {
3 | "email": "kevinigeligeligel+vuexfeature@gmail.com",
4 | "name": "Kevin Peters",
5 | "url": "https://www.kevinpeters.net/"
6 | },
7 | "browserslist": ["> 1%", "last 2 versions", "not ie <= 8"],
8 | "bugs": {
9 | "url": "https://github.com/igeligel/vuex-simple-structure/issues"
10 | },
11 | "dependencies": {
12 | "vue": "^2.5.17",
13 | "vue-router": "^3.0.1",
14 | "vuex": "^3.0.1"
15 | },
16 | "description":
17 | "A Vue.js project showcasing Feature scoped Vuex modules to have a better organization of business logic code inside Vuex modules based on Large-scale Vuex application structures",
18 | "devDependencies": {
19 | "autoprefixer": "^9.1.3",
20 | "babel-core": "^6.26.3",
21 | "babel-eslint": "^8.2.6",
22 | "babel-loader": "^7.1.5",
23 | "babel-plugin-transform-runtime": "^6.23.0",
24 | "babel-preset-env": "^1.7.0",
25 | "babel-preset-stage-2": "^6.24.1",
26 | "babel-register": "^6.26.0",
27 | "chalk": "^2.4.1",
28 | "connect-history-api-fallback": "^1.5.0",
29 | "copy-webpack-plugin": "^4.5.2",
30 | "css-loader": "^0.28.11",
31 | "eslint": "^4.19.1",
32 | "eslint-config-airbnb-base": "^12.1.0",
33 | "eslint-friendly-formatter": "^4.0.1",
34 | "eslint-import-resolver-webpack": "^0.10.1",
35 | "eslint-loader": "^2.1.0",
36 | "eslint-plugin-html": "^4.0.5",
37 | "eslint-plugin-import": "^2.14.0",
38 | "eventsource-polyfill": "^0.9.6",
39 | "express": "^4.16.3",
40 | "extract-text-webpack-plugin": "^3.0.2",
41 | "file-loader": "^1.1.11",
42 | "friendly-errors-webpack-plugin": "^1.7.0",
43 | "html-webpack-plugin": "^3.2.0",
44 | "http-proxy-middleware": "^0.19.0",
45 | "node-sass": "^4.9.3",
46 | "opn": "^5.3.0",
47 | "optimize-css-assets-webpack-plugin": "^3.2.0",
48 | "ora": "^3.0.0",
49 | "portfinder": "^1.0.17",
50 | "rimraf": "^2.6.2",
51 | "sass-loader": "^7.1.0",
52 | "semver": "^5.5.1",
53 | "shelljs": "^0.8.2",
54 | "url-loader": "^1.1.1",
55 | "vue-loader": "^15.4.1",
56 | "vue-style-loader": "^4.1.2",
57 | "vue-template-compiler": "^2.5.17",
58 | "webpack": "^3.12.0",
59 | "webpack-bundle-analyzer": "^2.13.1",
60 | "webpack-dev-middleware": "^2.0.6",
61 | "webpack-hot-middleware": "^2.23.0",
62 | "webpack-merge": "^4.1.4"
63 | },
64 | "engines": {
65 | "node": ">= 8.0.0",
66 | "npm": ">= 5.0.0"
67 | },
68 | "homepage": "https://vuex-feature-scoped-structure.netlify.com/",
69 | "keywords": ["vuex", "feature", "large", "scale", "vuejs", "vue", "example"],
70 | "license": "MIT",
71 | "name": "vuex-feature-scoped-structure",
72 | "repository": {
73 | "type": "git",
74 | "url": "https://github.com/igeligel/vuex-feature-scoped-structure"
75 | },
76 | "scripts": {
77 | "build": "node build/build.js",
78 | "dev": "node build/dev-server.js",
79 | "start": "npm run dev"
80 | },
81 | "version": "1.0.0"
82 | }
83 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vuex-feature-scoped-structure by igeligel
2 |
3 | > A Vue.js/Vuex project showcasing a complex but scalable store structure. This
4 | > project was created in cooperation with
5 | > [3yourmind](https://github.com/3YOURMIND).
6 |
7 |
8 |
9 |
10 |
11 |
12 | ## Showcase/Architecture
13 |
14 | A feature scoped, but still namespaced store structure. `index.vue` is the
15 | container of the module.
16 |
17 |
18 | diagram
19 |
20 |
21 |
22 |
23 | file structure
24 |
25 |
26 |
27 | ## Dependencies
28 |
29 |
30 | npm dependencies
31 |
32 | | Dependency | Version |
33 | | ---------- | ------- |
34 | | vue | ^2.5.13 |
35 | | vue-router | ^3.0.1 |
36 | | vuex | ^3.0.1 |
37 |
38 |
39 |
40 | ## Installation
41 |
42 | The installation process is split into two sections for
43 | [development](#development) and [production](#production) use. You can find a
44 | production version of this site live at
45 | [vuex-feature-scoped-structure.netlify.com](https://vuex-feature-scoped-structure.netlify.com/).
46 |
47 | ### Development
48 |
49 |
50 | instructions
51 |
52 | #### Using npm
53 |
54 | ```shell
55 | npm install
56 | npm run dev
57 | ```
58 |
59 | #### Using yarn
60 |
61 | ```shell
62 | yarn install
63 | yarn run dev
64 | ```
65 |
66 |
67 |
68 | ### Production
69 |
70 |
71 | instructions
72 |
73 | #### Using npm
74 |
75 | ```shell
76 | npm install
77 | npm run build
78 | ```
79 |
80 | #### Using yarn
81 |
82 | ```shell
83 | yarn install
84 | yarn run build
85 | ```
86 |
87 |
88 |
89 | ## Examples
90 |
91 | * [igeligel/vuex-feature-scoped-structure](https://github.com/igeligel/vuex-feature-scoped-structure)
92 |
93 | ## Contact
94 |
95 |
96 |
97 | ## Contributors
98 |
99 |
100 |
101 | ## License
102 |
103 | _vuex-feature-scoped-structure_ is realeased under the
104 | [MIT License](/License.md).
105 |
--------------------------------------------------------------------------------
/docs/structure.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
24 |
25 |
26 |
27 |
28 |
29 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | Page-1
41 |
43 |
44 |
45 | Rectangle.3
46 | modules
47 |
48 |
49 |
50 |
51 |
52 |
54 |
55 |
56 |
57 | modules
58 |
59 | Rounded Rectangle.5
60 | index.js
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
83 |
86 |
87 |
90 | index.js
91 |
92 | Rectangle.22
93 | chat
94 |
95 |
96 |
97 |
98 |
99 |
101 |
102 |
103 |
104 | chat
105 |
106 | Rectangle.23
107 | products (collapsed)
108 |
109 |
110 |
111 |
112 |
113 |
115 |
116 |
117 |
118 | products( collapsed)
120 |
121 | Rounded Rectangle.24
122 | index.vue
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
145 |
148 |
149 |
152 | index.vue
153 |
154 | Rounded Rectangle.41
155 | index.js
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
178 |
181 |
182 |
185 | index.js
186 |
187 | Rounded Rectangle.42
188 | actions.js
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
211 |
214 |
215 |
218 | actions.js
219 |
220 | Rounded Rectangle.43
221 | getters.js
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
244 |
247 |
248 |
251 | getters.js
252 |
253 | Rounded Rectangle.44
254 | mutations.js
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
277 |
280 |
281 |
284 | mutations.js
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 | Dependency.45
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 | Dependency.50
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 | Dependency.55
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 | Association
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 | Association.85
393 |
394 |
395 |
396 |
397 |
398 | Rectangle.90
399 | _api
400 |
401 |
402 |
403 |
404 |
405 |
407 |
408 |
409 |
410 | _api
411 |
412 | Rectangle.91
413 | _components
414 |
415 |
416 |
417 |
418 |
419 |
421 |
422 |
423 |
424 | _components
425 |
426 | Rectangle.92
427 | _store
428 |
429 |
430 |
431 |
432 |
433 |
435 |
436 |
437 |
438 | _store
439 |
440 | Rounded Rectangle.98
441 | ChatList.vue
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
464 |
467 |
468 |
471 | ChatList.vue
472 |
473 | Rounded Rectangle.99
474 | ChatListElement.vue
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
497 |
499 |
500 |
502 | ChatListElement.vue
503 |
504 |
505 |
506 |
507 |
508 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 |
518 |
519 |
520 | Association.100
521 |
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 | Association.105
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 | Association.110
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 |
584 |
585 |
586 |
587 | Dependency
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
607 |
608 |
609 | Dependency.120
610 |
611 |
612 |
613 |
614 |
615 |
616 |
617 |
618 |
619 |
620 |
621 |
622 |
623 |
624 |
625 |
626 |
627 |
628 |
629 |
630 |
631 | Association.130
632 |
633 |
634 |
635 |
636 |
637 |
638 |
639 |
640 |
641 |
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 |
651 |
652 |
653 | Dependency.140
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
672 |
673 |
674 |
675 | Association.150
676 |
677 |
678 |
679 |
680 |
681 |
682 |
--------------------------------------------------------------------------------