68 lines
2.1 KiB
Markdown
68 lines
2.1 KiB
Markdown
# 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`.
|
|
|
|
<p>
|
|
<img src="docs/home-v1.png" alt="home-screen-v1" width="220">
|
|
<img src="docs/history-v1.png" alt="history-screen-v1" width="220">
|
|
<img src="docs/settings-v1.png" alt="settings-v1" width="220">
|
|
</p>
|
|
|
|
## Architecture
|
|
|
|
```text
|
|
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
|
|
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`
|