A lightweight, cross-platform file sharing tool that works like AirDrop for your local network. Share files instantly between devices using QR codes and a web interface.
- 🚀 Instant Sharing: Share files quickly over your local network
- 📱 Cross-Platform: Works on any device with a web browser
- 📷 QR Code Access: Scan and connect instantly from mobile devices
- 🖥️ Web Interface: Upload and download files through a clean, modern UI
- 🔌 Headless Support: Works on devices without GUI (e.g., Raspberry Pi)
- ⚡ Resource Efficient: Lightweight and optimized for performance
- 🔄 Auto Shutdown: Automatically stops after 10 minutes of inactivity
- 📂 Bi-directional: Upload and download files from any connected device
# Clone the repository
git clone https://github.com/yourusername/share-it.git
# Navigate to the project directory
cd share-it
# Install dependencies
npm install
# Build the project
npm run build-
Start the application:
npm run dev
-
Open your browser and navigate to the displayed URL
-
Use the web interface to upload and download files
-
Share the QR code or URL with devices on your network
-
Create an alias in your
.bashrcor.zshrc:# Add this line to your ~/.bashrc or ~/.zshrc alias shareit='cd /path/to/share-it && node server.js'
-
Source your shell configuration:
source ~/.bashrc # or source ~/.zshrc
-
Share a file or folder:
# Navigate to the directory containing your files cd /path/to/your/files # Start the sharing server shareit
-
The terminal will display:
- A QR code for quick access
- The local network URL (e.g.,
http://192.168.1.100:5555)
-
On other devices:
- Scan the QR code with your camera
- Or enter the URL in your browser
- Upload/download files through the web interface
Create a function in your .bashrc or .zshrc for quick sharing:
function share() {
local share_dir="${1:-.}" # Use current directory if no argument provided
cd "$share_dir" && shareit
}Now you can quickly share any directory:
# Share current directory
share
# Share a specific directory
share /path/to/directory- Port: Uses port 5555 by default
- Auto Shutdown: Server automatically stops after 10 minutes of inactivity
- Network: Works on your local network (LAN)
- Security: Files are only accessible while the server is running
- Supported Devices: Any device with a modern web browser
# Start development server
npm run dev
# Build for production
npm run build
# Run linting
npm run lintshare-it/
├── src/ # Frontend React application
├── server.js # Express server implementation
├── dist/ # Built frontend files
└── uploads/ # Temporary file storage
- The server only runs on your local network
- Files are only accessible while the server is running
- Auto-shutdown prevents unintended file exposure
- No files are stored permanently - they're removed when the server stops
- Only works within your local network
- No built-in encryption for file transfers
- Files are stored temporarily in the
uploadsdirectory - Server must remain running during file transfers
- Fork the repository
- Create your 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 MIT License - see the LICENSE file for details.