Skip to content

Latest commit

 

History

History
executable file
·
115 lines (89 loc) · 4.71 KB

README.md

File metadata and controls

executable file
·
115 lines (89 loc) · 4.71 KB

Cloud Management Tool

Online management tool for end2end encrypted files and documents.


Features

  • User data is client side encrypted using a private master key
  • Changes are synchronized live between different devices / browser tabs of the same user
  • Backend can be horizontally scaled to multiple container instances
  • Common code is shared between server backend and web frontend

Technical background

Databases

  • PostgreSQL for user management and references / labels
  • MongoDB for encrypted notes to allow updating only a single line
  • Minio Amazon S3 compatible container as storage for encrypted files

Build-tool configuration

  • Gradle multi-project (all subprojects included in one repo)
  • Automated JUnit-Tests with GitHub Actions
  • Provide docker-compose file for backend setup
  • Documentation with latex template and plant-uml

Roadmap

  • Make backend technology decisions
  • Create running project for backend
  • Configure Dockerfile for backend
  • Configure Docker-Compose
  • Configure ktor for backend
  • Make frontend GUI design decisions
  • Create running projects for frontend: android, web/pc
  • Experiment with compose and painter-library and react
  • Implement frontend login with react
  • Configure reverse proxy: nginx or traefik
  • Call REST-API from frontend on login event
  • Implement logout button in frontend
  • Decide which database to use for user management, file management.
  • REST-API server implementation for user registration & login
  • SQL DAO elements for user registration & login
  • Connect websocket to backend server
  • Remove JWT cookie on logout
  • Simplify debugging without complete rebuild
  • Ensure session restored after page reload
  • Make frontend work on Android
  • Build Electron app for PC
  • Provide hosted web-app online
  • Implement mongodb data structure for text documents
  • Implement algorithm for detecting changed lines in text
  • Implement live sync for document edit
  • Implement text editor in frontend
  • Allow offline access in Android app
  • Implement file upload / download
  • Encrypt files and documents
  • Configure Grafana & Prometheus
  • Provide statistics with Ktor: /metrics
  • Multi instance Redis support

Build & execute project

To build the android project ensure the file local.properties exists in root project structure with following content. Make sure the android sdk is installed and path is correct.

sdk.dir=/opt/android

Note when opening the full project with Android Studio, the local.properties file will be generated automatically.

With gradle & docker-compose

Build all modules, including android:

gradlew build

(Note: Java 16+ may cause build failures)

To skip the tests while Gradle build run:

gradlew build -x test

Start backend using docker (opens reverse-proxy on port 80):

sudo docker-compose up --build

Cleanup data and volumes:

sudo docker-compose down -v

Run frontend without docker-compose:

Debug web-app (opens dev-server on port 8081):

gradle :web-app:browserDevelopmentRun --continuous

Conventions