GitHub Gems

Software License Renewal Tracker Sends Timely Reminders

A free, self-hosted web app tracks software license deadlines and sends email reminders until renewal orders are placed, without a database or framework.

Dashboard of a self-hosted software license tracker showing renewal statuses and the total amount to order

A small, self-hosted web application published in the neoloop/logiciels repository on GitHub aims to take the guesswork out of software renewals. The tool tracks deadlines for licenses, maintenance contracts and software subscriptions, flags those that are approaching, and sends email reminders until someone confirms that the order has been placed. According to the repository documentation, it needs no database and no framework: a Node.js server and a single JSON file are enough to run it.

How the tool works

The application is aimed at teams that buy software on fixed commitment periods and tend to lose track of renewal dates. Its dashboard groups every item by status, shows counters, and displays the total amount that needs to be ordered.

Each item falls into one of four statuses:

  • OK: the license is outside the alert window.
  • To anticipate: the end date falls within the alert window, which is 60 days by default.
  • Urgent: 30 days or fewer remain.
  • Expired: the end date has passed.

When adding a product, users choose a commitment period of one, two or three years. The end date is calculated automatically from the start of the period, so there is less room for manual error.

Reminders and the order button

Once a license enters the alert window, the tool sends a first email 60 days before the deadline. The interval is adjustable. Reminders then repeat every 7 days, again adjustable, until the order is marked as placed.

The Order placed button starts a new period. By default, the new period begins on the previous end date. The counter resets, reminders stop, and the history is kept. Users can also trigger a reminder manually with a Send reminder now button, send a test email, and check a log of sent messages.

Routing by department

Organizations with several departments can route reminders by service. Licenses assigned to a given service code, the repository gives 53 and 58 as examples, are sent to dedicated recipients in a separate email. Individual licenses can also have additional recipients.

Why renewal tracking matters

Missed renewals are a common source of administrative trouble. A lapsed license can interrupt access to tools that staff rely on, while a renewal settled at the last minute can leave a team without a clear budget line or time to compare options. Spreadsheets are often used for this purpose, but they rely on someone remembering to check them.

Automated reminders address that gap. They move the task from memory to a scheduled process, and they show a clear record of who was notified and when.

Self-hosting and the setup process

The application is designed to run on a machine the user controls. The repository lists Node.js 18 or later as a requirement, along with network access to an SMTP relay for sending emails. Instructions cover several environments: a Synology NAS, Linux and macOS, Windows, and Docker.

On a Synology NAS, the guide walks through installing Node.js from the Package Center, enabling SSH, copying the application folder to a shared folder, and installing the nodemailer dependency for email delivery. It also suggests scheduling a script every five minutes so that the server restarts if it stops responding. The documentation warns that the process can be confused by a stray PORT variable in the session, and it recommends always specifying the port explicitly.

After installation, the first configuration covers the SMTP server, the sender address, the recipients, the department routing, the public address of the application, and the language of the emails. The guide notes that the email language can be set to French or English, and that the interface itself is available in both languages.

Security features

The application is open by default to make the first installation easier, and a banner reminds the administrator to set a password. Once configured, access is protected by a login page. According to the repository, passwords are stored as scrypt hashes, sessions use a signed HttpOnly cookie valid for 12 hours, and an IP address is blocked for five minutes after five failed attempts.

The documentation also states that the application uses plain HTTP. For use outside a trusted local network, it recommends placing it behind a TLS reverse proxy. The SMTP password, if one is required, is stored in clear text in the data file, which is protected by restrictive file permissions and never sent back to the browser.

What comes next

The project is presented as free software, and the author invites users who find it useful to offer voluntary support. Updates are handled by replacing the server file and the public folder while keeping the data folder intact. Backups are straightforward because all state, including licenses, settings and the sending log, is stored in one file.

For organizations that already run a home server or NAS, the tool offers a lightweight option without a subscription. Its simplicity is also its limit: anyone adopting it will need to manage hosting, backups, email delivery and security themselves.

Source: GitHub

Comments (0)