This project is a Social Media System designed with Microservice Architecture, developed using Spring Cloud and Angular.
In this project, I developed an advanced social media system using a microservices architecture. Here are the key components and technologies used in this project:
- Keycloak: Used as the authentication server to manage user identities and access. Security is ensured using JWT tokens. A custom login screen was designed for Keycloak.
- OpenLDAP: Configured as a user provider for Keycloak. LDAP settings were adjusted to fit the project requirements.
- Vault: Used to securely manage sensitive information, such as LDAP admin user passwords.
- Keycloak acts as the Auth Server, while other microservices function as Resource Servers.
- Docker: Custom Dockerfile files were created for each service, and the project is deployed using Docker Compose.
- Spring Cloud: The project was developed as a Spring Cloud project, structured under a root project with multiple sub-modules.
- Spring Config Server: Used to manage configuration files from a central service.
- Spring Eureka Server: Provided service discovery and registration integration for microservices.
- Spring Cloud Gateway: Used as a frontend gateway to route requests to other services.
- CQRS: Designed RESTful APIs by separating command and query responsibilities.
- User Service: Designed as a user management service interacting with LDAP and accessible via RESTful API.
- Profile and Post Services: Worked with Cassandra database. The Post Service simplified endpoint management by handling API requests with GraphQL.
- Like, Comment, and Follow Services: Managed relationship data effectively using GraphDB and reduced query complexity.
- Inter-Service Communication: Used gRPC and RESTful protocols for data exchange between services.
- Zipkin Server: Performed logging and tracing to monitor inter-service communication and debug issues.
- Angular: An interactive user interface was developed for the project.
This project integrates modern technologies and tools to create a robust and scalable social media system, effectively managing data and service orchestration.
- Easy Registration and Login: Users can access the app through straightforward registration and login options.
- Customizable User Profile: Users can personalize their profile information, photos, and settings according to their preferences.
- Follow Feature: Users can follow other users they are interested in.
- User Search: Users can search for and find other users by name and username.
- Content Sharing: Users can share updates and thoughts through text and photo posts.
- Likes and Comments: Users can like and comment on other users' posts, allowing for interaction.
- View Posts: Users can view, like, and comment on posts from users they follow.
- View Followers and Following: Users can see who follows them and who they are following.
- App Settings: Users can personalize various app settings (privacy, notifications, etc.) to optimize their experience.
- Use this command to start the server in the project directory.
run.sh
Navigate to http://localhost:4200/
to access the web UI.
To ensure your project runs locally, add keycloak to your localhost DNS settings.






