I built my first SaaS - NotiFast
Tags: discord, showdev, webdev, programming
Published: 2024-06-23 01:22:26

The project is called **[NotiFast](https://notifast.me/)**. The goal was to create a versatile bot that will send you notifications if something changes on the websites you follow. I focused on making it work for the majority of websites. NotiFast comes with a visual creator, so you don't need any technical knowledge to use it.

> It was based on my previous open-source project [webscraper-bot](https://github.com/jjablonski-it/webscraper-bot).

## Motivation

This is the second version of this bot. The first approach was [webscraper-bot](https://github.com/jjablonski-it/webscraper-bot), which I built because I needed to be notified about new rental apartments quickly [(more about that in this post)](https://dev.to/jjablonskiit/how-to-get-apartment-with-code-web-scraping-discord-bot-2n1j). Some people started discovering the bot, and after a few months, I had around 100 users. But there was one big problem: over 90% of the users didn't manage to create a single scraping bot because it required a query selector to be inserted. So, how I interpreted it was:

-    There are people looking for this kind of service.
-    It needs to be way easier and detect which items you want to track automatically.

So, I gave it a try.

## What can it do?

NotiFast can notify you about:

1. **New items being added** (e.g., shop items, blog posts, videos, comments, or any list of items from a website).
   ![New item notification example](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/onegbllurfqih5k0ibrp.png)

2. **Content updates** (e.g., "Out of stock" notifications or price changes).
   ![Content update notification example](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6iz51gt40ym5u6j7pmy8.png)

All of this is achieved using a (somewhat) simple visual creator.

> Currently, sites that require authentication or any user action before seeing the content are not supported.

## Why Discord bot form factor?

There are several reasons why Discord was the perfect choice for this application:

1. **Universal Notification Delivery**: Works seamlessly across all mobile devices.
2. **No Authentication Worries**: No need for managing user credentials.
3. **Spam Protection**: Inherent spam protection provided by Discord.
4. **Integrated Payment System**: Easy handling of payments.
5. **Developer-Friendly SDK**: Discord.js SDK is really good and easy to use.

All of the above significantly speed up development. The end goal is for it to be a web application with adapters for all major communicators like Slack or Signal, but for now, Discord makes things a lot easier.

## How did it go?

The biggest challenge was to make it versatile and work even on pages it was not prepared to work on. The solution is a lot of heuristics to determine which container is the most likely to have some relevant content. There's some room for improvement, but the effects are satisfying for now, and on most pages I tested, NotiFast can point to the correct HTML container quite fast.

Another challenge was determining which items were already seen. To identify elements, I'm using a unique element link (chosen by the user), the element's content, and a custom signature based on element's images. Combination of those three works quite effective.

I worked on this side project in the evenings and weekends after my full-time job and was able to finish it in less than 6 months. The website ([notifast.me](https://notifast.me/)) was made during one weekend.

![Chart showing the number of commits per month](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05bkgk717jgkdx6pyvro.png)

## Try it out

At this moment, I'm running a **free** beta for the first **100** users who want to try the app (Live counter at the top of the website [**notifast.me**](https://notifast.me/)). 
**[Learn more](https://notifast.me/)**
**[Join the community](https://discord.gg/unqRJcynqg)**
**[Install to your server directly](https://discord.com/api/oauth2/authorize?client_id=1186458809128996974&permissions=2147534848&scope=bot)**

Try it out yourself and see if it works for the website you're interested in!

## Next steps

After the beta testing phase, a period of bug fixes and improvements will happen. Then, proper subscription tiers will be released after user surveys and Discord verification process. 

Next big milestones I see for this project are:
-    Personal user commands (allow to chat with the bot and get notifications privately)
-    Web interface — easier job management and possibility to add charts and other custom UI elements
-    Adding other communicator interfaces — e.g., Slack, Telegram, and more

## Conclusion

**[NotiFast](https://notifast.me/)** is designed to make your life easier by notifying you of changes on the websites you care about, without requiring any technical know-how. It's still early days, and there's plenty of room for growth and improvement, so your feedback is invaluable. If you're intrigued, [join the free beta](https://notifast.me/) and let me know how it works for you!