Architecture - meks77/ClientServerBackup GitHub Wiki

Design of Architecture

Components

Commons

Components which are needed on the Server and on the Client.

Backend

The lightweight server software which provides the Interface for backup used by the clients

Client

The pure Java Backup Client which uses the BackupServer Interface to backup, browse and recover files.

Server-Frontend

The Html Frontend for the server

Synology

This component contains everything that it can be used configured and monitored in an Synology NAS.

ClientInstaller-Windows

The sources for the installer for Windows OS

ClientInstaller-Linux

The sources for the installer for Linux OS

Deployment

without Synology

Archtiecture without Synology NAS

with Synology

Archtiecture with Synology NAS

Technologies and Frameworks

In generall Java should be the implementing language. Maybe Kotlin would be a possibility. Furthermore Java 11 would be a candidate because of the modularization. But currently I am not familar with it. But it depends what Synology supports. At least Java 8 is the minimum version.

Backend

The first idea is to setup a Spring Boot project

Server-Frontend

Extend the spring Boot project with Angular

Client

A Java Swing Client which connects to Json Rest Services from the Backend

Synology

Currently I just know that there is a Synology Development Kit and that Java is supported.