Solution
Monak is a B2B2C platform wherein
- B2B is used by Employers and Recruiters to avail services for their employees (usually job migrants) in bulk via a web portal
- B2C is used by employees (usually job migrants) to avail above services and view their status as well other direct B2C services via a mobile app
For service description and definitions refer to Service Descriptions page
B2C

As can be seen in the above figure the B2C touch point is a mobile app to be available on Android and iOS phones to be installed via Play Store, App Store, Huawei Store. We will have API Gateway on front of our micro-services which will sanitise request via an Auth service. All services will have a registry wherein we will register a provider module which is a parser and processor linked to an external API like Bank Account, Card Scheme, Remittance Service etc. Ancillary services like notification service, logging service, monitoring and observability service are common services used by the whole system.
The mobile app will be a React Native based app. The decision to go with React Native as against Flutter or Native is for the following reasons:
- Primary requirement is just about data manipulation and showcase
- Decreases Development cost by upto 45% as compared to native
- Total TCO decreases in the long run
- One codebase helps in planning efficient and timely releases on both the platforms without waiting for the other
- More matured platform than Flutter
- More community support than Flutter which although Flutter is performant but eventually beats the TCO argument
Backend is micro-services based architecture:
- Separation of concern with teams
- Scaling becomes easier
- Primary language is Go. Some services will be in Python or NodeJS based upon devs and if external APIs have readymade SDKs in those languages.
What’s the use of this provider module? Provider module parses the data it receives and requests from and to an external API into a common format that our system and eventually our app understands.
B2B

As compared to the B2C solution, B2B is a lighter solution wherein its mostly dependent on the database and workflow service for CRUD like operations and triggers to fulfill a certain set of tasks defined in the workflow. Our workflow is currently mostly manual and a few parts automatic via a human and we intend to make this a fully-automated workflow using temporal as more external APIs become available.
Backend is OSS based GraphQL solution:
- Since the portal’s main requirement is around day to day CRUD operations
- The solution directly gives you GraphQL over a DB with a granular level of Auth controls
- Reduce API development time by upto 70%
- Supports event triggers to call serverless services to perform certain event based tasks and workflows
The web portal is a React based vs a MVC framework rendering frontend:
- Separation of backend and frontend
- Proper isolation for developers
- More matured platform
- More community support