63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
# Функциональная документация BalanceServer
|
||
|
||
## Назначение
|
||
|
||
BalanceServer является backend для приложения Balance — персонального финансового учёта.
|
||
|
||
Он не реализует пользовательский UI. Его задача — безопасно хранить и синхронизировать данные между устройствами.
|
||
|
||
## Пользовательские данные
|
||
|
||
Синхронизируются:
|
||
|
||
- финансовые операции;
|
||
- пользовательские категории;
|
||
- месячные бюджеты;
|
||
- удаления этих сущностей.
|
||
|
||
## Multi-device
|
||
|
||
Один пользователь может работать с несколькими устройствами.
|
||
|
||
Пример:
|
||
|
||
```text
|
||
iPhone добавил расход
|
||
↓
|
||
Server
|
||
↓
|
||
Android получил расход
|
||
↓
|
||
Mac получил расход
|
||
```
|
||
|
||
## Offline-first
|
||
|
||
Мобильные приложения сохраняют изменения локально и затем отправляют их серверу.
|
||
|
||
Поэтому сервер должен корректно принимать изменения спустя некоторое время после их создания.
|
||
|
||
## Delete
|
||
|
||
Удаление является syncable operation, а не только локальным DB delete.
|
||
|
||
Другие устройства должны получить tombstone и удалить локальную запись.
|
||
|
||
## Privacy
|
||
|
||
Сервер хранит персональные финансовые данные. Поэтому production deployment должен обеспечивать:
|
||
- TLS;
|
||
- authentication;
|
||
- authorization;
|
||
- encrypted backups;
|
||
- controlled database access;
|
||
- минимальное логирование финансовых payloads.
|
||
|
||
## Клиентская совместимость
|
||
|
||
Backend должен рассматриваться как общий контракт для:
|
||
- Apple Balance;
|
||
- Android Balance.
|
||
|
||
Любое изменение протокола требует проверки обеих реализаций.
|