Why I built it
I keep a Qingping air monitor at home and wanted the CO₂ level where I’d actually see it while working: in the Mac menu bar, not in a phone app.
How it works
The app reads the monitor’s Bluetooth broadcasts directly, so it needs no account, no cloud and no internet, and updates every few seconds. The current CO₂ level sits in the menu bar, and a popover shows CO₂, PM2.5, PM10, temperature, humidity and battery with color-coded charts and trend arrows. A cloud mode covers the times the device is out of range.
What I learned
Going straight to Bluetooth made the app faster and more private than the official cloud API, which can be slow depending on the region. It was also a good excuse to build something native in Swift, from menu bar behavior to keeping reading history on disk.
Built with
SwiftUI, CoreBluetooth, Swift Charts
