The majority of the code is Scala so, at the very least, Java (JDK17) and SBT need to be available on your dev machine.
Some submodules use Python (ex: client-cli
), Flutter (ex: identity-ui
)
or Kotlin for Android (ex: client-android
) so the appropriate tools for those platforms need to be
available as well.
Protobuf is also used, however, it is handled by an sbt plugin and no additional tools are needed.
There are also some Python and Bash scripts to help with deployment and testing.
- Clone or fork the repo
- Run
sbt qa
To execute all tests and QA steps for the Scala submodules, simply run
sbt qa
from the root of the repo.
Image assets used by other submodules.
- Image files and Python script(s)
- Testing -
n/a
- Packaging -
n/a
Protocol Buffers file(s) defining gRPC services and messages used by the core
networking and routing.
- protobuf spec
- Testing -
n/a
- Packaging -
n/a
Generic code commonly used by the various layers of the stasis
services - API, persistence, security, telemetry.
- Scala code
- Testing -
sbt "project layers" qa
- Packaging -
n/a
Core routing, networking and persistence code. Represents the subsystem that handles data exchange.
- Scala code
- Testing -
sbt "project core" qa
- Packaging -
n/a
API and model code shared between the server
and client
submodules.
- Scala code
- Testing -
sbt "project shared" qa
- Packaging -
n/a
OAuth2 identity management service based on RFC 6749.
- Scala code
- Testing -
sbt "project identity" qa
- Packaging -
sbt "project identity" docker:publishLocal
Web UI for identity
.
- Flutter code
- Testing -
cd ./identity-ui && ./qa.py
- Packaging -
cd ./identity-ui && ./deployment/production/build.py
Backup management and storage service.
- Scala code
- Testing -
sbt "project server" qa
- Packaging -
sbt "project server" docker:publishLocal
Web UI for server
.
- Flutter code
- Testing -
cd ./server-ui && ./qa.py
- Packaging -
cd ./server-ui && ./deployment/production/build.py
Linux / macOS backup client, using server
for management and storage.
- Scala code
- Testing -
sbt "project client" qa
- Packaging -
sbt "project client" docker:publishLocal
Command-line interface for client
.
- Python code
- Testing -
cd ./client-cli && source venv/bin/activate && ./qa.py
- Packaging -
cd ./client-cli && source venv/bin/activate && pip install .
Desktop interface for client
.
- Flutter code
- Testing -
cd ./client-ui && ./qa.py
Android backup client, using server
for management and storage.
- Kotlin code
- Testing -
cd ./client-android && ./gradlew qa
- Packaging - via
AndroidStudio
-Build
>Build Bundle(s)/APK(s)
>Build APK(s)
Deployment, artifact and certificate generation scripts and configuration.
- Python and Bash code; config files
- Testing -
cd ./deployment/dev/scripts && ./run_smoke_test.sh
- Packaging -
see ./deployment/dev/docker-compose.yml
Ready for prime time but run in production at your own risk!
identity
/identity-ui
- authentication service and web UI - completeserver
/server-ui
- backup server and web UI - operational; some features are not yet availableclient
/client-cli
/client-ui
- Linux / macOS client, CLI and UI - operational; some features are not yet availableclient-android
- Android client - operational; some features are not yet available;