Skip to content

sync-different/alt-core-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


Alterante Core

A virtual filesystem + file manager written in Java.

License: AGPL v3 Discord

Contributors / Thanks

A big thanks to all the contributors worldwide. This is a global effort with collaboration from these countries:

USA Uruguay

Introduction

Alterante is a decentralized filesystem.

For a general overview of Alterante and what it does, start with FAQ first.

In a nutshell, Alterante has 3 main capabilities:

  • Discovery & Organization - Decentralized Search engine for all files accross all machines. Indexing includes deep metadata extraction for PDF, JPG, MP3, etc.
  • Data Protection - Automated sync/backup/replication for all files, using free space available on all machines
  • Access - Access to all files from any browser or mobile device using secure E2E encrypted channels between devices

Terminology

A node is a unit of compute+storage, which runs on a computer (Win, Mac, Linux). A cluster is a collection of nodes, with at least 1 server.

There are 2 two types of nodes - clients and servers.

A server node has the following responsibilites:

  • keeps track of all nodes on the cluster and free space available
  • keep a centralized index of all the metadata accross all the nodes
  • create replication orders for each node
  • index all files and make them available to the API layer
  • manage settings for the cluster (admin and user settings)

A client node has the following responsilibites:

  • regularly ping the server to inform about uptime, IP, and free space
  • extract metadata from files
  • index all local files and make them available to API layer
  • execute the replication orders issued by the server
  • notify server of new/changed/deleted files
  • transfer file metadata to the server

Overview

Alt documentation is organized into these key sections:

  • 1- **Architecture **: Core architecture & diagram here
  • 2- Core services: Description of client, server, and cloud services. Click here
  • 3- Data Layer: Data layer where all data is persisted. Click here
  • 4- Configuration Files: Description of config files. Click here
  • 5- Sequence Diagrams: Diagrams that describe key user case sequences. Click here

General architecture diagram - Architecture

2-Core Services

The services are divided into 3 categories:

  • client-side : services that run on a client node
  • server-side : services that run on a server node
  • cloud : services that run on a cloud node (e.g. relay HTTP traffic)

Client-side Services

These services run on a client node.

Module Component Description
Scrubber ScannerService Scans for new/deleted/changes files in filesystem
Scrubber ScrubService Extract metadata from files
Scrubber ClientService Find Server IP, Send Ping to Server
Scrubber ProcessorService Ingest metadata , add to local client index
Scrubber TransferService Package metadata into ZIP files, transfer to server
Scrubber BackupClientService Process replication orders from server

Server-side Services

These services run on a server node.

Module Component Description
Scrubber BroadcastService Broadcast Server IP address (discovered by Client)
Scrubber ProcessorService Ingest metadata, add to main index
Scrubber BackupServerService Generate backup orders for clients
Scrubber RelayVaultService Communicaton to/from Relay Server (for traffic relay)
RTServer WebServer HTTP Web Server for REST API
CloudBackup AmazonDrive Synchronize files with Amazon S3 bucket
Mailer Mailer Communication with Email mailbox

Cloud Service

These services run on a cloud node (e.g VM on a Public Cloud such as Amazon, Azure, or GCP)

Module Component Description
Relay RelayService Relay HTTP/API requests from clients to server

Helper Libaries

Module Class / Component Description
cass-server DatabaseEntry Database entry record schema
cass-server FfmpegExecutor Build and run scripts for FFmpeg video extraction
cass-server FileDatabase File database helper functions
cass-server FileDatabaseEntry File database entry record schema
cass-server FileUtils File utils misc functions
cass-server RecordStats Record Stats functions
cass-server ZipFolder ZIP i/o helper functions

3-Data Layer

DB records

  • records.db : Stores records for each file in the system - MD5, file paths, timestamps
  • testdb : Search Index (files and their metadata)

LocalDB

  • localdb/Standard1 : Metadata for a specific file (filename = MD5)
  • localdb/NodeInfo : Information about a client node (ID, time last seen, free space available, IP Address)
  • localdb/BatchJobs : Information about a batch job (filename = Batch ID): Number of files, # of metadata inserts
  • localdb/BackupJobs : Replication orders for each client node (what files to distribute in each client)

4-Config Files

5-Sequence Diagrams

1-ScrubberService

ScrubberService

2-RTServerService

RTServerService

About

Technical documentation for alt-core

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •