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 Version | Database Schema Versions | Notable Changes | Stack (Removed, Deprecated, Recommended, Experimental, and Upcoming) |
---|---|---|---|
Historical (2017 to 2020) | PostgreSQL 10 – schema v3.0 Aurora MySQL 5.7 – schema v3.0 | ๐ Spring Boot 1.5, AWS EC2, Facebook Login | |
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 |
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 |
Not yet started – Awaiting launch of Lovia 5.0 platform | MongoDB v5.0 MariaDB v4.0 | ๐ 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.
Webiny | Strapi 4.x | |
---|---|---|
Supported databases | DynamoDB | MySQL/MariaDB, PostgreSQL, SQLite |
Search index | Elasticsearch (required) | None |
Role-based permission | Yes | Yes |