Glancer
Glancer is an always-on desk display designed to be passive, useful, and unobtrusive. The idea was simple: take a retired iPad Mini and turn it into something that could sit on a desk, plugged in, and display useful information without needing constant interaction.
It was heavily inspired by Terminal, especially the idea that something passive could still become incredibly useful. I also wanted to explore the idea of reusing old technology instead of letting it become e-waste. Turning an old iPad that would otherwise sit unused into something functional felt like a pretty big win.
What I made
Glancer is a web app connected to a local computer. The iPad acts as the display, while a Python Flask server running on a Mac collects information, processes it, and sends it to the dashboard.
The project includes a clock, weather card using the OpenWeather API, French vocabulary card, photo carousel, calendar, and a music card showing the current song, artist, playback progress, and an animated equalizer.
The interesting part wasn't just making the cards themselves, but building the system behind them. I created Python scripts, a Flask API, AppleScript integrations, calendar parsing, and JavaScript functions to dynamically update everything.
Challenges
The biggest challenge was definitely the calendar. AppleScript worked well with Music, but Calendar was a completely different story. Recurring events caused a lot of issues, and trying to parse Apple’s calendar data was much harder than expected. Eventually I had to learn about CalDAV and different calendar parsing methods to make it work.
JavaScript was also a challenge, although in a more enjoyable way. Learning how objects and properties worked, and how to structure functions to update different parts of the dashboard, was a really useful experience.
CSS also caused problems because the target device was an older iPad Mini. Features that worked perfectly on my computer did not always work on older versions of Safari, so a lot of time went into testing, fixing layouts, and making sure everything looked correct on the actual device.
What I'm proud of
The thing I'm most proud of is that I built the entire system myself. This project was less about writing a lot of code and more about solving problems.
The calendar especially taught me a lot about handling messy data and transforming it into something useful. I also learned how to communicate with macOS using AppleScript, create local APIs with Flask, and have different devices communicate over a network.
Learning Flask was probably one of the biggest milestones. Being able to run a local application on my network and have another device connect to it opens up a lot of possibilities for future projects.
How to test it
To run Glancer, you will need a Mac, Python 3, a display with a resolution of 1024×768 CSS pixels, and an Apple ID/iCloud account with a calendar.
The full setup guide, installation instructions, and future updates can be found in the GitHub README. A working demo can be found on that side too.
Glancer started as a simple HTML dashboard, but it became something much more. It is now a fully connected application that can communicate with my computer and display real-time information on an old device. I’m really happy with how it turned out.
- 5 devlogs
- 24h