Summary video : https://www.youtube.com/watch?v=Ba7ENNN3b3E
### HLD
+-------------------------+
| User Interface |
| - Web UI |
+-------------------------+
|
V
+--------------------------+ +--------------------------+
| Authentication Service |<------> | User Management |
| - Login | | - Register |
| - JWT Token Generation | | - Profile |
+--------------------------+ +--------------------------+
| |
V V
+------------------------------+ +------------------------------+
| Topic Management | | Post Management |
| - Create/Read/Update/Delete | | - Create/Read/Update/Delete |
+------------------------------+ +------------------------------+
| |
V V
+--------------------------+ +-------------------------+
| Subscription Service | | Comment Management |
| - Subscribe/Unsubscribe | | - Add/Edit/Delete |
+--------------------------+ +-------------------------+
| |
V V
+--------------------------+ +----------------------------+
| Search Topic Service | | Voting Service |
| | | Upvote/Downvote Posts |
+--------------------------+ +----------------------------+
+ ------------------------------+ Database +------------------------------+
+-------------------------+ +-------------------------+
| MySQL | | MongoDB (Comments) |
+-------------------------+ +-------------------------+
Supports functionality for
- User authentication & authorization via spring security using with JWT tokens.
- Supports CRUD operation regarding creation of Topics.
- Supports CRUD operation regarding creation of posts inside topics.
- Topics, multiple posts under each topic
- User - topic subscription
- Comments under posts stored in MongoDB.
- Votes for each posts.
- Search functionality for topics.
- Collection of APIs through Postman is found in file bloApp.postman_collection.json(ready to import)
- Endpoints documented via OpenAPI/Swagger-UI. http://localhost:8080/swagger-ui/index.html
- The schema for the same can be found in file
schema.sql
in the root directory. - For running it locally, setup.md can be used to download the required additional applications.
- Comment Management: The Comment Management service remains as is, but it now interacts with MongoDB instead of MySQL.