What's opensubs.io?

opensubs.io is a personal project of mine that I wanted to implement for a while now. The problem that it solves is simple: track recurring bills and payments and remind me to pay them, especially the yearly payments that are not executed automatically.

While I was thinking about the project and how to implement it, I realized that it was an excellent opportunity built it as open source. You can find the code here.

A bit more about the project

The idea is straightforward, and it solves a recurring problem I have. One thing that always happens to me around to October is that I forget to pay a government tax to be able to drive in Portugal. For 3 or 4 consecutive years I’ve been paying an extra fee for missing the deadline. That’s how bad I’m with this.

I know a simple calendar would probably fix the problem, but I want more information about my payments: average expenses, what’s coming next and what are the critical months when significant costs are due.

opensubs.io is more like a portfolio for my expenses. It’s not automated, and it’s something that needs maintenance and tuning. I don’t mind doing that since it’s something I do every couple of weeks anyway.

In a nutshell, with opensubs.io I add a payment, the first bill date, the cycle and I get notified when it’s due.

Currently, three notifications are sent depending if there are payments on that period or not:

  • One a day before a payment;
  • At the end of week, with all payments for the next week;
  • At the end of the month, with all payments for the next month.

Here’s an example:


1 yearly payment is due tomorrow:
Bear – £13.99

2 monthly payments are due tomorrow:
Netflix – £7.99
Three – £20.00

Total – £41.98

See you later,

One thing that I always had in mind was to give yearly payments a bit more attention. Monthly payments are monotonous, it’s always the same, and I know when some are due but yearly payments keep messing up my budget.

So if tomorrow three payments are due, and one of them is a yearly payment, instead of getting a notification saying “3 payments are due Tomorrow”, “I will get “{Service} is due tomorrow”. In most notifications, there’s an implicit relevance for yearly payments.

Since opensubs.io is not an application that I’ll be visiting every day, when accessing it I want to have the most information I can just to keep me in the loop. One example of it is the pagination. Instead of having a traditional pagination between months, there are these messages that will motivate me to check expenses for the next month. For example, if I have a yearly payment next month and my expenses increase, a message like this will show up: OpenSubs pagination

This is something I will probably incorporate in the notification as well. Ideally, I will come to the web app to do a more detail analysis of my expenses. I’ll try to deliver most of the value of the emails.

Upcoming features:

  • More services and logos. The logos might be tricky and may involve some manual work, but it gives some life to the app.

  • Improve notifications. Currently, all payments have the same type of notifications with the same frequency. There may be a case where I want to add custom notifications. e.g., notify me two weeks early, notify me one week early with a single notification instead of a grouped one. I’m still figuring out what’s the best approach

  • Payment history. For instance, if a payment started in January and is archived in March if I check January’s expenses it will not show up. This is a must-have feature.

  • Categorization and Statistics. I’ll probably start with yearly statistics to get an idea of what are the months I spend more.

  • Marketing page. I will work on it after the project is more stable.

What to expect?

I will keep building features and writing about the project. There are some topics I want to learn more about and writing about them will help me consolidate the learnings. I’ve already started with deployment process I’ve used for OpenSubs.

If there’s a particular topic you want me to cover, get in touch!

You can find the code on Github!