My program is a web app called President. On the backend it uses Perl with Mojolicious, on the front end I’m reliant on jQuery. There’s three websockets that are always running, and any time a new window opens there’s a websocket for that. GPS is gathered from the browser, and the camera and microphone are too.
President runs in three environments:
- Server: usually a Debian install
- Computer: usually an Arch Linux install, I run it with Manjaro, but really it can be any Linux distro.
- Mobile: an Android device with Termux.
Then there are embedded devices.
- LilyGo T-Watch S3: For toggling things, keeping track of time, sending messages via Lora, and notifications.
- LilyGo T-Deck Pro: For toggling things, keeping track of time and location, controlling the mouse and keyboard on a computer, chatting (over Lora or SMS).
- Raspberry Pi Pico 2W: For toggling things, for controlling things… basically an endpoint for IoT stuff. It’s highly configurable, and I don’t really see a limit to how many can be running for a single install, or a group of installs (a team).
The backend database is SQLite3, each install has its own, and when a member of a team has anything new happen, the other devices will pick up the changes, and rsync over any files as well. Basically a cloud service, the main difference is that the default is to have encryption turned on, so they can only be viewed/accessed from President.
Gallery

Music

A cool thing about the music app is that it can send audio to any device on the team, and has access to the media files on any device. It plays music and video, and will switch to cover art when in theatre mode. It has looping features, and will detect a file’s chapters. Screenshots can be made, and brought into Marker (the art app).
Travel
It’s still a work in progress, but the main idea is that when you start or stop anything it grabs the current location. Instead of using an API it just uses whatever maps you’ve got. This is especially helpful for indoor maps, or when you’re offline. Maybe it’s just something that’s neat and nobody needs or wants it… I don’t know.

Store
At this point, the store is by invitation only. There are three types of people within President, and a fourth, but they don’t really count.
- Citizen: has access to everything
- Resident: has access to the store
- Guest: has access to the homepage, which is like a blog, but more for promoting things… I guess, it’s like a flyer.

On the left are the categories, on the right the items, which can be a product or a service, can also be media that’s managed by President.

Then you can choose your models and options which are dynamically priced. From there, you make a quote, then turn it into an invoice, and then receive payment. I have a policy, no integrations, so all transactions are entered manually. I’ve built things with Square or Quickbooks, and less than a year you’re rewriting it because they’ve changed the API. Actually, everything in President is self-contained. You could very well go without the internet after its installed and have no problem.
I don’t really want to go over every single feature, at least not in one page. I’ll feel rushed, and be like a bad salesman listing off features and benefits, and you really don’t care at all, you just want to hit the sponsor button and be done with it… probably. But, I’ll show you one more thing.
When you type something into the Anything input at the bottom of the page it will create an appointment. Then every time you use that appointment it records the timestamp and the location. Everything is an appointment, and everything has a warranty, so appointments will automatically delete themselves when they’re expired. My default warranty is 10 years, but something like guitar I have a thousand year warranty.

I haven’t played guitar in a few days, and when I do it’s for almost 10 minutes on average.
Okay, that’s enough, you’ve had a look. This is what I’m building, maybe you want to have me install it for you, maybe you think it’s ridiculous. I don’t know. Tough to say. I’d say it’s worth it for you to hit the sponsor button, or to e-transfer me money for continued development, jon@jonathanferwerda.com,
You’re welcome for all my hard work!