LinkSphere is a modern, scalable social networking platform built with a microservices architecture. It enables users to connect, share content, and communicate in real-time.
In this platform, We don't silent infulencers who documents war crimes in Gaza, we don't support gendering and hate speeches. Here We obbey Islamic rules.
- User Profiles: Register, manage your profile, and control your privacy settings.
- Rich Post Creation: Create text, image, and video posts with customizable visibility.
- Real-Time Interactions: Like, comment, and share posts. Receive instant notifications.
- Connect with Others: Send friend requests, build a follower base, and discover new people.
- Powerful Search: Find users and content quickly and efficiently.
- Scalable by Design: Built on a microservices architecture with event-driven communication for high performance and reliability.
LinkSphere is built as a collection of loosely coupled microservices that communicate synchronously via REST APIs and asynchronously via message brokers (RabbitMQ) for event-driven workflows.
| Service | Responsibility | Tech Stack |
|---|---|---|
| API Gateway | Single entry point, routing, rate limiting | Node.js, Express |
| Authentication Service | User login, JWT issuance & validation | Node.js, Express, JWT |
| User Service | User registration and account CRUD | Node.js, Express, PostgreSQL |
| Profile Service | Managing user profile data and privacy | Node.js, Express, PostgreSQL |
| Post Service | Creation, editing, deletion of posts | Node.js, Express, MongoDB |
| Feed Service | Generating and serving user-specific feeds | Node.js, Express, Redis |
| Notification Service | Sending real-time notifications | Node.js, Socket.IO, Redis |
| Friend Service | Managing friend requests & follower relationships | Node.js, Express, Neo4j |
| Search Service | Indexing and searching for users and posts | Elasticsearch |
| Media Service | Handling uploads and storage of images/videos | Node.js, Express,S3/MinIO |
- Synchronous (HTTP/REST): Used for direct requests like login, post creation, and profile updates.
- Asynchronous (Events): Used for decoupled actions like generating feeds, sending notifications, and updating search indexes. For example, when a user creates a post, the Post service emits a
PostCreatedevent, which the Feed and Notification services consume.
- Docker & Docker Compose
- Node.js (v18+)
- Go (v1.2)
The easiest way to run Nexus locally is using our docker-compose setup, which will spin up all necessary services and dependencies.
-
Clone the repository
git clone https://github.com/Rehab-M-Esmail/LinkSphere.git cd microservices -
Set up environment variables
cd any service # Edit .env with your desired configuration (e.g., secrets, API keys)
-
Start the application
cd .. docker-compose up -dThis command will build and start all microservices, databases, and message queues.
-
Access the application The API Gateway should be running at
http://localhost:8080. Individual service endpoints and health checks are detailed in the tests/postman-collection file
Please see the Contributing Guide for detailed instructions on setting up each service in a development environment.
Once the application is running, you can access the interactive API documentation:
- Postman Collection: A full Postman collection is available in the
/tests/postman-collectionfolder for testing all endpoints.
We love your input! We want to make contributing to Nexus as easy and transparent as possible.
Please read our Contributing Guide for details on our code of conduct, the process for submitting pull requests, and how to set up your development environment.
- Fork the repo and create your branch from
main. - Follow the service-specific setup guides in the
/docsfolder. - Make your changes.
- Write tests and ensure all existing tests pass (
docker-compose run tests). - Submit a pull request, linking it to any relevant issues.