17 KiB
Проект: Бюджет (личный/семейный финансовый трекер)
Стек: PHP + Bootstrap 5.4 + jQuery + MariaDB, бот на Telegram, ИИ (Claude API) как помощник.
1. Учёт финансов
1.1 Счета
- Кошелёк (наличные)
- Дебетовые карты — % кэшбэка, % по счёту в банке (возможность подтягивать данные с banki.ru или собственный анализатор ставок)
- Кредитные карты — %, льготный период
- Кредиты — %, дата взятия, начальная сумма (см. отдельный раздел 4)
- E-money, счёт в банке
- Инвестиционные инструменты: ПАММ, вклад, акции (см. отдельный раздел 3)
1.2 Категории
- Доходы
- Расходы
1.3 Транзакции
- Доходы
- Расходы
- Переводы (между своими счетами)
1.4 Планирование бюджета
Таблица план/факт по категориям:
| План | Факт | Категория |
|---|---|---|
| 1000 | 1200 | Категория 1 |
| 5000 | 4355 | Категория 2 |
| 100 | 100 | Категория 3 |
1.5 Семейный бюджет
- Общий или раздельный режим
- Каждый член семьи ведёт свой бюджет в общем кабинете
1.6 Модульность
- Клиент платит только за те модули, которые ему нужны (монетизация по модулям)
1.7 Период трат
- Подсчёт трат за произвольный период с тегом/названием
- Пример: «анализ трат за отпуск»
2. Цели
- Добавление / редактирование / удаление целей
- Предварительный расчёт с возможностью сохранить цель в бюджет (зарезервировать сумму)
3. Инвестиции (отдельный модуль)
3.1 План инвестиций
- Процентное соотношение между видами инвестиций
- Предупреждение о разбалансировке портфеля
3.2 Профили риска
| Низкий риск | Средний риск | Высокий риск |
|---|---|---|
| Вклады | ПИФ (?) | ПАММ |
| Пенсионный фонд | Индексы | |
| Акции |
3.3 Готовые стратегии
- Для новичков: малый % → вклады
- Для профи: малый % → менее рисковое; средний % → ПИФ; высокий % → ПАММ / индексы / акции
3.4 Помощник инвестирования (ИИ)
- Анализ рынка
- Поиск оптимального распределения на основании бюджета и выбранной стратегии
4. Кредиты и кредитные карты
4.1 Управление
- Добавление / редактирование / удаление кредита
- Поля: %, дата взятия, дата первого платежа, привязка к счёту (автосписание), штраф за просрочку
4.2 Способы выплат
- Стандарт
- Снежный ком (snowball)
- Снежная лавина (avalanche)
4.3 Оптимизация
- Анализ всех кредитов и подбор способа выплаты с минимальными затратами (переплатой)
5. Анализ бюджета
5.1 Корректировка бюджета
- Анализ + предложение направить деньги (+/-) на цели
5.2 Подушка безопасности
- Отдельный учёт резервного фонда
5.3 Визуализация
- Главная страница: графики дохода/расхода, расходов по категориям
5.4 ИИ-анализ
- Открытый вопрос — что именно должен анализировать ИИ (см. вопросы ниже)
6. Финальная схема БД
users
├── id
├── login -- уникальный (проверка при регистрации)
├── email -- уникальный (проверка при регистрации)
├── password
├── date_add
├── date_pay -- дата оплаты
└── last_login
accounts
├── id
├── user_id -- FK -> users.id
├── type_acc -- вид счёта (нал/дебет.карта/кредит.карта/...)
├── title
├── summa
├── is_delete -- архивация счёта, а не физическое удаление
└── order -- порядок отображения
categories
├── id
├── user_id -- FK -> users.id
├── title
├── type -- вид категории: доход / расход
└── order
transactions
├── id
├── user_id
├── categorie_id -- FK -> categories.id
├── account_f_id -- счёт-источник (from)
├── account_in_id -- счёт-получатель (in), для переводов
├── date
├── summa
└── type -- вид транзакции: доход / расход / перевод
budgets
├── id
├── categorie_id -- FK -> categories.id
├── plan_summ -- план на категорию
├── year
├── month
└── type
Важное архитектурное решение, которое уже принято: одна таблица transactions с полем type (доход/расход/перевод) и двумя ссылками на счета (account_f_id — откуда, account_in_id — куда). Для обычного дохода/расхода используется только одно из полей, для перевода — оба. Это закрывает открытый вопрос "одна таблица или две" из предыдущей версии заметок.
Архивация вместо удаления: у счетов есть is_delete — счета не удаляются физически (иначе сломается история транзакций), а помечаются как архивные и скрываются из активного списка.
7. Пошаговый план разработки (Front/Back)
Общая структура интерфейса:
- Front (сайт до входа) → лендинг-страница (
info) с описанием продукта - Back (после входа) → личный кабинет (
ЛК)
Шаги реализации
- Регистрация — login/email обязательно уникальны (проверка на дубли), восстановление пароля, вопрос про удаление аккаунта пока открыт ("надо ли???")
- Заведение счетов — нал, дебетовая карта, кредитная карта и т.д.
- Заведение категорий доходов/расходов
- Транзакции — доход/расход/перевод
- Бюджет — таблица план/факт/разница по категориям, по месяцам (структура из раздела 6, таблица
budgets) - Оплата — подключение платёжной системы + модульность (клиент платит только за нужные ему модули)
Это, по сути, финальная версия MVP-плана, конкретизирующая раздел 9 — теперь с привязкой к таблицам БД и порядку экранов.
8. Что нужно проанализировать перед реализацией оплаты
- Проанализировать сервисы оплаты, как подключить оплату технически
- Модульность — реализовать так, чтобы клиент платил только за нужные ему модули (архитектурно, не только маркетингово)
9. Твоя готовность по технологиям (для оценки, сколько доучивать)
| Область | Готовность |
|---|---|
| Основы Web (запрос/ответ, протоколы, методы передачи данных) | 90% |
| PHP и его возможности | 56% |
| MySQL / NoSQL (MongoDB) | 60% |
| База знаний предметной области проекта | 80% |
| Подключение платёжных систем | 0% |
| Ajax, jQuery | 80% |
Судя по цифрам, самое узкое место сейчас — интеграция платёжных систем (0%) и, во вторую очередь, PHP (56%). Логично, что оплата — последний шаг в плане разработки: к моменту, когда до неё дойдёшь, будет время подтянуть тему, а MVP можно собирать и без неё (бесплатная версия с лимитами).
7. Типы счетов
- Наличные
- Дебетовая карта
- Кредит
- Депозит
- Мне должны
- Долг
- Кредитная карта
- Банковский счёт
- Электронные деньги
Общий признак для всех — нал / безнал.
Поля по типу счёта:
| Тип | Поля |
|---|---|
| Дебетовая карта | сумма, остаток, %, cashback, sms-банк |
| Кредитная карта | сумма, %, штраф, льготный период |
| Счёт в банке | сумма |
| Кредит | сумма, %, срок, сумма платежа |
| Вклад (инвестирование) | сумма, %, куда (вклад/карта), период |
| ПАММ | сумма, % |
8. Что пользователь хочет видеть о деньгах (UX/аналитика)
- Остаток
- На что трачу
- Перерасход по категориям
- Остаток по категориям
- Остаток по кредиту
- Инфо о целях
- Инфо о вкладах/инвестициях
Всё это — с возможностью включить/выключить в настройках (не перегружать интерфейс).
Графики на главной:
- Доходы/расходы во времени (линейный график, сравнение двух линий)
- Динамика количества денег (общий баланс во времени)
9. MVP — минимум, чтобы проект заработал
- Регистрация пользователя и его последующие настройки
- Заведение и редактирование счетов
- Заведение и редактирование категорий доход/расход
- Транзакции: доход, расход, перевод
- Составление и редактирование бюджета
- Разделение на бесплатную версию (с ограничениями) и платную (без ограничений)
Лимиты бесплатной версии
| Параметр | Лимит |
|---|---|
| Валюта | 1 |
| Счета | 2 |
| Категории дохода | 2 |
| Категории расхода | 5 |
| Транзакции | без ограничений |
| Составление бюджета | на год |
| Импорт данных | есть (+) |
| Экспорт данных | нет (−) |
Платная версия снимает эти ограничения (сколько угодно счетов/категорий/валют + экспорт).
10. Открытые вопросы из заметок (нерешённые, требуют ответа до/во время разработки)
- Создавать категории сразу с планированием в таблице, или бюджет отдельно?
- Ставить ограничение «трата > дохода» — предупреждать пользователя? Как это должно работать?
- Делать ли годовую отчётность? Делать ли усреднение по месяцам?
- Какую ещё статистику можно делать (кроме уже перечисленной)?
- Как сделать ведение бюджета удобным для пользователя (UX)?
- Куда «откладывать» цели — делать ли для них что-то вроде отдельного счёта? Как пользователь будет физически хранить деньги на цель?
- Делать ли привязку цели к конкретному счёту?
- От куда и куда переходят деньги при использовании цели, как это учитывается в транзакциях?
- Можно ли редактировать транзакции после того, как месяц уже прошёл (задним числом)?
- Как лучше построить схему/таблицу доходов-расходов (план/факт/разница по месяцам)?
- Как лучше сделать переход бюджета на следующий год?
- Как вести статистику в течение года — по каждой категории с периодом или без периода?
- Выводить бюджет помесячно или сразу на весь год?
- Общий или раздельный бюджет для семьи — как разграничить видимость (реализация).
- Модульность — как технически ограничивать доступ (флаги в БД/подписка).
11. Более общие вопросы (из первой части заметок)
Какие модули входят в MVP— уже определено в разделе 9.Модульность: как технически ограничивать доступ— уже частично отвечено (бесплатный/платный тариф, раздел 9), но сам механизм проверки прав ещё не спроектирован.- Семейный бюджет: как разграничивать видимость чужих трат при "раздельном" режиме?
- Интеграция с banki.ru или сбор ставок — вручную, парсинг или ручной ввод пользователем?
- ИИ-помощник — на каких данных он строит рекомендации по бюджету и инвестициям (только внутренние транзакции, или + внешние рыночные данные)?
- Монетизация — разовая оплата модуля, подписка, freemium? (Раздел 9 намекает на freemium-модель.)
Рекомендация по приоритету (MVP)
Судя по заметкам, ядро без которого остальное не имеет смысла:
- Счета + категории + транзакции (1.1–1.3)
- Планирование бюджета план/факт (1.4)
- Базовая аналитика/графики (5.3)
- Telegram-бот для быстрого ввода трат
Всё остальное (инвестиции, кредиты с оптимизацией, ИИ-советник, модульность/монетизация) — логичные модули фазы 2+, они опираются на данные, накопленные в ядре.