Real-time social collaboration platform for developers. Connect, share posts, build projects, discover collaborators, and get intelligent recommendations.
- 🔐 Auth: Email + JWT, OAuth (Google/GitHub)
- 📱 Social: Posts, projects, likes, comments, follow, tags, notifications
- 🤖 Recommendations: Neo4j-powered social graph, personalized post/project/collaborator suggestions
- 📡 Real-Time: WebSocket for live feed, chat, notifications
- 🗂️ Data: MongoDB (primary), Redis (caching), Neo4j (graph), Supabase (media)
- 📤 Media: Upload & store files via Supabase
| Layer | Technology |
|---|---|
| Frontend | React |
| Backend | Spring Boot (Java) |
| Primary Database | MongoDB (Posts, Users, Projects, Comments) |
| Cache Layer | Redis (Home feed, frequently accessed data) |
| Graph Database | Neo4j (Social graph & recommendation engine) |
| Object Storage | Supabase Storage (Media files & assets) |
| Real-Time Communication | WebSocket |
| Authentication | JWT + OAuth 2.0 (Google, GitHub) |
| API Design | RESTful + WebSocket endpoints |
| Notifications | Event-driven notification service |
Authentication: JWT tokens + OAuth 2.0 (Google, GitHub), email login
Dual API Layer:
- HTTP/REST for CRUD operations
- WebSocket for real-time updates, chat, notifications
Multi-Database:
- MongoDB: User profiles, posts, projects, comments, notifications, chat history
- Redis: Home feed cache (5-10 min), user profiles, recommendations cache (30 min)
- Neo4j: Social graph (FOLLOWS, LIKED, COMMENTED_ON, INTERESTED_IN, TAGGED_WITH relationships); powers post/collaborator recommendations
- Supabase: Media storage (profile pics, post images, project assets)
Real-Time Events: New posts, likes, comments, follows, messages broadcast via WebSocket
| Flow | Details |
|---|---|
| Create Post | HTTP POST → MongoDB → Neo4j sync → Redis invalidate → WebSocket broadcast → Notifications |
| View Home Feed | Redis cache hit/miss → MongoDB + Neo4j query → Cache results → Live WebSocket updates |
| Recommendations | Neo4j traversal (similar users, liked posts, interests) → Ranked results |
| Upload Media | Supabase Storage → URL saved to MongoDB → Redis cache invalidate |
| Real-Time Chat | WebSocket → MongoDB save → Broadcast to recipient → Notification |
Prerequisites: Java 11+, MongoDB, Redis, Neo4j, Supabase, OAuth credentials (Google/GitHub)
Steps:
- Copy config:
cp src/main/resources/application.yml.example src/main/resources/application.yml - Add credentials to
application.yml(MongoDB, Redis, Neo4j, Supabase, OAuth) - Install:
mvn clean install - Run:
mvn spring-boot:run - Access:
http://localhost:8080| WebSocket:ws://localhost:8080/ws| Docs:http://localhost:8080/swagger-ui.html
POST /api/auth/register- Register with emailPOST /api/auth/login- Login with email/passwordPOST /api/auth/oauth/google- OAuth login (Google)POST /api/auth/oauth/github- OAuth login (GitHub)
GET /api/posts- Get all postsGET /api/feed- Get personalized feed (with cache)POST /api/posts- Create postPUT /api/posts/{id}- Update postDELETE /api/posts/{id}- Delete postPOST /api/posts/{id}/like- Like a postPOST /api/posts/{id}/comment- Comment on post
GET /api/users/{id}- Get user profilePUT /api/users/{id}- Update user profilePOST /api/users/{id}/follow- Follow userGET /api/users/recommendations- Get suggested users
GET /api/projects- Get all projectsPOST /api/projects- Create projectPUT /api/projects/{id}- Update projectDELETE /api/projects/{id}- Delete project
GET /api/notifications- Get user notificationsPUT /api/notifications/{id}/read- Mark as readDELETE /api/notifications/{id}- Delete notification
WS /ws- Connect to WebSocket- Events:
message,notification,post_update,user_update