VPDesktop: Unofficial VPMobil/stundenplan24.de desktop client banner

VPDesktop: Unofficial VPMobil/stundenplan24.de desktop client

11 devlogs
37h 4m 59s

Vpmobil — whether you like it or hate it, the fact is that in many German schools it’s the standard for timetable exchange over the internet.

While a mobile app exists, it’s hardly usable, and there is no good desktop interface at all. That mak…

Vpmobil — whether you like it or hate it, the fact is that in many German schools it’s the standard for timetable exchange over the internet.

While a mobile app exists, it’s hardly usable, and there is no good desktop interface at all. That makes it a perfect opportunity for an unofficial client — and that’s exactly what this project is.

Just grab the binary and run it to try it out for yourself.

As always, feel free to fork the project and customize it any way you like. I’d also love to hear about bugs, improvements, or feature ideas.

𝓒𝓱𝓮𝓮𝓻𝓼

Demo Repository

Loading README...

Matthias

Shipped this project!

Hours: 37.08
Cookies: 🍪 329
Multiplier: 13.73 cookies/hr

Since the last ship I’ve added massive UI improvements, everything now looks and feels way more organized and clean, maybe the most important thing I’ve added was the weekview feature, you can view the whole week instead of just one day.

Well, not only that, there now also is a proper home page (in the app there is a start page, no website), you can configure your favorite classes and view them with one click.

Also, heard I will get some cookies for past ships by re-shipping, looking forward to that!

Matthias

New feature: the app has a start menu now. You can search for a class or pin up to three as favorites, which then show up with a single click. That’s pretty much it.
Implementation-wise, nothing too wild… new AppState entry for the favorites, plugged into the existing cache/ layer so they survive restarts. The annoying part was the UI. Gio punishes you for taking a break from it, but I’m back in the groove now.

Anyway — hope you enjoy it. Hit me up with feedback! yay

Attachment
Attachment
Attachment
0
Matthias

Ok, so, 4 hours of work, what did I do?
You can now enjoy a more intuitive and polished way to sign into your VPMobil Account, aiming to provide a more natural UX.
Also there now is a prototype of the Weekview available, which alows you to view the timetables of the whole week at once, as said, remains in beta.
yay-1-1-72614fb2edd2yay-2-1-3828bb11976b
yay-1-2-1e2d4f324297yay-2-2-b04378aea4ec
Added features:

  • modernized Design
  • implemented basic Weekview
Attachment
Attachment
0
Matthias

Shipped this project!

Hours: 8.08
Cookies: 🍪 140
Multiplier: 17.27 cookies/hr

Hey, in this project I’ve tried to make a well-working client for the software I need to use anyway, so that I can at least make a good UI for the data.

Anyway, I hope you like it. Give me some feedback if you’ve got some time!

I hope this project sails smoothly.

Matthias

Updates & Improvements

Hey! Over the past few days I added some key QoL and UI features:

  • Last login persistence with autofill support (see implementation details below)
  • Navigation header implementation

Implementation details

The username and school number are stored using file-based caching
(implementation here).

The password, however, is stored using go-keyring, which saves it in your OS-native keychain.


Why use the keychain?

In short: security.

Although the password is accessible to the application without manual decryption, the OS keychain itself is:

  • Encrypted at rest by default
  • Only unlocked when you’re logged into your OS
  • Protected from offline access (e.g. someone copying your hard drive)

So instead of writing the password to a plain file, the keychain ensures that someone who physically obtains your disk can’t simply read credentials, while still keeping login seamless for the user.

Attachment
Attachment
0
Matthias

Hey, not much to report, just developing small things, added an interface between the ui and the api, basically the UI gets a pointer to the object and can then load content dynamically.

I also integrated i18n for locales, so that the app works in english and german 🥳.

Attachment
Attachment
0