Skip to content

Latest commit

Β 

History

70 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ PingUp β€” Real-Time Social Networking Platform

Frontend Backend Database Realtime Auth Status

  • Built a full-stack social networking platform simulating real-world communication systems
  • Designed and implemented user discovery, social connections, and content sharing workflows
  • Developed real-time messaging with live notifications using Server-Sent Events (SSE)
  • Focused on system design principles including layered architecture and state synchronization
  • Implemented event-driven workflows for background processing and automation
  • Engineered the application with a production-oriented mindset, handling real-world edge cases and data consistency

🌐 Live Demo

πŸ‘‰ https://aarsh-pingup.vercel.app/


✨ Why This Project Stands Out

  • Implements real-time messaging using Server-Sent Events (SSE)
  • Handles social graph logic (follow, connections, pending requests)
  • Demonstrates full-stack ownership (UI β†’ API β†’ DB β†’ real-time layer)
  • Integrates event-driven workflows (Inngest) for automation
  • Solves real-world issues like:
    • Auth ↔ DB sync
    • State consistency across features
    • Async updates & notifications

🧠 Core Features

πŸ” Authentication & User Sync

  • Secure authentication via Clerk
  • Automatic user sync between Clerk and MongoDB
  • Protected routes and session handling

πŸ‘₯ Social Graph System

  • Follow / Unfollow users
  • Send and accept connection requests
  • Manage followers, following, and connections
  • Real-time UI updates after actions

🏠 Feed System

  • Personalized feed from connected users
  • Create posts (text + images)
  • Like / unlike functionality
  • Optimized media handling via ImageKit

πŸ” Discover Users

  • Search users by name, email, or username
  • Expand network dynamically

πŸ’¬ Real-Time Messaging (Key Feature)

  • One-to-one chat system
  • Text and image messaging
  • Real-time updates using SSE (no polling)
  • Auto-scroll and message sync

πŸ”” Notification System

  • Live toast notifications for incoming messages
  • Smart detection of active chat vs background notifications

βš™οΈ Automation & Background Jobs

  • Inngest-powered workflows:
    • User lifecycle sync
    • Story expiry
    • Email reminders
  • Async processing for scalable operations

πŸ“Έ Screenshots

A quick walkthrough of the core user experience and features of the platform:


πŸ” Authentication (Login Page)

Login Page

Secure authentication powered by Clerk with protected routes and session handling.


🏠 Feed (Social Timeline)

Feed Page

Central feed displaying posts from connected users with support for media and interactions.


πŸ‘€ User Profile

Profile Page

Personalized profile with posts, connections, and user information.


πŸ’¬ Real-Time Chat

Chat Page

Real-time messaging powered by SSE with instant delivery and notifications.


πŸ‘₯ Connections Management

Connections Page

Manage followers, following, and connection requests with real-time updates.


πŸ” Discover People

Discover Page

Explore and connect with new users through dynamic search and discovery.


πŸ› οΈ Tech Stack

Frontend

  • React 19
  • Vite
  • Tailwind CSS
  • React Router
  • Redux Toolkit
  • Axios
  • React Hot Toast
  • Lucide Icons

Backend

  • Node.js + Express
  • MongoDB + Mongoose
  • Clerk Authentication
  • Inngest (event-driven workflows)
  • ImageKit (media handling)
  • Multer
  • Nodemailer

πŸ—οΈ System Architecture

PingUp follows a modular, layered architecture:

Client (React + Redux)
↓
API Layer (Axios + Auth)
↓
Express Routes
↓
Controllers (Business Logic)
↓
MongoDB (User / Post / Message / Connection)
↓
Real-Time Layer (SSE)
↓
Async Jobs (Inngest)


🚧 Future Improvements

  • Upgrade real-time communication from SSE β†’ WebSockets for full duplex messaging and scalability
  • Implement pagination / infinite scroll for feed, messages, and connections
  • Add push notifications (browser + mobile support)
  • Introduce message delivery status (sent, delivered, seen)
  • Improve caching strategy (Redis) for feed and user data
  • Implement role-based moderation system (report, block, restrict users)
  • Add image optimization & lazy loading for better performance

⚑ Challenges & Learnings

πŸ”„ Real-Time Messaging Synchronization

Handling real-time updates using Server-Sent Events (SSE) required careful management of active connections and UI state. Ensuring that messages update instantly without duplication or stale state was a key challenge.


πŸ” Authentication vs Database Sync

One major challenge was maintaining consistency between Clerk authentication and MongoDB user records. Issues like missing users after database resets highlighted the importance of syncing external auth providers with internal data models.


🧠 State Management Complexity

Managing global state across features like feed, chat, and connections using Redux required careful structuring. Handling edge cases (e.g., empty states, async updates) improved understanding of real-world state flow.


πŸ”— Social Graph Logic

Implementing follow, connections, and pending requests required designing a consistent relationship model. Ensuring correct updates across followers, following, and connections was non-trivial.


πŸ“‘ Conditional Notifications

Building a smart notification system that detects whether a user is actively in a chat or not required route-based logic and real-time event handling.


πŸ› Debugging Real-World Issues

Several bugs (e.g., route mismatches, ID comparisons, missing data after DB reset) reinforced the importance of:

  • Proper data validation
  • Defensive coding
  • Debugging with logs and network inspection

πŸ“¦ Project Structure

PingUp/
β”œβ”€β”€ client/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ features/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   └── App.jsx
β”‚
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ controllers/
β”‚   β”œβ”€β”€ models/
β”‚   β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ middleware/
β”‚   β”œβ”€β”€ inngest/
β”‚   └── server.js

Releases

Packages

Contributors

Languages