nodejs-quickstart-structure 1.10.1 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +4 -0
  3. package/docs/generateCase.md +245 -165
  4. package/docs/generatorFlow.md +65 -23
  5. package/lib/generator.js +4 -1
  6. package/lib/modules/app-setup.js +56 -5
  7. package/package.json +1 -1
  8. package/templates/clean-architecture/js/src/errors/ApiError.js +14 -0
  9. package/templates/clean-architecture/js/src/errors/BadRequestError.js +10 -0
  10. package/templates/clean-architecture/js/src/errors/NotFoundError.js +10 -0
  11. package/templates/clean-architecture/js/src/infrastructure/webserver/middlewares/error.middleware.js +29 -0
  12. package/templates/clean-architecture/js/src/infrastructure/webserver/server.js.ejs +24 -0
  13. package/templates/clean-architecture/js/src/interfaces/controllers/userController.js.ejs +4 -7
  14. package/templates/clean-architecture/js/src/interfaces/graphql/resolvers/user.resolvers.js.ejs +2 -11
  15. package/templates/clean-architecture/js/src/interfaces/routes/api.js +2 -2
  16. package/templates/clean-architecture/ts/src/errors/ApiError.ts +15 -0
  17. package/templates/clean-architecture/ts/src/errors/BadRequestError.ts +8 -0
  18. package/templates/clean-architecture/ts/src/errors/NotFoundError.ts +8 -0
  19. package/templates/clean-architecture/ts/src/index.ts.ejs +23 -0
  20. package/templates/clean-architecture/ts/src/interfaces/controllers/userController.ts.ejs +13 -19
  21. package/templates/clean-architecture/ts/src/interfaces/graphql/resolvers/user.resolvers.ts.ejs +4 -13
  22. package/templates/clean-architecture/ts/src/interfaces/routes/userRoutes.ts +4 -3
  23. package/templates/clean-architecture/ts/src/utils/error.middleware.ts.ejs +27 -0
  24. package/templates/common/package.json.ejs +5 -6
  25. package/templates/mvc/js/src/controllers/userController.js.ejs +5 -4
  26. package/templates/mvc/js/src/errors/ApiError.js +14 -0
  27. package/templates/mvc/js/src/errors/BadRequestError.js +10 -0
  28. package/templates/mvc/js/src/errors/NotFoundError.js +10 -0
  29. package/templates/mvc/js/src/graphql/resolvers/user.resolvers.js.ejs +2 -11
  30. package/templates/mvc/js/src/index.js.ejs +23 -0
  31. package/templates/mvc/js/src/utils/error.middleware.js +28 -0
  32. package/templates/mvc/ts/src/controllers/userController.ts.ejs +6 -14
  33. package/templates/mvc/ts/src/errors/ApiError.ts +15 -0
  34. package/templates/mvc/ts/src/errors/BadRequestError.ts +8 -0
  35. package/templates/mvc/ts/src/errors/NotFoundError.ts +8 -0
  36. package/templates/mvc/ts/src/graphql/resolvers/user.resolvers.ts.ejs +4 -13
  37. package/templates/mvc/ts/src/index.ts.ejs +23 -0
  38. package/templates/mvc/ts/src/routes/api.ts +3 -3
  39. package/templates/mvc/ts/src/utils/error.middleware.ts.ejs +27 -0
  40. /package/templates/clean-architecture/js/src/infrastructure/webserver/{swagger.js → swagger.js.ejs} +0 -0
  41. /package/templates/clean-architecture/ts/src/infrastructure/repositories/{userRepository.ts.ejs → UserRepository.ts.ejs} +0 -0
  42. /package/templates/mvc/js/src/config/{swagger.js → swagger.js.ejs} +0 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.11.1] - 2026-03-03
9
+ ### Fixed
10
+ - Fixed relative import paths in Clean Architecture JS `error.middleware.js` — changed to correct 3-level relative paths (`../../../`).
11
+
12
+ ## [1.11.0] - 2026-03-02
13
+ ### Added
14
+ - **Centralized Error Handling Mechanism:** All generated projects now include a standardized, predictable error response structure for both REST APIs and GraphQL communication types.
15
+ - New `src/errors/` directory with custom error classes: `ApiError`, `NotFoundError`, `BadRequestError`.
16
+ - New `error.middleware.{ts|js}` global error handler placed at the end of the Express middleware chain in `src/utils/` (MVC) and `src/utils/` + `src/infrastructure/webserver/middlewares/` (Clean Architecture).
17
+ - Integrates `winston` logger to automatically log 500-level errors to persistent log files.
18
+ - All controllers updated to pass errors via `next(error)` instead of manually sending responses.
19
+ - **GraphQL:** Apollo Server `formatError` hook configured with `unwrapResolverError` to intercept resolver errors and map `ApiError` instances to structured GraphQL extension codes.
20
+ - **REST APIs:** Express error middleware returns a consistent `{ statusCode, message, stack? }` JSON body.
21
+ - **Error Response Standardization:** All error responses follow the same schema regardless of database, caching, or communication type selected.
22
+
23
+ ### Fixed
24
+ - Fixed `swagger.js` / `swagger.yml` being incorrectly generated for non-REST API configurations (GraphQL, Kafka). Converted static `swagger.js` to `swagger.js.ejs` in MVC JS and Clean Architecture JS templates so `renderSwaggerConfig` can conditionally control its generation.
25
+ - Fixed `userRoutes.ts` in Clean Architecture TypeScript template not passing `NextFunction` to controller methods, causing `TypeScript TS2554: Expected 3 arguments` compile errors during Docker builds.
26
+ - Fixed incorrect relative import paths (`../../../../`) in Clean Architecture JS `error.middleware.js` — changed to correct 3-level relative paths (`../../../`).
27
+ - Fixed `HTTP_STATUS` being imported without destructuring from `httpCodes.js` (which uses a plain `module.exports = HTTP_STATUS` default export), causing `Cannot read properties of undefined` runtime errors.
28
+ - Fixed `renderErrorMiddleware` in `app-setup.js` deleting from the **template source directory** instead of the generated project's target directory. This caused error middleware templates to disappear from disk after the first test run, breaking all subsequent generations.
29
+
8
30
  ## [1.10.1] - 2026-03-02
