OfflineOrbit is a robust, LAN-only communication platform designed to work entirely without an internet connection. It enables secure text messaging, audio/video calling, and file sharing within a local network (e.g., College Campus, Office, or Home Wi-Fi).
- Zero Internet Dependency: Runs 100% on localhost or LAN IP.
- Real-time Chat: Instant messaging via Socket.IO.
- Audio & Video Calls: P2P communication using WebRTC.
- File Sharing: Upload profile pictures and files locally (stored on server disk).
- Offline Avatars: Auto-generated initials for user avatars (no external CDN).
- Admin Portal: specialized dashboard to manage users and toggle system availability (Kill Switch).
- User Presence: Real-time Online/Offline status indicators.
- Frontend: React (Vite), TailwindCSS, Lucide Icons.
- Backend: Node.js, Express.js.
- Database: MongoDB (Local Instance).
- Real-time: Socket.IO.
- Media: Simple-Peer (WebRTC), Multer (Local File Uploads).
Before running the project, ensure you have the following installed locally:
- Node.js (v18+ recommended)
- MongoDB Community Server (Must be running locally on port
27017)
git clone https://github.com/sumithkumar123/Offline-Orbit.git
cd Offline-Orbitcd server
npm installConfiguration (.env):
Create a .env file in the server folder with the following details:
PORT=5000
MONGODB_URI=mongodb://127.0.0.1:27017/offline_orbit
JWT_SECRET=your_super_secret_key_here(Note: ensure MONGODB_URI points to 127.0.0.1, not localhost if node versions vary).
cd ../client
npm installConfiguration (.env):
Create a .env file in the client folder:
VITE_API_URL=http://localhost:5000(Replace localhost with your machine's LAN IP address if testing from other devices on the network, e.g., http://192.168.1.5:5000)
You need to run both the server and client concurrently.
1. Start the Server:
# In terminal 1 (server directory)
npm run devChecking database connection... Connected to mongodb://127.0.0.1:27017/offline_orbit
2. Start the Client:
# In terminal 2 (client directory)
npm run devApp running at http://localhost:5173
To access the app from a phone or another computer on the same Wi-Fi:
- Find your PC's IP address (
ipconfigon Windows orifconfigon Mac/Linux). - Update
client/.envVITE_API_URLtohttp://YOUR_PC_IP:5000. - Access the frontend via
http://YOUR_PC_IP:5173. - Note: Audio/Video permissions might require HTTPS or specific browser flags on mobile.
- Database: Uses local MongoDB, so data stays on your machine.
- Images: Profile pictures are uploaded to
server/public/uploadsand served statically. - Icons: Using
lucide-react(bundled JS), no external font CDNs. - Avatars: Custom component generates SVG avatars locally based on user initials.
Feel free to fork and submit PRs. Ensure all new features maintain the "Zero Internet" usage policy.