Project Introduction

In about 2016 I wrote myself a birthday reminder application using Microsoft Access.  The idea was that it should send out emails to family members reminding them of relatives' birthdays.  It lists all members of my family with their dates of birth.  There is a built-in 'count-down' so that email reminders are sent out 21 days, 14 days and 7 days before a birthday.  One further feature is that for children under 18 the email also states the age they will attain at the next birthday.

A Windows scheduled task starts the application every day at 13:30pm (when I can be reasonably sure the computer will be switched on, and I will be having lunch, so will not interrupt any other work I may be doing), and if any reminders are due they will be emailed.

Although this application has served me well since I wrote it, it does mean that I have to maintain all the birthdays for all members of the family...  I have therefore decided to see if I can develop an application where each family member is responsible for maintaining their own list of relatives and other friends with their birthdays.  This will allow other family members to add people I am unaware of, and removes the burden of data accuracy from me.

For this to work all family members will need access to the system, so a web application is the natural choice.  Once again I will use C#, Blazor, Dapper and Syncfusion as the tools of choice.

In addition, the application will require a 'timer' type control to check on a daily basis whether any emails should be sent out.  I have identified HangFire as a potential answer to this requirement; it will be interesting to see if this works (or if I will still need a Windows scheduled task to ping the website to make sure it is 'awake' just before the application is run.)

As it will be a web application I will also need a robust authentication tool where initial email verification can be implemented.  For this I have decided to use Azure Active Directory B2C.  For my purposes it should be free and hopefully not too difficult to implement.

I do not claim any element of this application to be my own work.  I have simply used others examples where I have been able to find them.  In particular I have used Tim Corey's YouTube videos on using Dapper and Michael Washington's presentation on Azure B2C as part of the .NetConf 2021.

YouTube Video