Engineering

โŒ˜K
  1. Home
  2. Docs
  3. Engineering
  4. Lovia System Architecture

Lovia System Architecture

Architecture Diagram & Application Stack Diagram

TODO: draft still in progress (by Kevin)

Versions & Migration Lifecycle

Miluv and Lovia Group apps are distributed apps and always evolving. Different components are transitioning/migration into the next version, while keeping the overall service usable and running. To make understanding & coordination doable, we have a concept of “Architecture” version, and versioning for major components.

See also: React Progressive Web App & NextJS

Architecture VersionDatabase Schema VersionsNotable ChangesStack (Removed, Deprecated, Recommended, Experimental, and Upcoming)
SatukanCinta 3.0
Historical (2017 to 2020)
PostgreSQL 10 – schema v3.0
Aurora MySQL 5.7 – schema v3.0
๐Ÿ‘ Spring Boot 1.5, AWS EC2, Facebook Login
Miluv 4.0
Historical (2020)
MongoDB 3.6 – schema 4.0
MariaDB 10.3 – schema v4.0
Elasticsearch 7.0 – schema v4.0 (soluvas-geo)
PostgreSQL 10 – schema v3.0
1. Introduction of Express & Serverless Framework
2. Replacement of Facebook Login with Firebase Auth
โ›” AWS EC2, Facebook Login
๐Ÿ‘Ž Spring Boot 1.5, Lightsail
๐Ÿ‘ Express, Firebase Auth
๐Ÿงช Strapi, GraphQL
Miluv 4.1
Historical (2020 to May 2021)
MongoDB 4.0 – schema v4.1
MariaDB 10.4 – schema v4.0
Elasticsearch v4.0 (soluvas-geo)
PostgreSQL 10 – schema v3.0
1. Removal of Express
2. Introduction of NestJS
3. Introduction of FusionAuth
4. Introduction of ERPNext
5. Introduction of Rocket.Chat
โ›” Express
๐Ÿ‘Ž Spring Boot 1.5, Lightsail, Firebase Auth
๐Ÿ‘ NestJS at AWS Lambda + Fargate, ERPNext, GraphQL
๐Ÿงช Strapi, Nx
๐Ÿ˜Ž Rocket.Chat, FusionAuth
Miluv 4.2
May 2021 – Currently active in production
Under development as satukancinta_satukancinta_prd & heartenly_prd
MongoDB 4.4 – schema v5.0: introducing user.ssoId and user.idV4, user._id is deprecated, chat* now uses ssoId
MariaDB 10.5 – schema v4.0
Elasticsearch 7.0 – schema v4.0 (soluvas-geo)
PostgreSQL 10 – schema v3.0 (deprecated)
1. Introduction of MongoDB Realm
2. Deprecation of Strapi due to their removal of MongoDB support
๐Ÿ‘Ž Spring Boot 1.5, Lightsail, Strapi
๐Ÿ‘ MongoDB Realm, NestJS at AWS Lambda + Fargate, FusionAuth, ERPNext, Rocket.Chat, GraphQL
๐Ÿงช Nx, Netlify/Vercel, Sanity, Rasa
Lovia 5.0
May 2021 – Under development as lovia-staging
Will be deployed as lovia-staging
Used by Tmra v1
MongoDB 4.4 – schema v5.0: user._id is now SSO ID
MariaDB 10.5 schema v4.0
Elasticsearch 7.10 – schema v4.0 (soluvas-geo)
1. Unified MongoDB database and backends for Miluv, Lovia, Soluvas, and Talentiva
2. Complete replacement of satukancinta.com to miluv.app
3. Adoption of Bunny Storage and Bunny Optimizer
4. Replacement of chat system with Rocket.Chat
โ›” Spring Boot 1.5, Lightsail
๐Ÿ‘Ž Strapi
๐Ÿ‘ MongoDB Realm, NestJS at AWS Lambda + Fargate, FusionAuth, Ant Design Pro (UmiJS) @ AWS Amplify, Bunny Storage & Optimizer, ERPNext, Rocket.Chat, GraphQL
๐Ÿงช Nx, Netlify/Vercel, Sanity, Rasa, AWS Lambda Docker
Lovia 5.1
Not yet started – Awaiting launch of Lovia 5.0 platform
Aborted: Skip directly to Lovia 6.0 due to changing to NextJS/MUI
MongoDB v5.0
MariaDB v4.0
Elasticsearch 7.14 – schema v4.0 (soluvas-geo)
1. Introduction of Capacitor for Android & iOS native mobile apps๐Ÿ‘Ž Strapi, Ant Design Pro (UmiJS)
๐Ÿ‘ MongoDB Realm, NestJS at AWS Lambda + Fargate, FusionAuth, Bunny Storage & Optimizer, Capacitor, ERPNext, Rocket.Chat, GraphQL, urql
๐Ÿงช Nx, Netlify/Vercel, Sanity, Rasa, AWS Lambda Docker, Webiny
๐Ÿ˜Ž Hasura
Lovia 6.0 – code MUIv5
Pending start in Talentiva v2
Inspired by Amit Modal’s React Stack 2021, React Starter Kit
Ref: Lerna with Yarn Workspaces
MongoDB v5.0
Bunny
FusionAuth + MySQL
Elasticsearch v7.14 using AWS OpenSearch v1.0 for logging & APM
ERPNext: uses MariaDB
DynamoDB for Webiny?
1. Using MUI v5 to replace Ant Design (Pro)
2. NextJS to replace UmiJS
3. Webiny?
4. Lerna
5. Removal of Strapi
6. Node.js v16 (but Lambda still uses Node.js v14)
7. Yarn v3
โ›” Strapi, Ant Design Pro (UmiJS)
๐Ÿ‘ MUI v5, MongoDB Realm + Atlas, Bunny Storage & Optimizer, React Router + Redux Toolkit + React Hook Form + Ajv/Joi/Yup, FusionAuth, ERPNext, Rocket.Chat, GraphQL + urql, Vercel/Netlify, Gitpod, Middy + Typegoose at AWS Lambda, Jest + React Testing Library, Storybook, Cypress, NextJS last after PWA is done (likely dual project inside Lerna), Node.js v16, Kaniko
โ“ Webiny, Lerna
๐Ÿงช Lerna, Yarn v3, Sanity, AWS Lambda Docker
Lovia 6.1 – code Capacitor
Not yet started
MongoDB v5.0
Bunny
FusionAuth + MySQL
Elasticsearch v7.14 using AWS OpenSearch v1.0 for logging & APM
ERPNext: uses MariaDB
1. Capacitor๐Ÿ‘ MongoDB Atlas, Bunny Storage & Optimizer, NextJS, FusionAuth, ERPNext, Rocket.Chat, GraphQL, Vercel/Netlify
โ“ MongoDB Realm, NestJS at AWS Lambda + Fargate, Capacitor, Hasura, Webiny
๐Ÿงช Nx, Sanity, Rasa, StackBlitz, AWS Lambda Docker
Lovia 6.2 – code Hasura
Not yet started
MongoDB v5.0
Bunny
FusionAuth + MySQL
Elasticsearch v7.14 using AWS OpenSearch v1.0 for logging & APM
ERPNext: uses MariaDB
1. Adopting Hasura with MongoDB๐Ÿ‘ MongoDB Atlas, Bunny Storage & Optimizer, NextJS, FusionAuth, ERPNext, Rocket.Chat, GraphQL, Vercel/Netlify
โ“ MongoDB Realm, NestJS at AWS Lambda + Fargate, Capacitor, Hasura, Webiny
๐Ÿงช Nx, Sanity, Rasa, StackBlitz, AWS Lambda Docker
Lovia 6.3 – code Webiny
Not yet started
MongoDB v5.0
Bunny
FusionAuth + MySQL
Elasticsearch v7.14 using AWS OpenSearch v1.0 for logging & APM & Webiny
DynamoDB for Webiny
ERPNext: uses MariaDB
1. Introduction of Webiny?๐Ÿ‘ MongoDB Atlas, Bunny Storage & Optimizer, NextJS, FusionAuth, ERPNext, Rocket.Chat, GraphQL, Vercel/Netlify
โ“ MongoDB Realm, NestJS at AWS Lambda + Fargate, Capacitor, Hasura, Webiny
๐Ÿงช Nx, Sanity, Rasa, StackBlitz, AWS Lambda Docker

Webiny vs Strapi

Webiny can be compared fairly to Strapi, as they have many common functions.

WebinyStrapi 4.x
Supported databasesDynamoDBMySQL/MariaDB, PostgreSQL, SQLite
Search indexElasticsearch (required)None
Role-based permissionYesYes

References

Articles

How can we help?

Leave a Reply

Your email address will not be published. Required fields are marked *