This app is designed to keep tracker of your free and paid subscriptions such as Netflix, Amazon, Spotify, and more. As the renewal dat for your subscription comes close, or your free trial is about to end, this app will alert you. By default, notifications will be issues 7 days in advance of the renewal date. This will give you one week to either cancel your subscription, end your free trial, or be prepared to pay for the renewal.
- Welcome to Subscription Tracker!
- Table of Contents
- - 3.2 Contributors
- 1. Using the App
- 2. App Design
- 3. Contributing
- Step 1: To launch the app, navigate to the parent directory.
- Step 2: Run
bundle installfrom your terminal in order to install the required gems. - Step 3: Run
rake db:migratefrom your terminal to build the database needed to save your data. - Step 4: Run
rake db:seedfrom your terminal to add the services to the database so that you may make new subscriptions. - Step 5: Use the rake command
rake startin the terminal to launch the app.
If you have not previously made an account with SubscriptionTracker, select New User from the main menu.
- The app will ask you for your first and last name, as well as a username and password in order to create an account.
- If the username you have selected is already in use, you will be prompted to pick a new username
- If you would like for SubscriptionTracker to help you monitor your monthly budget for subscription services, you can enter your monthly budget in when prompted.
If you have previously made an account with Subscriptiontracker, enter the username and password that you selected when you made the account.
Use the main menu to navigate through the app. The major features are described individualy below.
If you have already added subscriptions to you SubscriptionTracker account, selecting My Subscriptions will display a menu of all of your current subscriptions and the subscription details such as cost, duration, and renewal date.
- Pressing
enteron any of the current subscriptions will select that subscription and allow you to:- Update the subscription details such as cost or plan duration.
- Set up or modify the reminder for this subscription.
- Below the list of subscriptions, or if you have not already added some, you will see an option to add a new subscription.
Selecting this option will allow you to add a new subscription to your SubscriptionTracker account.
- A list of subscription services currently linked to this app will be displayed in a menu. Select the service which you are subscribed to in order to begin tracking it in the app.
- Hint: Begin typing the first few letters of the service name in order to filter the list.
- Upon selecting a service, you will need to enter all of the following in order to track the subscription on the app:
- Email Address: Enter the email address that you used to create the subscription. If you have multiple accounts or subscriptions to the same service, be sure to use the correct email address for each subscription you are associating with your SubscriptionTracker account.
- Subscription Duration: Enter the duration of the subscription plan in days.
- For a recurring 1 month subscription, enter
30 - For a recurring 3 month subscription, enter
90 - For a recurring 1 year subscription, enter
365
- For a recurring 1 month subscription, enter
- Cost of Subscription: Enter the cost of the subscription per the recurring duration. For example, if you have a monthly plan, enter the monthly cost. If you have an annual plan, enter the annual cost.
- The cost must be entered in standard monetary format, without the dollar sign.
- Ex: $5 should be entered as 5.00
- The cost must be entered in standard monetary format, without the dollar sign.
- After successfully adding a new subscription to your SubscriptionTracker Account, it will automatically give you the option to setup a new reminder
After selecting a current subsction, choose Update/Delete Subscription from the subscription menu.
- In order to update the details of your subscription plan such as cost or plan duration, select Update cost/duration from the next menu
- When updating the plan details, ensure to follow all of the same guidelines for entering the cost and plan duration that you followed when initially creating the subscription. Those details are listed below again for your convenience.
- Subscription Duration: Enter the duration of the subscription plan in days.
- For a recurring 1 month subscription, enter
30 - For a recurring 3 month subscription, enter
90 - For a recurring 1 year subscription, enter
365
- For a recurring 1 month subscription, enter
- Cost of Subscription: Enter the cost of the subscription per the recurring duration. For example, if you have a monthly plan, enter the monthly cost. If you have an annual plan, enter the annual cost.
- The cost must be entered in standard monetary format, without the dollar sign.
- Ex: $5 should be entered as 5.00
- The cost must be entered in standard monetary format, without the dollar sign.
- Subscription Duration: Enter the duration of the subscription plan in days.
After selecting a current subscription, choose Update/Delete Subscription from the subscription menu.
- In order to delete a subscription plan from your SubscriptionTracker app acount, select Delete Subscription from the next menu.
⚠️ Warning: Deleting a subscription is irreversible.⚠️
Selecting Access Reminder from the subscription menu will display the date on which the reminder for that subscription will be displayed upon logging in to SubscriptionTracker.
-
If no reminder has yet been set, you will be asked if you would like to create a new one.
-
After creating a new reminder, you will have the option to add this rmeinder to your Calendar app so that the reminder can be tracked outside of SubscriptionTracker.
- If selected, a Calendar event file will be created with the name
<service_name>.ics. After this file is created, it will automatically be opened using your default Calendar application.- Follow the on-screen directions in the Calendar app to finish adding the even into the Calender.
- If selected, a Calendar event file will be created with the name
-
Once a reminder exists, you will have the option to adjust how much advance notice the reminder provides, or to disable the reminder from appearing in SubscriptionTracker.
More information on Reminders can be found at 1.3.3 Reminders
Selecting this menu option will provide an analysis of your current spending based upon the current costs of your subscriptions, as well as the durations for each of your subscriptions, and your indicated budget (optional).
- Daily spending report presents a normalized report for the cost of the users current subscriptions per day
- This is helpful for comparison to common daily expenditures such as a coffee or buying lunch out.
- Monthly spending report assumes that all current subscriptions will be maintained for at least 30 days
- Yearly spending report assumes that all current subscriptions will be maintained for 365 days
- If the user has specified a monthly budget, it will be compared to your monthly spending to determine how much under or over budget you currently are.
- This will present your will a breakdown of how much the user spends on each of the categories that their services belong to.
- Please note that some services belong to multiple categories so the total spending of all of your categories may appear higher than your actual recurring payments.
- Use this to look for areas in which you many be overspending.
- This will display your most expensive service in terms of cost per day. This controls for the naturally higher prices of longer term subscription plans.
Here you can change how many days prior to a subscription expiration that its reminder appears in the SubscriptionTracker app welcome screen.
- Enter the number of days notice you would like.date for your subscription is scheduled.
- For example, if your subscription is set to renew on Jan 20, a 7 day advance notice means that a reminder will be set for Jan 13.
- After adjusting the reminder you will be given the option to create a new calendar event, similar to when the reminder was first created.
- While SubscriptionTracker can create new Calendar events, it cannot remove events from your Calendar app. Please remember to delete the old reminder from your Calendar app.
Selecting this option will allow you to disable the current reminder for a subscription from appearing in the SubsscriptionTracker welcome screen.
⚠️ Warning: Deleting a subscription is irreversible.⚠️ - If you would like to re-enable a reminder, you must create a new one.
- SubscriptionTracker cannot remove events from your Calendar app. Please remember to delete the old reminder from your Calendar app.
This will allow you to change the username that you use to log in to the SubscriptionTracker application. Please note that this does not change the username for your subscription services.
This will allow you to change the password which you use to log in to the SubscriptionTracker application. Please note that this does not change the password for any of your subscription services.
This will allow your to enter a monthly budget into Subscription Tracker. If a budget has been set, the Spending Analyzer will also compare your current spending to your budget.
Selecting this option will allow you to permanently delete your user account from SubscriptionTracker. This will delete your account, your subscriptions, and any Calendar Event files that you created for your reminders while using SubscriptionTracker.
- A Category
- has many ServiceCategories
- has many Services through ServiceCategories
- A ServiceCategory
- belongs to a Category
- belongs to a Service
- A Service
- has many ServiceCategories
- has many Categories through ServiceCategories
- has many Subscriptions
- has many Reminders through Subscriptions
- has many users through subscriptions
- A Subscription
- belongs to a Service
- belongs to a User
- has many Reminders
- A Reminder
- belongs to Subscription
- A User
- has many Reminders
- has many Subscriptions
- has many Service through Subscriptions
The main features and menus of the SubscriptionTracker Interface are modularized to facilitate navigation, maintenance, and expansion. In order for the module associations to function, the modules are required using the heirarchy shown below:
![]()
User will be able to:
- ✅ Create a new subscription for themselves
- ✅ View their current subscriptions
- ✅ Modify their current subscription (cost/duration)
- ✅ Delete their subscription(s)
- ✅ View subscription spending:
- By day
- By month
- By year
- By category
- By most expensive service
Subscriptions will be able to:
- ✅ Initialize a renewal date based on date created and plan duration
- ✅ Update renewal dates when plan details change
- ✅ Display subscription information
- ✅ Calculate days remaining in the current plan
- ✅ Determine if there is a current active reminder
- ✅ Find ts active reminder
- ✅ Create a new reminder (which disables the previous one if it was active)
- ✅ Calculate a normalized cost (dollar per day)
Services will be able to:
- ✅ Associate with new or multiple categories
Reminders will be able to:
- ✅ Initialize with a default notice time of 7 days
- ✅ Find the date on which the reminder should be issues based on
:days_noticeand its subscription's renewal date
- ✅ Develop comprehensive seed data for app creation to test various aggregate methods and associations.
- ✅ Multiple scenarios accounted for such as:
- Users with no subscriptions
- Users with multiple subscriptions to the same service
- Free trials vs. paid subscriptions
- Active reminders, old reminders, no reminders
- ✅ Develop basic command line interface for user to manage & control app
Status: ✅ You are reading it 😃
Status: ✅
- Develop system to track app users by username and password to persist subscription information between sessions (See 1.2 Logging In)
- Validation system developed to ensure no duplicate usernames are created by multiple users
- Validation system developed to ensure masked passwords match prior to account creation
- User has the ability to delete their app account and data
Status: ✅
- SubscriptionTracker.rb refactored to that main menu options and features exist in their own modules.
- Modules are associated using heirarchy from children up through parents in order to module inclusion to be complete. (See 2.3 Interface Modules)
Status: ✅
- Upon Reminder creation, user is prompted to create a Calendar Event for their machines local calendar app such as iCalendar, Outlook, or Google Calendar.
- The Ruby Gem
icalendaris used to turn a hash of subscription/reminder information into an event instance. - This event instance is published to a string formatted for an
.icsfile using the gem's.to_icalfunction - If it doesn't already exist, Ruby's
Dirobject methods are used to create a directory for the user in./reminder_files/<app_username> - Ruby's
Fileclass methods are then used to:opena new.icsfilewritethe event information string to the fileopenthe.icsfile for the user to confirm its addition to their Calendar app.
- ✅ Use
colorizeto color and format CLI output - ✅ Use
TTY-Tableto create display tables for spending data - ✅ Use ASCII art to create welcome logo
- ✅ Animate the welcome menu
- ✅ Custom screen clear method created to permanently display logo
- ✅ Sound effects linked to app launch, app exit, warnings, successful changes, and data deletion
Pull requests are welcome. Please make sure that your PR is well-scoped. For major changes, please open an issue first to discuss what you would like to change.
Daniel Sasse | Simon Jacobs |