This project is a basic blog application backend, my attempt at implementing a microservice application with different communication design patterns
- Auth (REST)
- User (REST)
- Gateway (REST)
- Logger (Message Queue)
- Avater generator (Message Queue)
- Notification (Pub-Sub)
- Data Retriever (GraphQL)
- Post (REST)
- Admin (RPC)
- Login
- verify user info
- return jwt token
- Forgot Password
- send verification OTP to mail
- validate otp and update password
- Signup
- connects to database (sql)
- verify user email
- store user information
- send user id to avater-generator service queue
- Validate client jwt
- Routes request to appropriate service
- Generate a custom avater based on first letters of user first and last names.
- Upload generated avater to AWS S3
- Update user record with avater url
- save logs to datebase (mongo)
- Push Notification
- SMS
- Handles the query of all data with GraphQL
- CRUD ops on blog posts
- CRUD ops on blog comments
- Clap blog post
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
docker-compose build && docker-compose up