Connect, Share, and Engage in Real-Time
Powered by cutting-edge technologies:
Visit the π LINK π
| Profile Page | Home Page |
|---|---|
![]() |
![]() |
- Overview
- Key Features
- Tech Stack
- Architecture
- Getting Started
- Core Functionality
- API Endpoints
- Deployment
- Performance
- Contributing
- License
- Support
PINGUP is a full-featured social media platform that provides:
- π₯ Social Networking: Connect with friends and discover new people
- π¬ Real-time Messaging: Instant chat with typing indicators
- π± Stories Feature: Share ephemeral content that disappears in 24 hours
- πΈ Media Sharing: Upload and share images with optimized delivery
- π Discoverability: Find and connect with users based on interests
- β‘ Background Processing: Efficient handling of async tasks with Inngest
Built with the MERN stack and designed for modern social interactions.
- Clerk Integration: Secure authentication with social login options
- JWT Tokens: Stateless authentication for API requests
- Protected Routes: Role-based access control
- Session Management: Secure user sessions
- Instant Messaging: One-on-one and group chats
- Typing Indicators: Real-time feedback when users are typing
- Message Status: Read receipts and delivery confirmations
- Online Presence: User online/offline status
- Post System: Share text and image content with followers
- Stories: 24-hour ephemeral content with viewer tracking
- Follow/Unfollow: Build your social network
- Friend Requests: Manage connections with approval system
- News Feed: Personalized content based on connections
- Notifications: Real-time alerts for social interactions
- ImageKit Integration: Optimized image storage and delivery
- File Uploads: Support for multiple image formats
- Image Optimization: Automatic resizing and compression
- CDN Delivery: Fast global content delivery
- Inngest Integration: Efficient background job processing
- Scheduled Tasks: Automated cleanup and maintenance
- Email Notifications: Welcome emails and alerts
- Async Operations: Non-blocking background processing
- React 18+ - Modern React with hooks and context
- Axios - HTTP client for API communication
- Redux Toolkit - State management (store.js)
- React Router - Client-side navigation
- Custom Hooks - Feature-specific logic encapsulation
- Node.js - JavaScript runtime environment
- Express.js - Web application framework
- MongoDB - NoSQL database for flexible data storage
- Mongoose - MongoDB object modeling
- Socket.io - Real-time bidirectional communication
- Inngest - Background job processing
- ImageKit - Image optimization and CDN
- Nodemailer - Email notification system
- JWT - Authentication tokens
- Vercel - Frontend deployment platform
- Render/Railway - Backend deployment
- MongoDB Atlas - Cloud database service
- ImageKit CDN - Media content delivery
PingUp/
βββ client/ # React Frontend
β βββ src/
β β βββ api/ # API configuration
β β β βββ axios.js # Axios instance
β β βββ app/ # Redux store
β β β βββ store.js # State management
β β βββ assets/ # Static assets
β β βββ components/ # Reusable UI components
β β β βββ Loading.jsx
β β β βββ MenuItems.jsx
β β β βββ Notification.jsx
β β β βββ PostCard.jsx
β β β βββ ProfileModal.jsx
β β β βββ RecentMessages.jsx
β β β βββ Sidebar.jsx
β β β βββ StoriesBar.jsx
β β β βββ StoryModal.jsx
β β β βββ StoryViewer.jsx
β β β βββ UserCard.jsx
β β β βββ UserProfileInfo.jsx
β β βββ features/ # Feature-based organization
β β β βββ connections/
β β β βββ messages/
β β β βββ user/
β β βββ pages/ # Route components
β β β βββ ChatBox.jsx
β β β βββ Connections.jsx
β β β βββ CreatePost.jsx
β β β βββ Discover.jsx
β β β βββ Feed.jsx
β β β βββ Layout.jsx
β β β βββ Login.jsx
β β β βββ Messages.jsx
β β β βββ Profile.jsx
β β βββ ... # Config files
β
βββ server/ # Express Backend
β βββ configs/ # Configuration files
β β βββ db.js # Database configuration
β β βββ imageKit.js # ImageKit configuration
β β βββ multer.js # File upload configuration
β β βββ nodeMailer.js # Email configuration
β βββ controllers/ # Business logic
β β βββ messageController.js
β β βββ postController.js
β β βββ storyController.js
β β βββ userController.js
β βββ inngest/ # Background jobs
β β βββ index.js
β βββ middlewares/ # Custom middlewares
β β βββ auth.js
β βββ models/ # Database models
β β βββ Connection.js
β β βββ Message.js
β β βββ Post.js
β β βββ Story.js
β β βββ User.js
β βββ routes/ # API routes
β β βββ messageRoutes.js
β β βββ postRoutes.js
β β βββ storyRoutes.js
β β βββ userRoutes.js
β βββ server.js # Server entry point- Node.js (v18 or higher)
- npm (v8 or higher)
- MongoDB Atlas account or local MongoDB
- ImageKit account
- Clerk account
- Inngest account
- Clone the repository:
git clone https://github.com/elyse502/PingUp.git
cd PingUp- Install client dependencies:
cd client && npm install- Install server dependencies:
cd ../server && npm installClient (.env)
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
VITE_API_BASE_URL=http://localhost:5000
VITE_IMAGEKIT_URL_ENDPOINT=your-imagekit-endpoint
VITE_IMAGEKIT_PUBLIC_KEY=your-imagekit-public-keyServer (.env)
MONGODB_URI=your-mongodb-connection-string
CLERK_SECRET_KEY=sk_test_...
IMAGEKIT_PRIVATE_KEY=your-imagekit-private-key
INNGEST_EVENT_KEY=your-inngest-event-key
INNGEST_SIGNING_KEY=your-inngest-signing-key
EMAIL_SERVICE=your-email-service
EMAIL_USER=your-email-username
EMAIL_PASS=your-email-password
JWT_SECRET=your-jwt-secret
PORT=5000- Start the development servers:
# Terminal 1 - Start backend
cd server && npm run dev
# Terminal 2 - Start frontend
cd client && npm run dev- User registration and authentication via Clerk
- Profile customization with avatars and bios
- Friend request system with approval workflow
- User search and discovery features
- Real-time chat with Socket.io
- Conversation history persistence
- Typing indicators and read receipts
- Message notifications
- Create posts with text and images
- Like, comment, and share functionality
- News feed algorithm based on connections
- Hashtag and mention support
- Upload images/videos as stories
- 24-hour expiration with auto-cleanup
- Viewer tracking and analytics
- Story reactions and replies
- Email notifications for new messages
- Story expiration cleanup
- Periodic data backups
- Analytics and reporting generation
| Method | Endpoint | Description |
|---|---|---|
| POST | /verify |
Verify Clerk session |
| GET | /profile |
Get user profile |
| PUT | /profile |
Update user profile |
| Method | Endpoint | Description |
|---|---|---|
| GET | /search |
Search for users |
| POST | /follow |
Follow a user |
| DELETE | /unfollow |
Unfollow a user |
| GET | /connections |
Get user connections |
| Method | Endpoint | Description |
|---|---|---|
| GET | /feed |
Get news feed |
| POST | /create |
Create a new post |
| PUT | /like |
Like a post |
| POST | /comment |
Add comment to post |
| Method | Endpoint | Description |
|---|---|---|
| GET | /conversations |
Get user conversations |
| GET | /conversation/:id |
Get specific conversation |
| POST | /send |
Send a message |
| Method | Endpoint | Description |
|---|---|---|
| POST | /upload |
Upload a story |
| GET | /user/:id |
Get user stories |
| GET | /feed |
Get stories from connections |
Deploy with environment variables configured for:
- MongoDB Atlas connection
- Clerk authentication
- ImageKit integration
- Inngest background processing
# Recommended: MongoDB Atlas Cloud
https://www.mongodb.com/atlas- Socket.io for real-time features
- Inngest for background jobs
- ImageKit for media optimization
- β‘ Lighthouse Score: 90+
- π¦ Optimized Bundle Size with code splitting
- π Fast image loading with ImageKit CDN
- π± Mobile-first responsive design
- π Secure authentication with Clerk
- β±οΈ Efficient background processing with Inngest
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
For support, email elyseniyibizi502@gmail.com or create an issue in the GitHub repository.
For any questions or support, please contact:
- NIYIBIZI ElysΓ©eπ¨πΏβπ» | Github | Linkedin | Twitter.
- Email: elyseniyibizi502@gmail.com
PINGUP - Where connections happen in real time! π
Built with β€οΈ using the MERN stack and modern web technologies.
Made with β€οΈ by ElysΓ©e NIYIBIZI

