Skip to content

mikhailsnnt/cloud-storage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud storage app

Motivation

Goal of my project is to build efficient cloud storage environment. For these purposes I've defined low-level transport protocol. Stumbling stone of developing worthy product was to build user-friendly GUI.

ezgif-2-c76d37dbdd

Server

Network interaction is built with asynchronous event-driven framework Netty. Data is exchanged through self defined byte protocol. This decision was made to provide efficency and client platform independency.

Tecnology stack

Java 17, Netty, Spring, Hibernate, MySql, Lombock.

Many technologies were purposfully avoided. For example instead of using Spring Security, password encryption was implemented on byte level using SHA-256 algorithm.

Architecture

I've managed to keep balance between efficient low-level code and architecture flexibility. For example:

  • Building requests from bytes is encapsulated via Builder pattern.
  • Requests are processed with Chain-of-responsibility pattern.
  • File transfer operations are encapsulated via Command pattern.

Despite working with byte level, SOLID principles are followed.

Navigation

Filesystem is provided via complex directory entity mapping. Folder sharing is defined.

Client

Client application is built with Java 17 using JavaFX. Asynchronicity is established via using non-blocking Netty framework for network exchange.

GUI

User-friendliness of interface is achived by Drag and drop functionality, and using intuitively appealing context menus. Filesystems are represented by custom TreeView. Multiple scenes are staged. Client is always indicated with network operations progress.

Architecture

  • Requests are designed with Command pattern, wich is efficient for queuing and reverting actions.
  • When user expands local directory, Observer is registered to monitor filesystem events.

Demonstration

https://youtu.be/i5WjRu25MU0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published