9
31
  ### Added
10
32
  - Roadmap & Upcoming Features. **[View our Public Roadmap on Trello](https://trello.com/b/TPTo8ylF/nodejs-quickstart-structure-product)**
package/README.md CHANGED
@@ -19,6 +19,7 @@ A powerful CLI tool to scaffold production-ready Node.js microservices with buil
19
19
  - **Database Integration**: Pre-configured setup for **MySQL**, **PostgreSQL**, or **MongoDB**.
20
20
  - **Communication Flow**: Scaffold APIs using **REST**, **GraphQL** (with Apollo Server), or **Kafka** (event-driven).
21
21
  - **Caching Layer**: Choose between **Redis** or built-in **Memory Cache** for data caching.
22
+ - **Centralized Error Handling**: Every project ships with a global error handler, custom error classes and structured JSON error responses — consistent across REST & GraphQL.
22
23
  - **Dockerized**: Automatically generates `docker-compose.yml` for DB, Kafka, Redis, and Zookeeper.
23
24
  - **Database Migrations/Schemas**: Integrated **Flyway** for SQL migrations or **Mongoose** schemas for MongoDB.
24
25
  - **Professional Standards**: Generated projects come with highly professional, industry-standard tooling.
@@ -29,6 +30,7 @@ We don't just generate boilerplate; we generate **production-ready** foundations
29
30
 
30
31
  - **🔍 Code Quality**: Pre-configured `Eslint` and `Prettier` for consistent coding standards.
31
32
  - **🛡️ Security**: Built-in `Helmet`, `HPP`, `CORS`, and Rate-Limiting middleware.
33
+ - **🚨 Error Handling**: Centralized global error middleware with custom error classes and structured JSON responses. GraphQL uses Apollo's `formatError` hook; REST uses Express error middleware.
32
34
  - **🧪 Testing Strategy**: Integrated `Jest` and `Supertest` setup for Unit and Integration testing.
33
35
  - **🔄 CI/CD Integration**: Pre-configured workflows for **GitHub Actions**, **Jenkins**, and **GitLab CI**.
34
36
  - **⚓ Git Hooks**: `Husky` and `Lint-Staged` to ensure no bad code is ever committed.
@@ -89,6 +91,8 @@ The CLI will guide you through the following steps:
89
91
  The generated project will include:
90
92
 
91
93
  - `src/`: Source code (controllers, routes, services/use-cases).
94
+ - `src/errors/`: Custom error classes — `ApiError`, `NotFoundError`, `BadRequestError`.
95
+ - `src/utils/error.middleware.{ts|js}`: Global Express error handler (logs 500s, returns `{ statusCode, message }`).
92
96
  - `flyway/sql/`: SQL migration scripts (if SQL database selected).
93
97
  - `docker-compose.yml`: Services configuration for DB, Flyway, and Kafka.
94
98
  - `package.json`: Dependencies and scripts (`start`, `dev`, `build`).
@@ -1,185 +1,265 @@
1
1
  # NodeJS Quickstart Generator - Test Cases
2
2
 
3
- This document lists the **160 possible project combinations** supported by the `nodejs-quickstart` CLI. These combinations cover all supported languages, architectures, databases, communication patterns, and caching options.
3
+ This document lists the **240 possible project combinations** supported by the `nodejs-quickstart` CLI. These combinations cover all supported languages, architectures, databases, communication patterns, and caching options.
4
4
 
5
5
  ## Summary
6
6
  - **CI Providers**: `None`, `GitHub Actions`, `Jenkins`, `GitLab CI`
7
- - **MVC Architecture**: 120 Combinations
8
- - **Clean Architecture**: 40 Combinations
7
+ - **MVC Architecture**: 180 Combinations
8
+ - **Clean Architecture**: 60 Combinations
9
9
 
10
- **Total Core Combinations: 160**
10
+ **Total Core Combinations: 240**
11
11
 
12
12
  > **Note on CI/CD**: Each combination can be generated with or without CI/CD (`--ci-provider`), effectively doubling the state space.
13
13
 
14
14
  ---
15
15
 
16
- ## 1. MVC Architecture (120 Cases)
16
+ ## 1. MVC Architecture (180 Cases)
17
17
 
18
18
  | # | Language | Architecture | View Engine | Database | Communication | Caching |
19
19
  | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
20
20
  | 1 | TypeScript | MVC | EJS | None | REST APIs | None |
21
- | 2 | TypeScript | MVC | EJS | None | Kafka | None |
22
- | 3 | TypeScript | MVC | EJS | MySQL | REST APIs | None |
23
- | 4 | TypeScript | MVC | EJS | MySQL | REST APIs | Redis |
24
- | 5 | TypeScript | MVC | EJS | MySQL | REST APIs | Memory Cache |
25
- | 6 | TypeScript | MVC | EJS | MySQL | Kafka | None |
26
- | 7 | TypeScript | MVC | EJS | MySQL | Kafka | Redis |
27
- | 8 | TypeScript | MVC | EJS | MySQL | Kafka | Memory Cache |
28
- | 9 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | None |
29
- | 10 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | Redis |
30
- | 11 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | Memory Cache |
31
- | 12 | TypeScript | MVC | EJS | PostgreSQL | Kafka | None |
32
- | 13 | TypeScript | MVC | EJS | PostgreSQL | Kafka | Redis |
33
- | 14 | TypeScript | MVC | EJS | PostgreSQL | Kafka | Memory Cache |
34
- | 15 | TypeScript | MVC | EJS | MongoDB | REST APIs | None |
35
- | 16 | TypeScript | MVC | EJS | MongoDB | REST APIs | Redis |
36
- | 17 | TypeScript | MVC | EJS | MongoDB | REST APIs | Memory Cache |
37
- | 18 | TypeScript | MVC | EJS | MongoDB | Kafka | None |
38
- | 19 | TypeScript | MVC | EJS | MongoDB | Kafka | Redis |
39
- | 20 | TypeScript | MVC | EJS | MongoDB | Kafka | Memory Cache |
40
- | 21 | TypeScript | MVC | Pug | None | REST APIs | None |
41
- | 22 | TypeScript | MVC | Pug | None | Kafka | None |
42
- | 23 | TypeScript | MVC | Pug | MySQL | REST APIs | None |
43
- | 24 | TypeScript | MVC | Pug | MySQL | REST APIs | Redis |
44
- | 25 | TypeScript | MVC | Pug | MySQL | REST APIs | Memory Cache |
45
- | 26 | TypeScript | MVC | Pug | MySQL | Kafka | None |
46
- | 27 | TypeScript | MVC | Pug | MySQL | Kafka | Redis |
47
- | 28 | TypeScript | MVC | Pug | MySQL | Kafka | Memory Cache |
48
- | 29 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | None |
49
- | 30 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | Redis |
50
- | 31 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | Memory Cache |
51
- | 32 | TypeScript | MVC | Pug | PostgreSQL | Kafka | None |
52
- | 33 | TypeScript | MVC | Pug | PostgreSQL | Kafka | Redis |
53
- | 34 | TypeScript | MVC | Pug | PostgreSQL | Kafka | Memory Cache |
54
- | 35 | TypeScript | MVC | Pug | MongoDB | REST APIs | None |
55
- | 36 | TypeScript | MVC | Pug | MongoDB | REST APIs | Redis |
56
- | 37 | TypeScript | MVC | Pug | MongoDB | REST APIs | Memory Cache |
57
- | 38 | TypeScript | MVC | Pug | MongoDB | Kafka | None |
58
- | 39 | TypeScript | MVC | Pug | MongoDB | Kafka | Redis |
59
- | 40 | TypeScript | MVC | Pug | MongoDB | Kafka | Memory Cache |
60
- | 41 | TypeScript | MVC | None | None | REST APIs | None |
61
- | 42 | TypeScript | MVC | None | None | Kafka | None |
62
- | 43 | TypeScript | MVC | None | MySQL | REST APIs | None |
63
- | 44 | TypeScript | MVC | None | MySQL | REST APIs | Redis |
64
- | 45 | TypeScript | MVC | None | MySQL | REST APIs | Memory Cache |
65
- | 46 | TypeScript | MVC | None | MySQL | Kafka | None |
66
- | 47 | TypeScript | MVC | None | MySQL | Kafka | Redis |
67
- | 48 | TypeScript | MVC | None | MySQL | Kafka | Memory Cache |
68
- | 49 | TypeScript | MVC | None | PostgreSQL | REST APIs | None |
69
- | 50 | TypeScript | MVC | None | PostgreSQL | REST APIs | Redis |
70
- | 51 | TypeScript | MVC | None | PostgreSQL | REST APIs | Memory Cache |
71
- | 52 | TypeScript | MVC | None | PostgreSQL | Kafka | None |
72
- | 53 | TypeScript | MVC | None | PostgreSQL | Kafka | Redis |
73
- | 54 | TypeScript | MVC | None | PostgreSQL | Kafka | Memory Cache |
74
- | 55 | TypeScript | MVC | None | MongoDB | REST APIs | None |
75
- | 56 | TypeScript | MVC | None | MongoDB | REST APIs | Redis |
76
- | 57 | TypeScript | MVC | None | MongoDB | REST APIs | Memory Cache |
77
- | 58 | TypeScript | MVC | None | MongoDB | Kafka | None |
78
- | 59 | TypeScript | MVC | None | MongoDB | Kafka | Redis |
79
- | 60 | TypeScript | MVC | None | MongoDB | Kafka | Memory Cache |
80
- | 61 | JavaScript | MVC | EJS | None | REST APIs | None |
81
- | 62 | JavaScript | MVC | EJS | None | Kafka | None |
82
- | 63 | JavaScript | MVC | EJS | MySQL | REST APIs | None |
83
- | 64 | JavaScript | MVC | EJS | MySQL | REST APIs | Redis |
84
- | 65 | JavaScript | MVC | EJS | MySQL | REST APIs | Memory Cache |
85
- | 66 | JavaScript | MVC | EJS | MySQL | Kafka | None |
86
- | 67 | JavaScript | MVC | EJS | MySQL | Kafka | Redis |
87
- | 68 | JavaScript | MVC | EJS | MySQL | Kafka | Memory Cache |
88
- | 69 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | None |
89
- | 70 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | Redis |
90
- | 71 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | Memory Cache |
91
- | 72 | JavaScript | MVC | EJS | PostgreSQL | Kafka | None |
92
- | 73 | JavaScript | MVC | EJS | PostgreSQL | Kafka | Redis |
93
- | 74 | JavaScript | MVC | EJS | PostgreSQL | Kafka | Memory Cache |
94
- | 75 | JavaScript | MVC | EJS | MongoDB | REST APIs | None |
95
- | 76 | JavaScript | MVC | EJS | MongoDB | REST APIs | Redis |
96
- | 77 | JavaScript | MVC | EJS | MongoDB | REST APIs | Memory Cache |
97
- | 78 | JavaScript | MVC | EJS | MongoDB | Kafka | None |
98
- | 79 | JavaScript | MVC | EJS | MongoDB | Kafka | Redis |
99
- | 80 | JavaScript | MVC | EJS | MongoDB | Kafka | Memory Cache |
100
- | 81 | JavaScript | MVC | Pug | None | REST APIs | None |
101
- | 82 | JavaScript | MVC | Pug | None | Kafka | None |
102
- | 83 | JavaScript | MVC | Pug | MySQL | REST APIs | None |
103
- | 84 | JavaScript | MVC | Pug | MySQL | REST APIs | Redis |
104
- | 85 | JavaScript | MVC | Pug | MySQL | REST APIs | Memory Cache |
105
- | 86 | JavaScript | MVC | Pug | MySQL | Kafka | None |
106
- | 87 | JavaScript | MVC | Pug | MySQL | Kafka | Redis |
107
- | 88 | JavaScript | MVC | Pug | MySQL | Kafka | Memory Cache |
108
- | 89 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | None |
109
- | 90 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | Redis |
110
- | 91 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | Memory Cache |
111
- | 92 | JavaScript | MVC | Pug | PostgreSQL | Kafka | None |
112
- | 93 | JavaScript | MVC | Pug | PostgreSQL | Kafka | Redis |
113
- | 94 | JavaScript | MVC | Pug | PostgreSQL | Kafka | Memory Cache |
114
- | 95 | JavaScript | MVC | Pug | MongoDB | REST APIs | None |
115
- | 96 | JavaScript | MVC | Pug | MongoDB | REST APIs | Redis |
116
- | 97 | JavaScript | MVC | Pug | MongoDB | REST APIs | Memory Cache |
117
- | 98 | JavaScript | MVC | Pug | MongoDB | Kafka | None |
118
- | 99 | JavaScript | MVC | Pug | MongoDB | Kafka | Redis |
119
- | 100 | JavaScript | MVC | Pug | MongoDB | Kafka | Memory Cache |
120
- | 101 | JavaScript | MVC | None | None | REST APIs | None |
121
- | 102 | JavaScript | MVC | None | None | Kafka | None |
122
- | 103 | JavaScript | MVC | None | MySQL | REST APIs | None |
123
- | 104 | JavaScript | MVC | None | MySQL | REST APIs | Redis |
124
- | 105 | JavaScript | MVC | None | MySQL | REST APIs | Memory Cache |
125
- | 106 | JavaScript | MVC | None | MySQL | Kafka | None |
126
- | 107 | JavaScript | MVC | None | MySQL | Kafka | Redis |
127
- | 108 | JavaScript | MVC | None | MySQL | Kafka | Memory Cache |
128
- | 109 | JavaScript | MVC | None | PostgreSQL | REST APIs | None |
129
- | 110 | JavaScript | MVC | None | PostgreSQL | REST APIs | Redis |
130
- | 111 | JavaScript | MVC | None | PostgreSQL | REST APIs | Memory Cache |
131
- | 112 | JavaScript | MVC | None | PostgreSQL | Kafka | None |
132
- | 113 | JavaScript | MVC | None | PostgreSQL | Kafka | Redis |
133
- | 114 | JavaScript | MVC | None | PostgreSQL | Kafka | Memory Cache |
134
- | 115 | JavaScript | MVC | None | MongoDB | REST APIs | None |
135
- | 116 | JavaScript | MVC | None | MongoDB | REST APIs | Redis |
136
- | 117 | JavaScript | MVC | None | MongoDB | REST APIs | Memory Cache |
137
- | 118 | JavaScript | MVC | None | MongoDB | Kafka | None |
138
- | 119 | JavaScript | MVC | None | MongoDB | Kafka | Redis |
139
- | 120 | JavaScript | MVC | None | MongoDB | Kafka | Memory Cache |
21
+ | 2 | TypeScript | MVC | EJS | None | GraphQL | None |
22
+ | 3 | TypeScript | MVC | EJS | None | Kafka | None |
23
+ | 4 | TypeScript | MVC | EJS | MySQL | REST APIs | None |
24
+ | 5 | TypeScript | MVC | EJS | MySQL | REST APIs | Redis |
25
+ | 6 | TypeScript | MVC | EJS | MySQL | REST APIs | Memory Cache |
26
+ | 7 | TypeScript | MVC | EJS | MySQL | GraphQL | None |
27
+ | 8 | TypeScript | MVC | EJS | MySQL | GraphQL | Redis |
28
+ | 9 | TypeScript | MVC | EJS | MySQL | GraphQL | Memory Cache |
29
+ | 10 | TypeScript | MVC | EJS | MySQL | Kafka | None |
30
+ | 11 | TypeScript | MVC | EJS | MySQL | Kafka | Redis |
31
+ | 12 | TypeScript | MVC | EJS | MySQL | Kafka | Memory Cache |
32
+ | 13 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | None |
33
+ | 14 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | Redis |
34
+ | 15 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | Memory Cache |
35
+ | 16 | TypeScript | MVC | EJS | PostgreSQL | GraphQL | None |
36
+ | 17 | TypeScript | MVC | EJS | PostgreSQL | GraphQL | Redis |
37
+ | 18 | TypeScript | MVC | EJS | PostgreSQL | GraphQL | Memory Cache |
38
+ | 19 | TypeScript | MVC | EJS | PostgreSQL | Kafka | None |
39
+ | 20 | TypeScript | MVC | EJS | PostgreSQL | Kafka | Redis |
40
+ | 21 | TypeScript | MVC | EJS | PostgreSQL | Kafka | Memory Cache |
41
+ | 22 | TypeScript | MVC | EJS | MongoDB | REST APIs | None |
42
+ | 23 | TypeScript | MVC | EJS | MongoDB | REST APIs | Redis |
43
+ | 24 | TypeScript | MVC | EJS | MongoDB | REST APIs | Memory Cache |
44
+ | 25 | TypeScript | MVC | EJS | MongoDB | GraphQL | None |
45
+ | 26 | TypeScript | MVC | EJS | MongoDB | GraphQL | Redis |
46
+ | 27 | TypeScript | MVC | EJS | MongoDB | GraphQL | Memory Cache |
47
+ | 28 | TypeScript | MVC | EJS | MongoDB | Kafka | None |
48
+ | 29 | TypeScript | MVC | EJS | MongoDB | Kafka | Redis |
49
+ | 30 | TypeScript | MVC | EJS | MongoDB | Kafka | Memory Cache |
50
+ | 31 | TypeScript | MVC | Pug | None | REST APIs | None |
51
+ | 32 | TypeScript | MVC | Pug | None | GraphQL | None |
52
+ | 33 | TypeScript | MVC | Pug | None | Kafka | None |
53
+ | 34 | TypeScript | MVC | Pug | MySQL | REST APIs | None |
54
+ | 35 | TypeScript | MVC | Pug | MySQL | REST APIs | Redis |
55
+ | 36 | TypeScript | MVC | Pug | MySQL | REST APIs | Memory Cache |
56
+ | 37 | TypeScript | MVC | Pug | MySQL | GraphQL | None |
57
+ | 38 | TypeScript | MVC | Pug | MySQL | GraphQL | Redis |
58
+ | 39 | TypeScript | MVC | Pug | MySQL | GraphQL | Memory Cache |
59
+ | 40 | TypeScript | MVC | Pug | MySQL | Kafka | None |
60
+ | 41 | TypeScript | MVC | Pug | MySQL | Kafka | Redis |
61
+ | 42 | TypeScript | MVC | Pug | MySQL | Kafka | Memory Cache |
62
+ | 43 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | None |
63
+ | 44 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | Redis |
64
+ | 45 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | Memory Cache |
65
+ | 46 | TypeScript | MVC | Pug | PostgreSQL | GraphQL | None |
66
+ | 47 | TypeScript | MVC | Pug | PostgreSQL | GraphQL | Redis |
67
+ | 48 | TypeScript | MVC | Pug | PostgreSQL | GraphQL | Memory Cache |
68
+ | 49 | TypeScript | MVC | Pug | PostgreSQL | Kafka | None |
69
+ | 50 | TypeScript | MVC | Pug | PostgreSQL | Kafka | Redis |
70
+ | 51 | TypeScript | MVC | Pug | PostgreSQL | Kafka | Memory Cache |
71
+ | 52 | TypeScript | MVC | Pug | MongoDB | REST APIs | None |
72
+ | 53 | TypeScript | MVC | Pug | MongoDB | REST APIs | Redis |
73
+ | 54 | TypeScript | MVC | Pug | MongoDB | REST APIs | Memory Cache |
74
+ | 55 | TypeScript | MVC | Pug | MongoDB | GraphQL | None |
75
+ | 56 | TypeScript | MVC | Pug | MongoDB | GraphQL | Redis |
76
+ | 57 | TypeScript | MVC | Pug | MongoDB | GraphQL | Memory Cache |
77
+ | 58 | TypeScript | MVC | Pug | MongoDB | Kafka | None |
78
+ | 59 | TypeScript | MVC | Pug | MongoDB | Kafka | Redis |
79
+ | 60 | TypeScript | MVC | Pug | MongoDB | Kafka | Memory Cache |
80
+ | 61 | TypeScript | MVC | None | None | REST APIs | None |
81
+ | 62 | TypeScript | MVC | None | None | GraphQL | None |
82
+ | 63 | TypeScript | MVC | None | None | Kafka | None |
83
+ | 64 | TypeScript | MVC | None | MySQL | REST APIs | None |
84
+ | 65 | TypeScript | MVC | None | MySQL | REST APIs | Redis |
85
+ | 66 | TypeScript | MVC | None | MySQL | REST APIs | Memory Cache |
86
+ | 67 | TypeScript | MVC | None | MySQL | GraphQL | None |
87
+ | 68 | TypeScript | MVC | None | MySQL | GraphQL | Redis |
88
+ | 69 | TypeScript | MVC | None | MySQL | GraphQL | Memory Cache |
89
+ | 70 | TypeScript | MVC | None | MySQL | Kafka | None |
90
+ | 71 | TypeScript | MVC | None | MySQL | Kafka | Redis |
91
+ | 72 | TypeScript | MVC | None | MySQL | Kafka | Memory Cache |
92
+ | 73 | TypeScript | MVC | None | PostgreSQL | REST APIs | None |
93
+ | 74 | TypeScript | MVC | None | PostgreSQL | REST APIs | Redis |
94
+ | 75 | TypeScript | MVC | None | PostgreSQL | REST APIs | Memory Cache |
95
+ | 76 | TypeScript | MVC | None | PostgreSQL | GraphQL | None |
96
+ | 77 | TypeScript | MVC | None | PostgreSQL | GraphQL | Redis |
97
+ | 78 | TypeScript | MVC | None | PostgreSQL | GraphQL | Memory Cache |
98
+ | 79 | TypeScript | MVC | None | PostgreSQL | Kafka | None |
99
+ | 80 | TypeScript | MVC | None | PostgreSQL | Kafka | Redis |
100
+ | 81 | TypeScript | MVC | None | PostgreSQL | Kafka | Memory Cache |
101
+ | 82 | TypeScript | MVC | None | MongoDB | REST APIs | None |
102
+ | 83 | TypeScript | MVC | None | MongoDB | REST APIs | Redis |
103
+ | 84 | TypeScript | MVC | None | MongoDB | REST APIs | Memory Cache |
104
+ | 85 | TypeScript | MVC | None | MongoDB | GraphQL | None |
105
+ | 86 | TypeScript | MVC | None | MongoDB | GraphQL | Redis |
106
+ | 87 | TypeScript | MVC | None | MongoDB | GraphQL | Memory Cache |
107
+ | 88 | TypeScript | MVC | None | MongoDB | Kafka | None |
108
+ | 89 | TypeScript | MVC | None | MongoDB | Kafka | Redis |
109
+ | 90 | TypeScript | MVC | None | MongoDB | Kafka | Memory Cache |
110
+ | 91 | JavaScript | MVC | EJS | None | REST APIs | None |
111
+ | 92 | JavaScript | MVC | EJS | None | GraphQL | None |
112
+ | 93 | JavaScript | MVC | EJS | None | Kafka | None |
113
+ | 94 | JavaScript | MVC | EJS | MySQL | REST APIs | None |
114
+ | 95 | JavaScript | MVC | EJS | MySQL | REST APIs | Redis |
115
+ | 96 | JavaScript | MVC | EJS | MySQL | REST APIs | Memory Cache |
116
+ | 97 | JavaScript | MVC | EJS | MySQL | GraphQL | None |
117
+ | 98 | JavaScript | MVC | EJS | MySQL | GraphQL | Redis |
118
+ | 99 | JavaScript | MVC | EJS | MySQL | GraphQL | Memory Cache |
119
+ | 100 | JavaScript | MVC | EJS | MySQL | Kafka | None |
120
+ | 101 | JavaScript | MVC | EJS | MySQL | Kafka | Redis |
121
+ | 102 | JavaScript | MVC | EJS | MySQL | Kafka | Memory Cache |
122
+ | 103 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | None |
123
+ | 104 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | Redis |
124
+ | 105 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | Memory Cache |
125
+ | 106 | JavaScript | MVC | EJS | PostgreSQL | GraphQL | None |
126
+ | 107 | JavaScript | MVC | EJS | PostgreSQL | GraphQL | Redis |
127
+ | 108 | JavaScript | MVC | EJS | PostgreSQL | GraphQL | Memory Cache |
128
+ | 109 | JavaScript | MVC | EJS | PostgreSQL | Kafka | None |
129
+ | 110 | JavaScript | MVC | EJS | PostgreSQL | Kafka | Redis |
130
+ | 111 | JavaScript | MVC | EJS | PostgreSQL | Kafka | Memory Cache |
131
+ | 112 | JavaScript | MVC | EJS | MongoDB | REST APIs | None |
132
+ | 113 | JavaScript | MVC | EJS | MongoDB | REST APIs | Redis |
133
+ | 114 | JavaScript | MVC | EJS | MongoDB | REST APIs | Memory Cache |
134
+ | 115 | JavaScript | MVC | EJS | MongoDB | GraphQL | None |
135
+ | 116 | JavaScript | MVC | EJS | MongoDB | GraphQL | Redis |
136
+ | 117 | JavaScript | MVC | EJS | MongoDB | GraphQL | Memory Cache |
137
+ | 118 | JavaScript | MVC | EJS | MongoDB | Kafka | None |
138
+ | 119 | JavaScript | MVC | EJS | MongoDB | Kafka | Redis |
139
+ | 120 | JavaScript | MVC | EJS | MongoDB | Kafka | Memory Cache |
140
+ | 121 | JavaScript | MVC | Pug | None | REST APIs | None |
141
+ | 122 | JavaScript | MVC | Pug | None | GraphQL | None |
142
+ | 123 | JavaScript | MVC | Pug | None | Kafka | None |
143
+ | 124 | JavaScript | MVC | Pug | MySQL | REST APIs | None |
144
+ | 125 | JavaScript | MVC | Pug | MySQL | REST APIs | Redis |
145
+ | 126 | JavaScript | MVC | Pug | MySQL | REST APIs | Memory Cache |
146
+ | 127 | JavaScript | MVC | Pug | MySQL | GraphQL | None |
147
+ | 128 | JavaScript | MVC | Pug | MySQL | GraphQL | Redis |
148
+ | 129 | JavaScript | MVC | Pug | MySQL | GraphQL | Memory Cache |
149
+ | 130 | JavaScript | MVC | Pug | MySQL | Kafka | None |
150
+ | 131 | JavaScript | MVC | Pug | MySQL | Kafka | Redis |
151
+ | 132 | JavaScript | MVC | Pug | MySQL | Kafka | Memory Cache |
152
+ | 133 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | None |
153
+ | 134 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | Redis |
154
+ | 135 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | Memory Cache |
155
+ | 136 | JavaScript | MVC | Pug | PostgreSQL | GraphQL | None |
156
+ | 137 | JavaScript | MVC | Pug | PostgreSQL | GraphQL | Redis |
157
+ | 138 | JavaScript | MVC | Pug | PostgreSQL | GraphQL | Memory Cache |
158
+ | 139 | JavaScript | MVC | Pug | PostgreSQL | Kafka | None |
159
+ | 140 | JavaScript | MVC | Pug | PostgreSQL | Kafka | Redis |
160
+ | 141 | JavaScript | MVC | Pug | PostgreSQL | Kafka | Memory Cache |
161
+ | 142 | JavaScript | MVC | Pug | MongoDB | REST APIs | None |
162
+ | 143 | JavaScript | MVC | Pug | MongoDB | REST APIs | Redis |
163
+ | 144 | JavaScript | MVC | Pug | MongoDB | REST APIs | Memory Cache |
164
+ | 145 | JavaScript | MVC | Pug | MongoDB | GraphQL | None |
165
+ | 146 | JavaScript | MVC | Pug | MongoDB | GraphQL | Redis |
166
+ | 147 | JavaScript | MVC | Pug | MongoDB | GraphQL | Memory Cache |
167
+ | 148 | JavaScript | MVC | Pug | MongoDB | Kafka | None |
168
+ | 149 | JavaScript | MVC | Pug | MongoDB | Kafka | Redis |
169
+ | 150 | JavaScript | MVC | Pug | MongoDB | Kafka | Memory Cache |
170
+ | 151 | JavaScript | MVC | None | None | REST APIs | None |
171
+ | 152 | JavaScript | MVC | None | None | GraphQL | None |
172
+ | 153 | JavaScript | MVC | None | None | Kafka | None |
173
+ | 154 | JavaScript | MVC | None | MySQL | REST APIs | None |
174
+ | 155 | JavaScript | MVC | None | MySQL | REST APIs | Redis |
175
+ | 156 | JavaScript | MVC | None | MySQL | REST APIs | Memory Cache |
176
+ | 157 | JavaScript | MVC | None | MySQL | GraphQL | None |
177
+ | 158 | JavaScript | MVC | None | MySQL | GraphQL | Redis |
178
+ | 159 | JavaScript | MVC | None | MySQL | GraphQL | Memory Cache |
179
+ | 160 | JavaScript | MVC | None | MySQL | Kafka | None |
180
+ | 161 | JavaScript | MVC | None | MySQL | Kafka | Redis |
181
+ | 162 | JavaScript | MVC | None | MySQL | Kafka | Memory Cache |
182
+ | 163 | JavaScript | MVC | None | PostgreSQL | REST APIs | None |
183
+ | 164 | JavaScript | MVC | None | PostgreSQL | REST APIs | Redis |
184
+ | 165 | JavaScript | MVC | None | PostgreSQL | REST APIs | Memory Cache |
185
+ | 166 | JavaScript | MVC | None | PostgreSQL | GraphQL | None |
186
+ | 167 | JavaScript | MVC | None | PostgreSQL | GraphQL | Redis |
187
+ | 168 | JavaScript | MVC | None | PostgreSQL | GraphQL | Memory Cache |
188
+ | 169 | JavaScript | MVC | None | PostgreSQL | Kafka | None |
189
+ | 170 | JavaScript | MVC | None | PostgreSQL | Kafka | Redis |
190
+ | 171 | JavaScript | MVC | None | PostgreSQL | Kafka | Memory Cache |
191
+ | 172 | JavaScript | MVC | None | MongoDB | REST APIs | None |
192
+ | 173 | JavaScript | MVC | None | MongoDB | REST APIs | Redis |
193
+ | 174 | JavaScript | MVC | None | MongoDB | REST APIs | Memory Cache |
194
+ | 175 | JavaScript | MVC | None | MongoDB | GraphQL | None |
195
+ | 176 | JavaScript | MVC | None | MongoDB | GraphQL | Redis |
196
+ | 177 | JavaScript | MVC | None | MongoDB | GraphQL | Memory Cache |
197
+ | 178 | JavaScript | MVC | None | MongoDB | Kafka | None |
198
+ | 179 | JavaScript | MVC | None | MongoDB | Kafka | Redis |
199
+ | 180 | JavaScript | MVC | None | MongoDB | Kafka | Memory Cache |
140
200
 
141
- ## 2. Clean Architecture (40 Cases)
201
+ ## 2. Clean Architecture (60 Cases)
142
202
  *Note: Clean Architecture does not use server-side view engines (EJS/Pug).*
143
203
 
144
204
  | # | Language | Architecture | View Engine | Database | Communication | Caching |
145
205
  | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
146
- | 121 | TypeScript | Clean Architecture | N/A | None | REST APIs | None |
147
- | 122 | TypeScript | Clean Architecture | N/A | None | Kafka | None |
148
- | 123 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | None |
149
- | 124 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | Redis |
150
- | 125 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | Memory Cache |
151
- | 126 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | None |
152
- | 127 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | Redis |
153
- | 128 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | Memory Cache |
154
- | 129 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | None |
155
- | 130 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Redis |
156
- | 131 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Memory Cache |
157
- | 132 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | None |
158
- | 133 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | Redis |
159
- | 134 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | Memory Cache |
160
- | 135 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | None |
161
- | 136 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | Redis |
162
- | 137 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | Memory Cache |
163
- | 138 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | None |
164
- | 139 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | Redis |
165
- | 140 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | Memory Cache |
166
- | 141 | JavaScript | Clean Architecture | N/A | None | REST APIs | None |
167
- | 142 | JavaScript | Clean Architecture | N/A | None | Kafka | None |
168
- | 143 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | None |
169
- | 144 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | Redis |
170
- | 145 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | Memory Cache |
171
- | 146 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | None |
172
- | 147 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | Redis |
173
- | 148 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | Memory Cache |
174
- | 149 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | None |
175
- | 150 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Redis |
176
- | 151 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Memory Cache |
177
- | 152 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | None |
178
- | 153 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | Redis |
179
- | 154 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | Memory Cache |
180
- | 155 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | None |
181
- | 156 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | Redis |
182
- | 157 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | Memory Cache |
183
- | 158 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | None |
184
- | 159 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | Redis |
185
- | 160 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | Memory Cache |
206
+ | 181 | TypeScript | Clean Architecture | N/A | None | REST APIs | None |
207
+ | 182 | TypeScript | Clean Architecture | N/A | None | GraphQL | None |
208
+ | 183 | TypeScript | Clean Architecture | N/A | None | Kafka | None |
209
+ | 184 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | None |
210
+ | 185 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | Redis |
211
+ | 186 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | Memory Cache |
212
+ | 187 | TypeScript | Clean Architecture | N/A | MySQL | GraphQL | None |
213
+ | 188 | TypeScript | Clean Architecture | N/A | MySQL | GraphQL | Redis |
214
+ | 189 | TypeScript | Clean Architecture | N/A | MySQL | GraphQL | Memory Cache |
215
+ | 190 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | None |
216
+ | 191 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | Redis |
217
+ | 192 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | Memory Cache |
218
+ | 193 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | None |
219
+ | 194 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Redis |
220
+ | 195 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Memory Cache |
221
+ | 196 | TypeScript | Clean Architecture | N/A | PostgreSQL | GraphQL | None |
222
+ | 197 | TypeScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Redis |
223
+ | 198 | TypeScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Memory Cache |
224
+ | 199 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | None |
225
+ | 200 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | Redis |
226
+ | 201 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | Memory Cache |
227
+ | 202 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | None |
228
+ | 203 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | Redis |
229
+ | 204 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | Memory Cache |
230
+ | 205 | TypeScript | Clean Architecture | N/A | MongoDB | GraphQL | None |
231
+ | 206 | TypeScript | Clean Architecture | N/A | MongoDB | GraphQL | Redis |
232
+ | 207 | TypeScript | Clean Architecture | N/A | MongoDB | GraphQL | Memory Cache |
233
+ | 208 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | None |
234
+ | 209 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | Redis |
235
+ | 210 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | Memory Cache |
236
+ | 211 | JavaScript | Clean Architecture | N/A | None | REST APIs | None |
237
+ | 212 | JavaScript | Clean Architecture | N/A | None | GraphQL | None |
238
+ | 213 | JavaScript | Clean Architecture | N/A | None | Kafka | None |
239
+ | 214 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | None |
240
+ | 215 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | Redis |
241
+ | 216 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | Memory Cache |
242
+ | 217 | JavaScript | Clean Architecture | N/A | MySQL | GraphQL | None |
243
+ | 218 | JavaScript | Clean Architecture | N/A | MySQL | GraphQL | Redis |
244
+ | 219 | JavaScript | Clean Architecture | N/A | MySQL | GraphQL | Memory Cache |
245
+ | 220 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | None |
246
+ | 221 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | Redis |
247
+ | 222 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | Memory Cache |
248
+ | 223 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | None |
249
+ | 224 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Redis |
250
+ | 225 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Memory Cache |
251
+ | 226 | JavaScript | Clean Architecture | N/A | PostgreSQL | GraphQL | None |
252
+ | 227 | JavaScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Redis |
253
+ | 228 | JavaScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Memory Cache |
254
+ | 229 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | None |
255
+ | 230 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | Redis |
256
+ | 231 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | Memory Cache |
257
+ | 232 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | None |
258
+ | 233 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | Redis |
259
+ | 234 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | Memory Cache |
260
+ | 235 | JavaScript | Clean Architecture | N/A | MongoDB | GraphQL | None |
261
+ | 236 | JavaScript | Clean Architecture | N/A | MongoDB | GraphQL | Redis |
262
+ | 237 | JavaScript | Clean Architecture | N/A | MongoDB | GraphQL | Memory Cache |
263
+ | 238 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | None |
264
+ | 239 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | Redis |
265
+ | 240 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | Memory Cache |