A modern, anonymous peer-to-peer chat application with iOS-style design and native iOS app support.
- Anonymous Messaging: No registration required, completely anonymous
- Ephemeral Rooms: Rooms expire after 5 minutes of inactivity
- Real-time Communication: WebSocket-based instant messaging
- Media Sharing: Share photos, videos, audio, and files
- iOS-Style UI: Beautiful iOS-inspired design with dark mode
- Native iOS App: WKWebView-based iOS app for device testing
- P2P Architecture: No data stored on servers, direct peer communication
- Express.js server with WebSocket support
- Room-based chat system with automatic cleanup
- Rate limiting and security features
- File sharing through WebSocket messages
- CORS enabled for cross-origin requests
- React 19 with modern hooks
- Vite for fast development and building
- iOS-style CSS with system colors and typography
- WebSocket client for real-time communication
- Media capture and file upload support
- Native iOS wrapper for the web app
- WKWebView with JavaScript bridge
- Camera/microphone permissions handling
- iOS safe area support
- App Store ready configuration
The app features a beautiful iOS-style interface with:
- Dark mode design with iOS system colors
- Smooth animations and transitions
- Haptic feedback simulation
- iOS typography and spacing
- Safe area handling for modern devices
- Node.js 18+ and npm
- Xcode 14+ (for iOS development)
- iOS 15+ device or simulator
-
Clone the repository:
git clone <repository-url> cd MobileMessenger
-
Install dependencies:
npm install
-
Start the development servers:
npm run dev
This starts both the backend (port 5000) and frontend (port 3000).
-
Open in browser: Navigate to
http://localhost:3000
-
Open the Xcode project:
open ios/Silento.xcodeproj
-
Configure signing:
- Select your Apple Developer Team
- Ensure bundle identifier is unique
-
Run on device:
- Connect your iOS device
- Build and run (Cmd+R)
See ios/README.md for detailed iOS setup instructions.
- Click "Create Room"
- Share the 6-character room code with others
- Start chatting when others join
- Click "Join Room"
- Enter the 6-character room code
- Start chatting immediately
- Text Messages: Type and send instant messages
- Media Sharing: Upload photos, videos, and files
- Camera: Take photos directly in the app
- Voice Messages: Record and share audio
- Real-time Notifications: See when users join/leave
# Start both servers
npm run dev
# Start backend only
npm run server
# Start frontend only
npm run client
# Build for production
npm run build
# Preview production build
npm run preview
MobileMessenger/
βββ server/ # Backend (Node.js + TypeScript)
β βββ index.ts # Main server file
β βββ routes.ts # API routes
β βββ websocketHandler.ts # WebSocket logic
β βββ roomManager.ts # Room management
βββ src/ # Frontend (React + TypeScript)
β βββ components/ # React components
β βββ hooks/ # Custom hooks
β βββ services/ # API services
β βββ types/ # TypeScript types
β βββ index.css # iOS-style CSS
βββ ios/ # iOS App (Swift)
β βββ Silento/ # Xcode project
βββ public/ # Static assets
- Backend: Node.js, Express, WebSocket (ws), TypeScript
- Frontend: React 19, Vite, TypeScript
- iOS: Swift, WKWebView, iOS 15+
- Styling: CSS with iOS design system
- Real-time: WebSocket for instant messaging
- Rate Limiting: Prevents spam and abuse
- Input Validation: Sanitizes all user inputs
- CORS Protection: Configured for secure cross-origin requests
- No Data Persistence: Messages are not stored on servers
- Room Expiration: Automatic cleanup of inactive rooms
- iOS Permissions: Proper camera/microphone permission handling
-
Build the project:
npm run build
-
Deploy to your hosting service:
- Upload
dist/
folder for frontend - Deploy
server/
folder for backend - Configure environment variables
- Upload
- Update production URL in
ViewController.swift
- Configure App Transport Security for HTTPS
- Add app icons and screenshots
- Submit to App Store following Apple guidelines
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the ISC License - see the LICENSE file for details.
- Apple for iOS design inspiration
- React and Vite teams for excellent development tools
- WebSocket community for real-time communication standards
If you encounter any issues:
- Check the iOS README for iOS-specific troubleshooting
- Ensure all dependencies are installed correctly
- Verify that ports 3000 and 5000 are available
- Check that your device and development machine are on the same network
Silento - Anonymous ephemeral messaging for the modern web and iOS.