This project serves as a basic blog application backend, designed to implement a microservice architecture with various communication design patterns.
- Auth (REST)
- User (REST)
- Gateway (REST)
- Logger (Message Queue)
- Avatar Generator (Message Queue)
- Notification (Pub-Sub)
- Data Retriever (GraphQL)
- Post (REST)
- Admin (RPC)
- Login
- Verify user information
- Return JWT token
- Forgot Password
- Send verification OTP to email
- Validate OTP and update password
- Signup
- Connects to database (SQL)
- Verify user email
- Store user information
- Send user ID to Avatar Generator service queue
- Validate client JWT
- Route request to appropriate service
- Generate a custom avatar based on the first letters of the user's first and last names.
- Upload generated avatar to AWS S3
- Update user record with avatar URL
- Save logs to database (MongoDB)
- Push Notification
- SMS
- Handles the query of all data with GraphQL
- CRUD operations on blog posts
- CRUD operations on blog comments
- Clap blog post
- (Description needed)
To run the gateway locally, update the base URLs of the services in the conf.yml file, e.g., http://auth-service -> http://localhost
Run the following command:
docker-compose build && docker-compose up