Ferdinand Thiessen fd918f5bb7 | ||
---|---|---|
.vscode | ||
api | ||
public | ||
src | ||
src-cordova | ||
src-electron | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc.js | ||
.gitignore | ||
.postcssrc.js | ||
LICENSE | ||
README.md | ||
babel.config.js | ||
package.json | ||
plugin.config.js | ||
quasar.conf.js | ||
quasar.extensions.json | ||
tsconfig.json | ||
yarn.lock |
README.md
Flaschengeist (frontend)
Modular student club administration system, licensed under the MIT license.
Installation
Requirements
"engines": {
"node": ">= 12.22.1",
"npm": ">= 6.14.12",
"yarn": ">= 1.21.1"
}
So on debian (buster and bullseye) you will need to install node.js and yarn beside the debian packages to meet the needed versions.
pushd ~/opt
wget https://nodejs.org/dist/v16.2.0/node-v16.2.0-linux-x64.tar.xz
tar -xJf node-v16.2.0-linux-x64.tar.xz
export PATH="$(pwd)/node-v16.2.0-linux-x64/bin":"$PATH"
npm i -g yarn
npm i -g @quasar/cli
popd
Install the dependencies
yarn install
Be aware npm might not work.
Configure Plugins
You can activate and deactive Plugins in src/boot/plugins.ts
.
You have to set the name of the Plugin into config.loadModules
.
Configure Backend
The application is using the API of the backend This access needs to be configured in `src/config.ts'->config.baseURL
- either you do have a proxy webserver that maps the '/api' to the backend (http://localhost:5000) or
- you do directly configure the backend there:
baseURL: 'http://localhost:5000'
. Be aware not committing this configuration.
Build the application
yarn quasar build
Development
Icons used
We are using the mdi-v5
icon set, so feel free to use any icon from it.
A list can be found here
Commands useful for development
Start the app in development mode
Provides hot-code reloading, error reporting, etc.
yarn quasar dev
File linting
yarn run lint
Plugins
Build a Plugin
Create a new node.js project and add @flaschengeist/api
as a peer dependency (e.g. yarn add --peer '@flaschengeist/api'
).
If your plugin depends on an other plugin (e.g. you use the @flaschengeist/users
plugin / stores),
then you have to add that plugin as a peer dependency too.
You need to define a main entry point for your plugin (e.g. "main": "src/index.ts"
in your package.json
) which exportes
a plugin descriptor as the default export (see @flaschengeist/types
-> FG_Plugin.Plugin
).
E.g.
import { FG_Plugin } from '@flaschengeist/types';
import { routes } from './routes';
const plugin: FG_Plugin.Plugin = {
id: 'com.example.myplugin',
name: 'myplugin',
innerRoutes: routes,
// This are required backend plugins:
requiredModules: [['auth'], ['users'], ['roles']],
version: '0.0.1',
widgets: [
{
priority: 1,
name: 'greeting',
permissions: [],
widget: defineAsyncComponent(() => import('./components/Widget.vue')),
},
],
};
export default plugin;
This will add a plugin providing a widget for the dashboard side and some routes.