DEV Community

Jakub Skoneczny
Jakub Skoneczny

Posted on • Originally published at blog.jskoneczny.pl

IsEven API - SaaS platform for checking if number is even πŸš€

Have you ever heard about the SaaS platform for if a number is even? Well, I've decided to recreate a service like this of my own! πŸ˜„

Not for the profit, of course - who would need the paid service for checking the parity of a number? πŸ˜„ I wanted to create a full-stack project from start to end and then deploy it. It seemed like a great challenge that would require gathering all my knowledge, structuring it, and maybe even learning some new stuff along. So this idea of creating a non-real SaaS platform fascinated me!

So this is it! I present to you my latest project - is-even.eu. It is open-source, so go ahead and check the codebase.

About the project

The main idea behind this SaaS platform is that a customer can purchase a plan (different plans allow different API usage). He can then perform an analysis of a number via a protected route. Users must use API Key to have access to that route. The application tracks the usage for each user, and if he reaches the limit, he can no longer use our services.

Core features are:

  • Users can signup and login,
  • User can place orders and fulfill them,
  • User can create API Keys
  • User can use the service within his credits limit
  • User can monitor the usage of his credits

Technical informations

The project gathers some of the best practices of project development and maintenance. It shows how one can implement a working system from start to end, deploy it and monitor it. This project contains of:

  • modern Frontend application written in Next.js
  • robust Backend application written in Nest.js
  • infrastructure as a code with AWS CDK
  • Typescript codebase for every application
  • docker environment for local development
  • monorepo manager to control all the and its dependencies
  • CI/CD pipelines for running tests and deployment

The frontend application is deployed on Vercel, one of the first choices for deploying the Next.js application.

The backend application is deployed on AWS ElasticBeanstalk. I've found this challenging to create an infrastructure setup with AWS CDK, but it was worth it! Infrastructure as a Code is fantastic because now I can set it up from the start in no time!

This whole project is a template, ready to copy and use accordingly to your start-up idea! Feel free to fork it and adjust to your needs πŸ˜‰

I've decided to use some new modern technologies in this project. One of the essential mentions is XState - a library that brings state machines to Javascript. I enjoy doing state management in React with that library.

Other worth mentions are:

  • Stripe
  • ChakraUI
  • Rush.js as monorepo manager
  • Next.js as frontend framework
  • Nest.js as backend framework
  • Multiple AWS services like: Cognito, RDS, EBS, ELB etc.

For complete documentation and more information, please check out the official Github repository or special page about the project

I encourage you to have a look, examine the code, and write your thoughts. What do you think about this project? What's missing or what could have been done differently?

Contributing

If you have a suggestion to improve this project, please fork the repo and create a pull request. You can also open an issue with the tag enhancement. Any contributions are welcome.

References

If you wonder why I decided to go with monorepo, here are some good reasons that I've written in my previous article:

Also, I've written a more hands-on tutorial for setting up the infrastructure with AWS CDK:

Top comments (5)

Collapse
 
jonrandy profile image
Jon Randy πŸŽ–οΈ • Edited

This is performance art. Love it. Personally, I'm considering developing a SaaS platform for capitalising strings

Collapse
 
skona27 profile image
Jakub Skoneczny

Great idea ;) feel free to use this project as reference!

Collapse
 
ziadomalik profile image
Ziad Malik

This is Genius, thanks for the Good Laughs!

Collapse
 
ancs21 profile image
An Pham

Nice project!

Collapse
 
skona27 profile image
Jakub Skoneczny

Thank you!