Skip to content

brinestone/dfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DFS

Distributed File Storage

license last-commit repo-top-language repo-language-count


Table of Contents


Overview

DFS is a distributed file storage application written in Go. It enables multiple nodes to share and store files across a network, providing redundancy and scalability. The system currently uses TCP as its transport protocol for communication and file data transfer between nodes. DFS is designed to be modular, making it easy to extend or swap out components such as transport layers or storage backends in the future.


Features

  • End-to-End Encryption: All file transfers are protected using end-to-end encryption based on the Diffie-Hellman key exchange algorithm, ensuring data privacy and security between nodes.
  • Fast File Sharing: Efficient protocols enable rapid file distribution and retrieval across the network.
  • Redundant Storage: Files are replicated across multiple nodes to provide fault tolerance and high availability.
  • Modular Architecture: Easily extend or replace core components such as transport protocols or storage backends.
  • Scalable Design: Supports seamless scaling as new nodes join the network.
  • Simple CLI Usage: Intuitive command-line interface for managing files and nodes.

Project Structure

└── dfs/
    ├── .github
    │   └── workflows
    ├── Makefile
    ├── README.md
    ├── api
    │   └── api.go
    ├── cmd
    │   ├── lorem.txt
    │   └── main.go
    ├── encdec
    │   ├── encdec.go
    │   └── encdec_test.go
    ├── fs
    │   └── server.go
    ├── go.mod
    ├── go.sum
    ├── p2p
    │   ├── encoding.go
    │   ├── encoding_test.go
    │   ├── tcp_transport.go
    │   ├── tcp_transport_test.go
    │   └── transport.go
    ├── storage
    │   ├── store.go
    │   └── store_test.go
    └── tmp
        └── build-errors.log

Project Index

DFS/
__root__
go.mod ❯ REPLACE-ME
go.sum ❯ REPLACE-ME
Makefile ❯ REPLACE-ME
.github
workflows
ci.yml ❯ REPLACE-ME
encdec
encdec_test.go ❯ REPLACE-ME
encdec.go ❯ REPLACE-ME
storage
store_test.go ❯ REPLACE-ME
store.go ❯ REPLACE-ME
fs
server.go ❯ REPLACE-ME
p2p
transport.go ❯ REPLACE-ME
encoding_test.go ❯ REPLACE-ME
tcp_transport.go ❯ REPLACE-ME
encoding.go ❯ REPLACE-ME
tcp_transport_test.go ❯ REPLACE-ME
api
api.go ❯ REPLACE-ME
cmd
lorem.txt ❯ REPLACE-ME
main.go ❯ REPLACE-ME

Getting Started

Prerequisites

Before getting started with dfs, ensure your runtime environment meets the following requirements:

  • Programming Language: Go
  • Package Manager: Go modules

Installation

Install dfs using one of the following methods:

Build from source:

  1. Clone the dfs repository:
❯ git clone https://github.com/brinestone/dfs
  1. Navigate to the project directory:
cd dfs
  1. Install the project dependencies:

Using go modules  

❯ go build

Usage

Run dfs using the following command: Using go modules  

❯ go run {entrypoint}

Testing

Run the test suite using the following command: Using go modules  

❯ go test ./...

Project Roadmap

  • Task 1: Implement feature one.
  • Task 2: Implement feature two.
  • Task 3: Implement feature three.

Contributing

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/brinestone/dfs
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


License

This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.


Acknowledgments

  • List any resources, contributors, inspiration, etc. here.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published