Skip to content

d-a-ve/memora

Repository files navigation

Project

This project makes use of pnpm as the package manager.

Todos

  • Make the dashboard nav bar fixed and not scroll with the rest of the page.
  • Order the birthday dates in ascending order
  • Find a tool that can send emails for you based on data in database. It would be called everyday.
  • Settings page
  • Cloud function for sending mails daily
  • Create a page loader component
  • Create a button loader component
  • focus on password input on eye icon click
  • clicking outside navbar closes the navbar
  • make the opaque bg cover everything when the sidebar is open
  • main content cannot move when navbar is open
  • remove body overflow when modal is clicked
  • find new colors and use the 60/30/10 rule
  • find logo for app
  • merge all variants of button to one file using cva
  • put the logo everywhere needed
  • add an underline to the normal line and on hover remove it
  • add image/content beside form on auth pages
  • use the new color palette and fix app
  • add 404 error page
  • move continue with google for auth up
  • change name to be able to use only a single name e.g Dave and nore Dave aronmwan
  • add error handling on form submission
  • add a loading spinner when searching, toegther with the debounce
  • fix dashboard header showing up when add birthday modal is open
  • edit and delete birthdays
  • send a welcome email when signing up for the first time
  • fix the search birthday function returning peoples' birthday not belonging to the specific user
  • fix clearing the search input showing stale data before working. It can show a loading spinner
  • fix user image on dashboard header being disproportional and distorted (not too sure)
  • use optimistic updates for adding and removing birthdays
  • add error component for data fetching
  • fix color on the inline calender showing blue. the select options shouldn't be blue. Make black. Remove the underline showing in the months part.
  • remove the hover effect from the inline calender
  • do home page
  • add padding block to the inputs
  • make the search input fill the container for upcoming birthday section for mobile
  • make dashboard header bg blue and use mono logo
  • make nav bar bg a saturated color of white
  • change primary button to right side in modals for desktop
  • make the button at the corner more obvious with maybe a text
  • increase the spacing between the image and text for upcoming birthday card
  • use a lighter color for the border for the card on dashboard, say grey-200
  • change top section of calender to something. Samuel suggested a pastel purple color
  • increase the text for the month select in the inline calender
  • on mobile, make the add birthday button more prominent in the empty state for the dashboard. Figure something out for the desktop
  • remove settings and logout from navbar and take them to user image at the top right. Let them be a dropdown/popup
  • work on a brithday template for mailing and add to courier dashboard
  • remove the divider class from the upcoming birthday section and use en element beneath each card
  • fix date error when adding new date
  • feedback page with 3 options (request feat, report bug, holla the dev)
  • Create a serverless function for updating the year of birthdays that have passed in the database to the next year.
  • [] change the loading state for protecting routes from authenticated user to use a popup at the right corner like linkedIn and popular apps do it
  • [] add meta tags
  • [] show all birthdays received from backend on the calender (seems not possible yet)

Cloud Function Pseudo code

  1. Get today's date
  2. Create an array called todayBirthdays having a schema of: { userId: "I 67yugc6c7ecgbc", birthdays: ["John", "Doe", "testing"], }[]
  3. Run through the birthday database and find birthdays that match today's date
  4. Check if the userId exists in todayBirthdays.
  5. True: update the birthdays array for that userId by adding the person's name to the array.
  6. False: Create a new object in the todayBirthdays array and update the userId and birthdays array
  7. Loop through the todayBirthdays
  8. Get the email address from appwrite based on the userId
  9. Check that the length for birthdays array is more than 1 1. True: Use email template that is for multiple people 1. False: User email template for a single person
  10. Send mail to the email address and log the status of this line