This is a small tray application for the Speiseplan of the Studierendenwerk Schleswig Holstein for the Mensa in Lübeck's university district. It is written in TypeScript and Vue.js and uses Electron to run as a tray application.
It builds on top of this Speiseplan API and is inspired by this widget for KDE Plasma.
- 📅 View menus for current and next week
- 🥦 Filter by vegan and vegetarian dishes
- 🚫 Exclude dishes containing specific allergens
- ❗ Show allergens without filtering dishes
- 🌮 Display dishes from Mensa and Cafeteria
- 🌒 Light and dark mode
- 🌍 Available for Linux, Windows and MacOS
The following steps will get you up and running with a local development environment. We assume you have Node.js and npm installed:
- Clone the repo with
git clone https://github.com/Importantus/speiseplan-tray.git
- Change into the directory and install dependencies
cd speiseplan-tray
npm install
- Start the local development server
npm run dev
- Install and use gitmoji to commit
Run npm run build
to build the app for production. The build artifacts will be stored in the release/
directory.
However, the build process is configured to run on GitHub Actions and will automatically create a release draft with the build artifacts, so you don't need to run this command yourself. For more information, see Release.
This project uses gitmoji to make commits more expressive.
npm install -g gitmoji-cli
gitmoji -i
- VS Code + Volar (and disable Vetur) + TypeScript Vue Plugin (Volar).
TypeScript cannot handle type information for .vue
imports by default, so we replace the tsc
CLI with vue-tsc
for type checking. In editors, we need TypeScript Vue Plugin (Volar) to make the TypeScript language service aware of .vue
types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a Take Over Mode that is more performant. You can enable it by the following steps:
- Disable the built-in TypeScript Extension
- Run
Extensions: Show Built-in Extensions
from VSCode's command palette - Find
TypeScript and JavaScript Language Features
, right click and selectDisable (Workspace)
- Run
- Reload the VSCode window by running
Developer: Reload Window
from the command palette.
When you want to create a new release, follow these steps:
- Update the version in the project's package.json file (e.g. 1.2.3)
- Commit that change (
git commit -am v1.2.3
) - Tag the commit (
git tag v1.2.3
). Make sure your tag name's format isv*.*.*
The workflow will use this tag to detect when to create a release - Push the changes to GitHub (
git push && git push --tags
) - Edit and publish the release draft created by the workflow in GitHub
After building successfully, the action will publish the release artifacts in a new release draft that will be created on GitHub with download links for the app.
- Android Widget (Android)
- KDE Plasma Widget (Linux with KDE Plasma)
On some Linux distributions, the positioning of the window is not correct. This can be due to the window manager and/or the used display protocol. If you encounter this issue, please open an issue and provide information about your distribution and window manager.
With some versions of Windows 10, the same error can occur. Contributions are welcome.