Skip to content

Android apps + backend for relaying SMS from one device to another.

License

Notifications You must be signed in to change notification settings

mrnateriver/sms-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Message Proxy

Server Relay Receiver

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.

Architecture

See architecture documentation.

Stack

Android

Android SDK; Kotlin Multiplatform; Jetpack Compose; Hilt; Room; OkHttp; Retrofit; JUnit; Mockito

Server

Kotlin Multiplatform; Ktor; SQLDelight; Logback; HikariCP; Dagger; OpenTelemetry SDK; JUnit; Mockito

Infrastructure

PostgreSQL; Flyway; Traefik; Grafana; Prometheus; Loki; Tempo; Alloy; cAdvisor; node_exporter; Sentry; HashiCorp Vault; Kubernetes; FluxCD; Helm; Snyk

Running

Running and deploying

General steps to run the system:

  1. Deploy the server.
  2. Build relayApp and receiverApp, install on different devices.
  3. Run the receiver, let it register on the server and issue a receiver key.
  4. 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.

Development

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.

License

GPLv3

About

Android apps + backend for relaying SMS from one device to another.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages