Files
synq/README.md
2026-05-21 16:52:51 -04:00

2.1 KiB

synq, a tiny android-to-org capture system.

synq consists of an Android app for capturing notes items and a docker agent that pulls notes and saves them to a local .org file.

  1. Open Synq app
  2. Type note, mark as TODO (opt), add tags (opt), save.
  3. If home server accessible, post unsynced captures to lan-only service and appended to synq.org.

home-screen-v1 history-screen-v1 settings-v1

Architecture

android app
  kotlin + jetpack compose
  room sqlite local queue
  workmanager + manual sync
  okhttp/retrofit client

home server
  docker container on jeeves/unraid
  python + fastapi
  sqlite idempotency store
  append-only org writer
  1. user saves capture locally
  2. app marks it pending
  3. sync runs when server is reachable
  4. app posts pending captures to fastapi
  5. server validates, dedupes by id, appends to phone.org
  6. app marks capture synced

Build & Deploy

First, clone the repo.

Build and deploy synq-server, the docker container that listens for new notes and writes to the local file.

Then, build and install the synq app.

Finally, retrieve the token (token.txt in the docker container's data directory, or from the container logs docker logs synq-server)

1. synq-server (docker)

  • Build from docker build -t synq-server ./server
  • Run (replace paths and token as needed):
docker run -d --name synq --restart=unless-stopped \
  -p 8765:8765 \
  -v /mnt/user/synq/data:/data \
  synq-server

The server generates a random token on first start and logs it prominently. Copy it into the android app settings. To use a fixed token instead, pass -e PHONE_CAPTURE_TOKEN=yourtoken.

2. synq (android)

Download apk from Releases, on the right

Or, build from source: Open android/ in Android Studio and hit Sync. then either:

  • run on device/emulator directly from Android Studio (▶), or
  • build a release APK Then sideload to a connected device:
  • terminal: adb install app/build/outputs/apk/release/app-release-unsigned.apk