|  | ||
|---|---|---|
| .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 | ||
| 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.