Case Study - Realtor Simplified
Realtor Simplified is a saas platform that allows you to deploy a real estate website from a selection of templates within minutes.
- Industry
- Real Estate
- Year
- Service
- Saas application
Challenge
Design & Develop a platform that desploys a premade template within minutes. This application needs to have multiple services coupled together:
- Dedicated static image hosting service, Digital Ocean Spaces (S3 wrapper).
- Dedicated mongodb database from Digital Ocean.
- Mapbox api key for their tiles service.
- Dedicated application hosting for a NextJS app in Digital Ocean's App Platform.
-
All of this resources need to be provisioned automatically, and coupled together without any human interaction.
-
User should be able to manage Admin users and access to the app's dashboard.
-
User should be able to assign a custom domain for the application.
-
Admin users, should be able to modify the static content of the website as well as dynamic content, such as property listings, realtors, images, etc.
Solution
High level architecture of the application.
Realtor Simplified Saas is split in 3 different systems. Each of this systems is hosted in their own server and they communicate through apis.
The first system 'Shop' is a NextJs application that faces the user. It is where a user can register, manage their subscription, and choose which template to deploy. Once a template is deployed this is also where that user is able to change the template, add admin users that can access the application dasboard's and where they can add a custom domain for the application.
The second system 'Server' is a small express server that serves as a connection between the 'Shop' and the 'Worker' system. It's job is to recieve orders from the 'Shop' and initialize any of the 3 job sequences available:
Initial Deployment (user triggered): This sequence is executed when a newly subscribed user deploys an application for the first time. The necessary resources previously mentioned will be provisioned from digital ocean.
Redeployment (user triggered) This sequence is executed when a subscribed user with an active application wants to change the selected template, or when they want to change the domain name of the application. Adding or deleting admin users can be achieved without redeploying.
Delete Application (system triggered) Whenever a user deletes their subscription the system will start a delete sequence that will delete all of their resources.
The last system 'Worker' is a series of redis queues that execute in sequence depending on which queue they start at. It is important to note, that job error handling and job initialization is only done by the 'Server' this is why the 'Worker' needs to notify the 'Server' whenever a job is finished correctly or incorrectly.