A cross-platform intranet-based file sharing application built with Flutter, GoLang, and MinIO.
Repository Links โฅ Back to top
- Main Repository: OpenLake
- This Project Repository: File Sharing Application
- Discord Discord
About the Project โฅ Back to top
We often need to transfer files between mobile and desktop devices. Typically, this is done using WhatsApp, Telegram, or other internet-based apps, which is inefficient for local transfers.
This project enables direct file sharing over an intranet without requiring internet connectivity.
- Cross-platform intranet file sharing between multiple devices.
- Powered by MinIO (object storage server) for efficient file handling.
- Tech Stack:
- Frontend: Flutter
- Backend: GoLang
- File Storage: MinIO
Docker Setup โฅ Back to top
This project includes Docker support to easily run the entire stack with a single command.
- Docker and Docker Compose installed
-
Clone the repository:
git clone https://github.com/OpenLake/File-Sharing-App.git cd File-Sharing-App -
Start all services:
docker-compose up
-
Access the application:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- MinIO Console: http://localhost:9001
The setup uses these default environment variables:
ACCESS_KEY=minioadminSECRET_KEY=minioadminLOCAL_IP=minio:9000
Getting Started โฅ Back to top
For local development without Docker, you'll need to set up each service manually. You can follow the commands here.
Make sure you have the following installed:
-
Create a directory for MinIO: mkdir ~/minio
-
Run the server on port 9090: minio server ~/minio --console-address :9090
-
Navigate to the Go backend folder: cd Go
-
Create a
.envfile with: LOCAL_IP="" # Your local IP connected with minio (port 9000) ACCESS_KEY="" # MinIO access key SECRET_KEY="" # MinIO secret key -
Install MinIO Go SDK if missing: go get github.com/minio/minio-go/v7
-
Start backend: go run file-uploader.go
- Open the Flutter project in Android Studio.
- Update the upload/download endpoint IPs in the code with your local IP (port
8000). - Run the application: flutter run
Usage โฅ Back to top
Once the setup is complete:
- Upload files from one device via the Flutter app.
- Files are stored securely in MinIO over your intranet.
- Download files seamlessly on other connected devices.
- Files are automatically decrypted client-side after download with integrity verification.
-
Start the application stack:
docker-compose up -d
-
Open your web browser and navigate to http://localhost:3000
-
Upload and share files across your network!
Example (start backend in one terminal):
cd Go
go run file-uploader.goAnd then run the frontend Flutter app:
cd filesharing
flutter run -d web-server --web-port 3000Troubleshooting โฅ Back to top
- Port conflicts: If ports 3000, 8000, 9000, or 9001 are in use, modify the port mappings in
docker-compose.yml - Build failures: Ensure Docker has enough memory allocated (recommended: 4GB+)
- Permission issues: On Linux, you may need to run Docker commands with
sudo
- Frontend can't connect to backend: Verify the
API_BASE_URLis correctly set - MinIO connection fails: Check if MinIO service is running and accessible
- File upload fails: Ensure proper CORS headers and file size limits
# View all service logs
docker-compose logs
# View specific service logs
docker-compose logs backend
docker-compose logs frontend
docker-compose logs minio
# Follow logs in real-time
docker-compose logs -fContributing โฅ Back to top
We welcome contributions from the community! ๐
Please read CONTRIBUTING.md for guidelines before submitting a pull request.
Maintainers โฅ Back to top
- ๐ค Ashish Kumar Dash
@ashish-kumar-dash - ๐ค Sri Varshith
@Sri-Varshith
See MAINTAINERS.md for the full list.
License โฅ Back to top
Distributed under the MIT License.
See LICENSE for details.