Building a Local License Manager (LiMa) to Replace SaaS
Description and use
The author built LiMa, a local Python desktop app, to track software licenses and avoid SaaS costs. It uses SQLite for storage, PyQt5 for the UI, plyer for native OS notifications, and Matplotlib for generating report charts. This demonstrates how simple internal tools can replace expensive subscriptions.
Problem
High cost of SaaS Software Asset Management tools for simple license tracking needs, which essentially amount to a SQL table, date notifications, and email recaps.
Outcome
A functional, zero-cost local license manager that provides real-time tracking, native notifications, and automated reporting, eliminating the need for expensive SaaS subscriptions for simple use cases.
Workflow
- Create a SQLite database with columns for software name and expiration date.
- Implement a QTimer to refresh the UI every 60 seconds, calculating 'days remaining' dynamically to avoid stale data.
- Integrate the 'plyer' library to trigger native OS notifications (Windows/macOS/Linux) based on expiration thresholds (30, 14, 7, 3, 1, 0 days).
- Use Matplotlib to generate a pie chart of expired vs. active licenses.
- Use smtplib to send an HTML email with the generated chart attached when licenses are in the red zone.
- Store SMTP credentials securely using the 'keyring' library (recommended improvement).
Evidence
LiMa is a project I built two years ago... The point is that there are small things you can code yourself instead of paying for an annual subscription.
The table has two columns... The number of days remaining is not stored: it's derived in real time on every table refresh.
- Record date: 2026-09-05T13:58:27.074Z