A lightweight local-network file management application for browsing, uploading, downloading, and managing files on a host machine from any device on your LAN.
RemoteFS provides a clean web interface for essential file system operations with real-time updates. Built for home networks, internal tools, and lightweight remote management scenarios with passcode-based authentication for secure access.
- Passcode authentication: Secure access with one-time passcode shown in server CLI
- Real-time sync via WebSocket connections
- Auto-refresh on file system changes using Chokidar
- File operations: upload, download, create, delete
- Folder management: create, navigate, delete (folders downloaded as ZIP)
- Search with instant filtering
- Responsive UI built with React and shadcn/ui
- Live connection status indicator
Frontend
- React (Vite + React Router) + shadcn/ui
- TailwindCSS
- Zustand for state management
- WebSocket client
Backend
- Node.js
- Express
- WebSocket server
- Archiver for folder compression
- Chokidar for file system watching
Build System
- Turborepo for monorepo orchestration
apps/
├── client/ # React frontend
├── server/ # Node.js backend
packages/
└── utils/ # Shared utilities and types
turbo.json # Turborepo configuration
- Node.js 16+
- npm
# Clone the repository
git clone https://github.com/Bhavye2003Developer/RemoteFS.git
cd RemoteFS
# Install dependencies
npm install-
Find your local IP address:
- Windows: Run
ipconfig - macOS: Run
ifconfig - Linux: Run
ip a
- Windows: Run
-
Open
./packages/utils/constants.ts -
Set your local IP:
export const SYSTEM_IP = "192.168.1.x"; // Replace with your IP
# Start both client and server
npm run devThe build system will automatically initialize both applications.
Access the application:
- Desktop:
http://<your-ip>:5555 - Mobile:
http://<your-ip>:5555(same network required)
Authentication: Enter the passcode shown in the server CLI when prompted to access the file explorer.
RemoteFS uses a WebSocket-based architecture for real-time communication:
- User accesses the application and enters the passcode displayed in server CLI
- Client establishes persistent WebSocket connection
- Chokidar watches the current directory for file system changes
- File operations trigger WebSocket messages
- Server processes filesystem changes (folders compressed using Archiver for download)
- Server broadcasts updates to connected clients
- UI automatically refreshes
HTTP Endpoints
POST /upload- Upload filesGET /download?fileInfo=...- Download files
WebSocket Events
FETCH- Retrieve directory contentsADD- Create file or folderDELETE- Remove file or folderDOWNLOAD- Download file or folder
Security
- Passcode-based authentication protects against unauthorized access
- Passcode is generated on server startup and displayed in CLI
- Access is restricted to devices on the same local network
This project is licensed under the MIT License.
