Reminder App

Reminder App

    Code on Github

    Project Aim

    To create a reminder app loosely based on the behavior of the 'Google Tasks' app, with persistent data and using Node.js for the back-end and vanilla Javascript for the front-end

    Technologies used:

    • Node.js
    • Express
    • MongoDB / Mongoose
    • JavaScript

    How I made it:

    I deliberated whether I should include form validation. Google Tasks hasn't, but I couldn't understand why they let you add a reminder without adding any information - even a date. My focus was to make the app as seamless as possible to use but also didn't want to allow pointless behavior. So the user is required to select a date and either title or details

    The idea was to create a global array that will hold the reminder objects so that create, read, update and delete operations can be done. Each object has 3 fields, and when the user submits the form, the fields are captured into variables and sent to the addReminder() factory method function which builds the new object

    Point of Note - The object contains six properties, 'title, text, date, id, checked and deleted'. 'id' was not really needed because MongoDB adds an '_id' field when it creates a new entry. The reason for this was that the object was immediately sent to be rendered in the list and needed an id to manage the list. Ideally, the object would be created, sent to the DB to be saved and then a response sent back as

    fetch('/api', {method: 'POST'}).
    then(response => response.jason()).
    then(obj => render(obj));
    

    promise with '_id' included. This did not work at the time and needs to be further looked into

    • New Entries appear at the top of the list
    • Form validation. At minimum the user has to provide a date and title or text body
    • Checked reminders drops to the bottom of the list, non editable unless unchecked or deleted
    • Unchecked reminders jumps to the front of the list, regardless of reminder date. The reason is that there must be an importance given to the reminder for unchecking and gives the user a chance to deal with the entry
    • Deleted reminders are permanently deleted from the list and Database
    • To edit the text of the reminder entry, simply click on the text and edit. There is no save button, any further mouse click will save the reminder. This is to make sure the app has seamless seamless use and looks more pleasing without having clunky buttons everwyere
    • It is not possible to select a date older than the current date when creating the reminder (improvement on 'Google Tasks')
    • Expired reminders show the date highlighted in red and it is editable to a future date

    Future features:

    • Create a user login to capture email / password which will be used to send a personal reminder via email
    All