Skip to content

OpenLake/File-Sharing-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

61 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Welcome to the File Sharing Application πŸ‘‹

A cross-platform intranet-based file sharing application built with Flutter, GoLang, and MinIO.

Status: Deployed Development: Ongoing License: MIT

Pull Requests Merged Open Issues Contributors


Repository Links β†₯ Back to top


Table of Contents

  1. About the Project
  2. Docker Setup
  3. Getting Started
  4. Usage
  5. Contributing
  6. Maintainers
  7. License

About the Project β†₯ Back to top

πŸ€” Problem

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.

✨ Features

  • Cross-platform intranet file sharing between multiple devices.
  • End-to-End Encryption with AES-256-GCM for secure file transfers.
  • Client-side encryption and decryption for maximum security.
  • File integrity verification with SHA-256 hashing.
  • Powered by MinIO (object storage server) for efficient file handling.
  • Tech Stack:
    • Frontend: Flutter
    • Backend: GoLang
    • File Storage: MinIO
    • Encryption: AES-256-GCM with ECDH key exchange support

Docker Setup β†₯ Back to top

This project includes Docker support to easily run the entire stack with a single command.

Prerequisites

  • Docker and Docker Compose installed

Quick Start

  1. Clone the repository:

    git clone https://github.com/OpenLake/File-Sharing-App.git
    cd File-Sharing-App
  2. Start all services:

    docker-compose up
  3. Access the application:

Environment Variables

The setup uses these default environment variables:

  • ACCESS_KEY=minioadmin
  • SECRET_KEY=minioadmin123
  • LOCAL_IP=minio:9000

Getting Started β†₯ Back to top

For local development without Docker, you'll need to set up each service manually. Please refer to the individual service directories for specific setup instructions. go run file-uploader.go


##### οΏ½ Setting up Frontend (Flutter)
1. Navigate to the Flutter directory:
```bash
cd filesharing
  1. Install dependencies:

    flutter pub get
  2. Run the application:

    # For web
    flutter run -d web-server --web-port 3000
    
    # For mobile (requires device/emulator)
    flutter run

Once the setup is complete:

  • Upload files from one device via the Flutter app.
  • Files are automatically encrypted client-side using AES-256-GCM before upload.
  • 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.

πŸ”’ Security Features

  • Client-side encryption: Files are encrypted before leaving your device
  • AES-256-GCM: Industry-standard encryption algorithm
  • Integrity verification: SHA-256 hashing ensures files haven't been tampered with
  • Unique keys: Each file gets a unique encryption key
  • See ENCRYPTION.md for detailed security documentation

🐳 Using Docker Setup

  1. Start the application stack:

    docker-compose up -d
  2. Open your web browser and navigate to http://localhost:3000

  3. Upload and share files across your network!

πŸ› οΈ Using Manual Setup

Example (start backend in one terminal):

cd Go
go run file-uploader.go

And then run the frontend Flutter app:

cd filesharing
flutter run -d web-server --web-port 3000

Troubleshooting β†₯ Back to top

Docker Issues

  • 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

Common Issues

  • Frontend can't connect to backend: Verify the API_BASE_URL is correctly set
  • MinIO connection fails: Check if MinIO service is running and accessible
  • File upload fails: Ensure proper CORS headers and file size limits

Logs and Debugging

# 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 -f

Contributing β†₯ Back to top

We welcome contributions from the community! πŸŽ‰
Please read CONTRIBUTING.md for guidelines before submitting a pull request.


See MAINTAINERS.md for the full list.


Distributed under the MIT License.
See LICENSE for details.

About

File Sharing Application between different devices ( with p2p technology )

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 10