Последние несколько недель я разрабатывал TinyDebt — крошечное приложение для учёта долгов, займов и погашений. Хочу поделиться некоторыми техническими решениями, стоящими за ним: вдруг это пригодится тем, кто создаёт небольшие целенаправленные приложения.
🧩 Зачем я его создал
Я постоянно забывал о мелких долгах между друзьями, а существующие приложения казались тяжёлыми: регистрация, реклама повсюду, сложные финансовые функции.
Мне хотелось что-то, что:
- открывается мгновенно
- позволяет добавить долг за 3–5 секунд
- работает офлайн
- навсегда останется простым
Так появился TinyDebt.
⚙️ Технологический стек
TinyDebt намеренно сделан лёгким:
- React Native (Expo) для мобильной версии
- Подход local-first с AsyncStorage
- Без backend — данные хранятся на устройстве (Firebase только для резервных копий)
- TypeScript везде
- Минималистичный интерфейс на собственных компонентах вместо UI-библиотек
- Сборка для App Store и Google Play через EAS build
Без учётных записей, без аналитики, без внешних зависимостей, кроме самых необходимых.
🗂️ Модель данных
Каждая запись о долге выглядит так:
type Debt = {
id: string;
name: string;
amount: number;
type: "owed" | "borrowed";
createdAt: number;
history: Repayment[];
};
type Repayment = {
amount: number;
date: number;
};Сериализуемость всех данных делает хранение и миграции лёгкими.
🧠 Local-first UX
TinyDebt не зависит от сервера, поэтому:
- действия применяются мгновенно
- нет состояний загрузки или «синхронизации»
- приложение работает быстро даже на старых телефонах
Для небольшой личной утилиты это идеальный вариант.
🎨 Философия интерфейса
Я хотел, чтобы приложение ощущалось «спокойным»:
- простые нейтральные цвета
- без графиков и дашбордов
- без лишнего — один экран выполняет 90% работы
- удобные области нажатия для быстрого ввода
Небольшим приложениям не нужны сложные визуальные эффекты, чтобы быть полезными.
📦 Публикация
- Доступно в App Store
- Доступно в Google Play
Но я хочу сохранить минимальный объём функций — в этом и смысл.
🙌 Буду рад отзывам
Если вы разрабатываете мобильные приложения или у вас есть мысли о local-first утилитах, буду рад отзывам. Я всегда улучшаю приложение.
