Modules:
relayApp
- Android KMP app that relays SMS messages between the user's device and the server.proxyApiTypeSpec
- TypeSpec of the API.shared
- Shared module with platform-agnostic service contracts and implementation of processing pipeline.server
- Server that receives relayed messages, stores them and proxies to registered receivers.receiverApp
- Android KMP app that receives relayed messages via FCM.
See architecture documentation.
Android SDK; Kotlin Multiplatform; Jetpack Compose; Hilt; Room; OkHttp; Retrofit; JUnit; Mockito
Kotlin Multiplatform; Ktor; SQLDelight; Logback; HikariCP; Dagger; OpenTelemetry SDK; JUnit; Mockito
PostgreSQL; Flyway; Traefik; Grafana; Prometheus; Loki; Tempo; Alloy; cAdvisor; node_exporter; Sentry; HashiCorp Vault; Kubernetes; FluxCD; Helm; Snyk
General steps to run the system:
- Deploy the server.
- Build
relayApp
andreceiverApp
, install on different devices. - Run the receiver, let it register on the server and issue a receiver key.
- Run the relay app, configure the server URL and receiver key from the previous point.
See relayApp/README.md and receiverApp/README.md for instructions for building and running the apps.
See server/README.md for instructions for configuring and deploying the server.
The easiest way to start is to use Android Studio.
Detekt is used for both linting and formatting (formatting is delegated to KtLint) the whole project, so corresponding IDE plugin might be useful.
Docker (or any other compatible alternative) can be used to run the required infrastructure for local development. See docker-compose.yml.