Commit f1441392 authored by anton's avatar anton

Initial skeleton

parents
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module',
ecmaVersion: 2018
},
env: {
browser: true,
node: true,
es6: true,
mocha: true
},
settings: {
flowtype: {
onlyFilesWithFlowAnnotation: true
}
},
extends: [
'standard',
'plugin:flowtype/recommended',
// Uncomment any of the lines below to choose desired strictness,
// but leave only one uncommented!
// See https://eslint.vuejs.org/rules/#available-rules
'plugin:vue/essential' // Priority A: Essential (Error Prevention)
// 'plugin:vue/strongly-recommended' // Priority B: Strongly Recommended (Improving Readability)
// 'plugin:vue/recommended' // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
],
// required to lint *.vue files
plugins: [
'vue',
'flowtype'
],
globals: {
'ga': true, // Google Analytics
'cordova': true,
'__statics': true,
'process': true,
'Capacitor': true,
'chrome': true
},
// add your custom rules here
rules: {
// allow async-await
'generator-star-spacing': 'off',
// allow paren-less arrow functions
'arrow-parens': 'off',
'one-var': 'off',
'import/first': 'off',
'import/named': 'error',
'import/namespace': 'error',
'import/default': 'error',
'import/export': 'error',
'import/extensions': 'off',
'import/no-unresolved': 'off',
'import/no-extraneous-dependencies': 'off',
'prefer-promise-reject-errors': 'off',
// allow debugger during development only
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'brace-style': [2, 'stroustrup', { 'allowSingleLine': true }],
// change default indent behaviour
'indent': 'off',
'indent-legacy': ['error', 2]
}
}
# Logs
logs
*.log
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
# Commenting this out is preferred by some people, see
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
node_modules
# Quasar
.quasar
/dist
/src-cordova/node_modules
/src-cordova/platforms
/src-cordova/plugins
/src-cordova/www
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Users Environment Variables
.lock-wscript
# IDEs and editors (shamelessly copied from @angular/cli's .gitignore)
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
*.suo
*.ntvs*
*.njsproj
*.sln
# IDE - VSCode
.vscode/*
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### OSX ###
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Windows ###
# Windows thumbnail cache files
Thumbs.db
.thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
# Others
data/
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
plugins: [
// to edit target browsers: use "browserslist" field in package.json
require('autoprefixer')
]
}
{
"blocks": "never",
"brackets": "never",
"colons": "never",
"colors": "always",
"commaSpace": "always",
"commentSpace": "always",
"cssLiteral": "never",
"depthLimit": false,
"duplicates": true,
"efficient": "always",
"extendPref": false,
"globalDupe": true,
"indentPref": 2,
"leadingZero": "never",
"maxErrors": false,
"maxWarnings": false,
"mixed": false,
"namingConvention": false,
"namingConventionStrict": false,
"none": "never",
"noImportant": false,
"parenSpace": "never",
"placeholder": false,
"prefixVarsWithDollar": "always",
"quotePref": "single",
"semicolons": "never",
"sortOrder": false,
"stackedProperties": "never",
"trailingWhitespace": "never",
"universal": "never",
"valid": true,
"zeroUnits": "never",
"zIndexNormalize": false
}
# Motion Bank Systems (systems-frontend-next)
Complete toolset for Web & Desktop.
## Install the dependencies
```bash
npm install
```
### Start the app in development mode (hot-code reloading, error reporting, etc.)
```bash
quasar dev
```
### Lint the files
```bash
npm run lint
```
### Build the app for production
```bash
quasar build
```
### Customize the configuration
See [Configuring quasar.conf.js](https://quasar.dev/quasar-cli/quasar-conf-js).
module.exports = {
presets: [
'@quasar/babel-preset-app',
'@babel/preset-flow'
]
}
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"src/*": [
"src/*"
],
"app/*": [
"*"
],
"components/*": [
"src/components/*"
],
"layouts/*": [
"src/layouts/*"
],
"pages/*": [
"src/pages/*"
],
"assets/*": [
"src/assets/*"
],
"boot/*": [
"src/boot/*"
],
"vue$": [
"node_modules/vue/dist/vue.esm.js"
]
}
},
"exclude": [
"dist",
".quasar",
"node_modules"
]
}
\ No newline at end of file
This diff is collapsed.
{
"name": "systems-frontend-next",
"description": "Complete toolset for Web & Desktop.",
"productName": "Motion Bank Systems",
"cordovaId": "org.motionbank.systems",
"capacitorId": "",
"author": {
"name": "anton",
"email": "dasantonym@users.noreply.github.com"
},
"version": "3.0.0",
"homepage": "",
"private": true,
"main": "src/api",
"keywords": [
"feathers"
],
"contributors": [],
"bugs": {},
"engines": {
"node": ">= 10.18.1",
"npm": ">= 6.13.4",
"yarn": ">= 1.21.1"
},
"directories": {
"lib": "src/api",
"test": "test/",
"config": "config/"
},
"scripts": {
"lint": "eslint --ext .js,.vue src",
"electron-rebuild": "electron-rebuild",
"dev": "quasar dev",
"dev-electron": "quasar dev -m electron",
"build": "quasar build",
"build-electron": "quasar build -m electron",
"release": "quasar build -m electron -p always"
},
"standard": {
"env": [
"mocha"
],
"ignore": []
},
"dependencies": {
"@feathersjs/authentication-client": "^4.5.2",
"@feathersjs/client": "^4.5.2",
"@feathersjs/rest-client": "^4.5.2",
"@motionbank/api": "^3.0.0-alpha-0",
"@quasar/extras": "^1.0.0",
"@vue/composition-api": "^0.4.0",
"axios": "^0.19.2",
"electron-log": "^4.1.0",
"electron-rebuild": "^1.10.1",
"electron-updater": "^4.2.5",
"feathers-hooks-common": "^5.0.2",
"feathers-vuex": "^3.0.0-pre.9",
"ffprobe-static": "^3.0.0",
"keytar": "^5.4.0",
"mbjs-auth-service": "^1.0.3",
"mbjs-data-models": "^2.0.13",
"mbjs-media": "0.2.0",
"nedb": "^1.8.0",
"quasar": "^1.0.0",
"secure-random": "^1.1.2",
"vue-i18n": "^8.0.0"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
"@babel/core": "^7.8.7",
"@babel/plugin-transform-modules-commonjs": "^7.8.3",
"@babel/preset-flow": "^7.8.3",
"@quasar/app": "^1.0.0",
"babel-eslint": "^10.0.1",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"devtron": "^1.4.0",
"electron": "^6.1.9",
"electron-builder": "^21.2.0",
"electron-debug": "^3.0.1",
"electron-devtools-installer": "^2.2.4",
"electron-packager": "^14.2.1",
"eslint": "^6.8.0",
"eslint-config-standard": "^14.1.0",
"eslint-loader": "^3.0.3",
"eslint-plugin-flowtype": "^4.6.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^11.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^6.1.2",
"flow-bin": "^0.120.1",
"pug": "^2.0.4",
"pug-plain-loader": "^1.0.0"
},
"browserslist": [
"last 1 version, not dead, ie >= 11"
],
"resolutions": {
"@babel/parser": "7.7.5"
}
}
// Configuration for your app
// https://quasar.dev/quasar-cli/quasar-conf-js
const pkg = require('./package.json')
module.exports = function (ctx) {
return {
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://quasar.dev/quasar-cli/cli-documentation/boot-files
boot: [
'auth',
'i18n',
'axios',
'errors'
],
// https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css: [
'app.styl'
],
// https://github.com/quasarframework/quasar/tree/dev/extras
extras: [
// 'ionicons-v4',
// 'mdi-v4',
// 'fontawesome-v5',
// 'eva-icons',
// 'themify',
// 'line-awesome',
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
'roboto-font', // optional, you are not bound to it
'material-icons' // optional, you are not bound to it
],
// https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
framework: {
iconSet: 'material-icons', // Quasar icon set
lang: 'en-us', // Quasar language pack
// Possible values for "all":
// * 'auto' - Auto-import needed Quasar components & directives
// (slightly higher compile time; next to minimum bundle size; most convenient)
// * false - Manually specify what to import
// (fastest compile time; minimum bundle size; most tedious)
// * true - Import everything from Quasar
// (not treeshaking Quasar; biggest bundle size; convenient)
all: 'auto',
components: [],
directives: [],
// Quasar plugins
plugins: [
'Notify',
'Loading'
]
},
// https://quasar.dev/quasar-cli/cli-documentation/supporting-ie
supportIE: false,
// Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
build: {
vueRouterMode: 'history', // available values: 'hash', 'history'
scopeHoisting: true,
transpileDependencies: ['feathers-vuex'],
// rtl: false, // https://quasar.dev/options/rtl-support
// showProgress: false,
// gzip: true,
// analyze: true,
// Options below are automatically set depending on the env, set them if you want to override
// preloadChunks: false,
// extractCSS: false,
// https://quasar.dev/quasar-cli/cli-documentation/handling-webpack
extendWebpack (cfg) {
cfg.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /node_modules/,
options: {
formatter: require('eslint').CLIEngine.getFormatter('stylish')
}
}, {
test: /\.pug$/,
loader: 'pug-plain-loader'
})
cfg.externals = {
nedb: 'commonjs nedb',
'ffprobe-static': 'commonjs ffprobe-static',
'jwt-decode': 'commonjs jwt-decode',
'fluent-ffmpeg': 'commonjs fluent-ffmpeg',
'mbjs-archive': 'commonjs mbjs-archive',
'@motionbank/api': 'commonjs @motionbank/api'
}
},
env: {
API_HOST: JSON.stringify(process.env.API_HOST),
UI_HOST: JSON.stringify(process.env.UI_HOST),
BUILD_NAME_EXT: JSON.stringify(process.env.BUILD_NAME_EXT || null),
UI_VERSION: JSON.stringify(process.env.UI_VERSION || require('./package.json').version),
FLUENTFFMPEG_COV: JSON.stringify(false),
//
// Features
//
USE_FEATHERS: JSON.stringify(!!process.env.USE_FEATHERS),
//
// API Keys
//
SENTRY_DSN: JSON.stringify(process.env.SENTRY_DSN),
YOUTUBE_API_KEY: JSON.stringify(process.env.YOUTUBE_API_KEY),
VIMEO_ACCESS_TOKEN: JSON.stringify(process.env.VIMEO_ACCESS_TOKEN),
//
// Auth0
//
AUTH0_DOMAIN: JSON.stringify(process.env.AUTH0_DOMAIN || 'auth.motionbank.org'),
AUTH0_CLIENT_ID: JSON.stringify(process.env.AUTH0_CLIENT_ID || '80t5TRU9MVhGDVnZ522CvX4hutBxDB6U'),
AUTH0_REDIRECT_URL: JSON.stringify(process.env.AUTH0_REDIRECT_URL),
AUTH0_AUDIENCE: JSON.stringify(process.env.AUTH0_AUDIENCE || 'https://api.motionbank.org'),
//
// General OAuth2
//
OAUTH_CLIENT_ID: JSON.stringify(process.env.OAUTH_CLIENT_ID),
OAUTH_CLIENT_SECRET: JSON.stringify(process.env.OAUTH_CLIENT_SECRET),
OAUTH_REDIRECT_URL: JSON.stringify(process.env.OAUTH_REDIRECT_URL),
OAUTH_AUTH_URL: JSON.stringify(process.env.OAUTH_AUTH_URL),
OAUTH_TOKEN_URL: JSON.stringify(process.env.OAUTH_TOKEN_URL),
OAUTH_EDIT_PROFILE_URL: JSON.stringify(process.env.OAUTH_EDIT_PROFILE_URL)
}
},
// Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
devServer: {
https: false,
port: 8080,
open: true // opens browser window automatically
},
// animations: 'all', // --- includes all animations
// https://quasar.dev/options/animations
animations: [],
// https://quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr: {
pwa: false
},
// https://quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa: {
workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
workboxOptions: {}, // only for GenerateSW
manifest: {
name: 'Motion Bank Systems',
short_name: 'Motion Bank Systems',
description: 'Complete toolset for Web & Desktop.',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [
{
src: 'statics/icons/icon-128x128.png',
sizes: '128x128',
type: 'image/png'
},
{
src: 'statics/icons/icon-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'statics/icons/icon-256x256.png',
sizes: '256x256',
type: 'image/png'
},
{
src: 'statics/icons/icon-384x384.png',
sizes: '384x384',
type: 'image/png'
},
{
src: 'statics/icons/icon-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
}
},
// Full list of options: https://quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
cordova: {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
id: 'org.motionbank.systems'
},
// Full list of options: https://quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
capacitor: {
hideSplashscreen: true
},
// Full list of options: https://quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
electron: {
bundler: 'builder', // 'packager' or 'builder'
packager: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store
// appBundleId: '',
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only
// win32metadata: { ... }
},
builder: {
// https://www.electron.build/configuration/configuration
appId: `org.motionbank.${pkg.name}${process.env.BUILD_NAME_EXT ? `-${process.env.BUILD_NAME_EXT.toLocaleLowerCase()}` : ''}`,
productName: `Motion Bank Systems${process.env.BUILD_NAME_EXT ? ` (${process.env.BUILD_NAME_EXT})` : ''}`,
copyright: '2019 Motion Bank',
asarUnpack: [
// '**/app/node_modules/ffmpeg-static/*',
'**/app/node_modules/ffprobe-static/*'
],
mac: {
category: 'public.app-category.education',
target: 'dmg'
},
publish: [{
provider: 's3',
endpoint: process.env.UPDATE_S3_ENDPOINT || 'http://localhost:9000',
bucket: process.env.UPDATE_S3_BUCKET || 'motion-bank-systems'
}]
},
// More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
nodeIntegration: true,
extendWebpack (cfg) {
// do something with Electron main process Webpack cfg
// chainWebpack also available besides this extendWebpack
cfg.externals = Object.assign({
keytar: 'commonjs keytar',
'@motionbank/api': 'commonjs @motionbank/api'
}, cfg.externals)
}
}
}
}
// THIS FEATURE-FLAG FILE IS AUTOGENERATED,
// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
import "quasar/dist/types/feature-flag";
declare module "quasar/dist/types/feature-flag" {
interface QuasarFeatureFlags {
electron: true;
}