Import Dates image

Import Dates

Automated reminders for important family dates.

As families grow, keeping track of important dates becomes increasingly challenging. Over the years, I relied on a Google spreadsheet to organize and remember these dates. Every month, I manually checked the spreadsheet, took a screenshot, and sent it to my wife. We would then coordinate to buy cards, gifts, or send a text as needed. These dates included birthdays, holidays, (half-birthdays for the immediate family), and anniversaries.

Today, being the first day of the year, I decided to streamline and automate this process. I developed two Python scripts to handle the task of checking the spreadsheet and managing the reminders on a monthly basis.

1. Automated Email Script: The first script pulls data from a CSV file containing key details such as the name of the event, the category (e.g., birthday, holiday), the date, and the year (for birthdays and anniversaries). Using SMTP and a Google account's app-specific password, the script checks the CSV daily and sends an email on the first of each month. The email provides an overview of all upcoming dates for the month. Originally developed on a MacBook, this script was packaged and deployed on an always-on Raspberry Pi for continuous operation.

2. HTML Front-End with Flask: The second script serves as a web-based interface powered by a Flask server. Accessible within my local network, this application allows me to view the entire year's dates at a glance. By default, the page toggles to the current month upon refresh, thanks to integrated JavaScript. Additionally, a dropdown menu enables quick navigation to any specific month. This front-end simplifies access to the data and ensures the information is always at our fingertips.

This system saves me time and ensures we’re better prepared to celebrate important milestones for both our immediate and extended family. While this tool was built to address my personal needs, I believe it has potential value for others. I am excited to explore its further development as a product that can be shared more widely.

Back to Posts