This document is about a screen that shows information.
Shocking, I know.
== Screenshot
.Screenshot of the Infoscreen
image::data_infoscreen/screenshot.jpg[Screenshot of the Infoscreen,80%]
I obfuscated a few things to protect my personal information.
== How it Started
A few years ago I bought a new monitor for my PC.
That left me with a monitor I could use for anything I want.
So I decided to hook a Raspberry Pi to it and show some useful information like weather, calendar, and news.
The monitor then was placed in the kitchen.
== History
=== The First Implementation
The first implementation for this was using vanilla JS (and of course HTML and CSS).
Even though I had not had too much experience in JS, I tried to use "good" software development practices, like class inheritance and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules[ES-Modules]. +
I hosted it, using the default https://www.php.net/manual/en/features.commandline.webserver.php[PHP HTTP-Server] locally and opened a Chromium browser on localhost.
If you are interested in the code, https://github.com/C0ntroller/infoscreen-old[here] is the repository of the second version, which uses most of the code from version one.
=== Phase Two
The second version of this project basically took all the code from the first version and bundle it as an Electron App.
I hoped that the performance would be increased by not using _the whole_ Chromium bloat.
It (well, who would have guessed) didn't. +
The old code is still up, so if you're interested you can find it https://github.com/C0ntroller/infoscreen-old[in this repository].
=== Phase Three
When I started to learn React more, I realized that what I tried to achieve in the prior versions are just React components.
I rewrote what I had using React.
But I also had already learned about Frameworks for React that provide static site generation like https://nextjs.org/[Next.JS] and https://www.gatsbyjs.com/[Gatsby]. +
Gatsby looked like a good choice so I just went for it.
It gets hosted in a Docker container on my own home server and the Pi just opens up a Chromium again.
This marks the end of the development history.
== So what's on the Screen?
Currently, the following info is shown:
- Time
- Weather and weather map
- two RSS news feeds
- a Google calendar
- departures on the nearest tram station
- Spotify or info from my plant sensors
Also, the background image is cycled through 20-ish images.