Files

63 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Функциональная документация 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.
Любое изменение протокола требует проверки обеих реализаций.