
Notify Me
See updates from all your favorite websites.
Since my faculty didn't have any kind of centralized notification system for it's students, each class I took somehow had 2 or 3 sites for notifications depending on number of professors and / or assistants. That basically meant that each time exam season started, I had to look at ~10 different sites just have the basic info about my exams and other stuff that happened on course (e.g when we didn't have lectures).
As you can assume, I quickly got fed up with this and started working on a simple python script which just periodically checked websites and it would send an email to me each time new change was present. Script could only be run locally on my machine, and had rudimentary checks for differences which was based on git diff (since that's the format I already knew).
And it actually worked like a charm - so I started talking with my friends and they asked me if they could use it to. That's where I realized that nobody is going to try it out if trying it out meant that they had to manually install python on their machine and then manually set up everything else. So, naturally I started looking at the ways I could enable them to try it out and I came up with a pretty obvious conclusion that I would probably need some kind of user interface, and most likely some kind of web app.
Fast forward one year: App is widely used among students of my (now former) faculty, and realized that there are not many similar apps which are offering the same service while at the same time being simple to use - Notify Me literally has a form with 3 fields you need to enter.
So I started thinking about how can I improve it for a wider audience and actually make some money of it, and that thinking lead me to the current state of affairs - We are currently a team of 3 trying our best to make Notify Me the best app for simple site tracking.
This article will describe the basics of Notify Me tech stack. What is Notify Me - It's an app which sends you an email notification whenever a site you are tracking changes, along with the summary of the changes.
I saw this question as one of the example prompts, and since I never actually wrote about our stack, it just seemed like a fun thing to do. So let's get started!
The basics
Whole app consists of Frontend completely written in React, and Backend - almost completely written in python.
We mostly use Google Cloud (GCP) as our infra provided, with just a small number of things running on AWS.
Frontend
Since I'm originally a backend engineer and I never touched frontend code in my life before working on Notify Me, I can proudly say that this is my first ever frontend project.
As far as the tech stack goes, whole app is just one pretty basic React app with Tailwind as our CSS library.
I went with react because, me being a BE engineer, I only had basic HTML understanding and react just looked like HTML with a couple of extra steps.
Tailwind was again chosen because of the sheer simplicity needed to use it - you just put classes directly into your HTML files.
…
Backend
Backend is written almost completely in python, with one exception being our MJML converter function, since MJML doesn't have a library for python. As for what MJML is - it's an awesome email templating library which I highly recommend - https://mjml.io/
Our architecture is based on microservices mostly because we are running on serverless, so having single purposes services is a must if you want to save money.
Python was choosen mainly because it's super simple to use for web scraping purposes, and since we have an AI part of the code which analyses the keywords, using python for ML is a no brainer.
…
Hosting
We use terraform coupled with cloudbuild to deploy both FE, and BE, and our running cost as of today is about ~15$ a month, and most of that sum goes on storage, so you can say that we are basically running for free #serverless
…
Like
Comment
About
It started as a hobby project of mine so I could track faculty sites, but I quickly realized that there are more people that need the same services, so I just never stopped working on it. Currently we are a team of 3.

Comment