I built a small self-hosted tracker for software license renewals, with e-mail reminders (Node.js, no database)
Hi r/selfhosted,
In my day job in IT I kept almost missing the renewal of software licenses and maintenance contracts. One expired date buried in a spreadsheet is all it takes. So I built a small app that tracks them and nags the right people by e-mail.
This is me first web app 😀
\\\\\\*\\\\\\*What it does\\\\\\*\\\\\\*
\\\\- Pick a commitment term (1, 2 or 3 years): the end date is computed for you
\\\\- Statuses: OK / to anticipate / urgent / expired
\\\\- E-mail reminders through your own SMTP relay: first one 60 days before the end date, then every 7 days until you click "order placed" (both configurable)
\\\\- "Order placed" restarts the counter on a new period and keeps the history
\\\\- Per-department routing: licenses of department 53 go to its manager, department 58 to someone else, etc.
\\\\- Search, sort, CSV export, sending log, test mail button
\\\\\\*\\\\\\*Stack:\\\\\\*\\\\\\* plain Node.js, a single JSON file for data, one dependency (nodemailer). A docker-compose file is included, plus a step-by-step guide for Synology DSM, which is where I run it (including the pitfalls I hit: PORT env var leaking from another app, no pgrep on DSM, process dying when SSH closes).
\\\\\\*\\\\\\*Honest limitations\\\\\\*\\\\\\*
\\\\- No authentication: it is meant for a LAN or behind an authenticating reverse proxy
\\\\- The UI is in French for now. All labels are in one HTML file, so i18n PRs are very welcome
\\\\- I built it with AI assistance (Claude), then tested and deployed it myself on my NAS
MIT licensed, README in English and French, screenshots included:
https://github.com/neoloop/logiciels/tree/master/suivi-licences
Feedback welcome, especially on what you would want first: authentication, i18n, or something else?
https://redd.it/1x56mr3
@r_SelfHosted
Post #54097
36