Prerequisites
Before you begin, make sure you have the following installed:- Node.js 18 or later and
npm - Git
- A LiveKit account for video conferencing (livekit.io — a free tier is available)
- (Optional) Expo Go on a physical device, or an iOS Simulator / Android Emulator for mobile
Web application setup
Configure environment variables
Copy the example environment file and fill in your values:Open
Example
.env.local and set the following variables:| Variable | Description |
|---|---|
LIVEKIT_API_KEY | Your LiveKit project API key |
LIVEKIT_API_SECRET | Your LiveKit project API secret |
LIVEKIT_URL | Your LiveKit server URL (e.g., https://your-project.livekit.cloud) |
NEXT_PUBLIC_LIVEKIT_URL | Public WebSocket URL used by the browser client (e.g., wss://your-project.livekit.cloud) |
.env.local:File transfer and chat rooms use WebRTC peer-to-peer connections and do not require LiveKit. You only need LiveKit credentials if you want video conferencing to work.
Start the development server or build for production
Development:The app is available at http://localhost:3000. Turbopack is enabled by default for fast hot module reloading.Production:The production server listens on port 3000 by default. Set the
PORT environment variable to change this.Mobile app setup
The mobile app lives in themobile/ directory and is built with Expo 54 (React Native).
Configure the mobile environment
Copy the example env file and set your web app URL:
For a local development setup, use your machine’s LAN IP so physical devices on the same network can reach the server:
| Variable | Description |
|---|---|
EXPO_PUBLIC_WEB_URL | URL of the HashDrop web app the mobile client connects to |
Start the Expo development client
- Physical device: Scan the QR code with Expo Go
- iOS simulator: Press
iin the terminal, or runnpm run mobile:iosfrom the project root - Android emulator: Press
ain the terminal, or runnpm run mobile:androidfrom the project root
Deploying to Vercel
HashDrop ships with avercel.json at the project root, so deployment to Vercel works out of the box with zero additional configuration.
Push the repository to GitHub and import it in the Vercel dashboard. Vercel auto-detects the Next.js framework. Add your
LIVEKIT_API_KEY, LIVEKIT_API_SECRET, LIVEKIT_URL, and NEXT_PUBLIC_LIVEKIT_URL as environment variables in the Vercel project settings before deploying.vercel.json uses the following settings automatically:
Next steps
Environment variables reference
Full reference for all supported configuration variables
ICE server configuration
Configure STUN and TURN servers for reliable peer connections
Architecture overview
Understand the full P2P connection lifecycle
Security & privacy
How HashDrop keeps your data private by design