Микросервисная платформа для управления личными финансами
Проект позволяет вести учет доходов и расходов, ставить финансовые цели и анализировать траты
- Безопасная авторизация через JWT токены
- Хранение данных пользователя, смена пароля и настроек
- Создание бюджетов на месяц с учетом доходов
- Установка ограничений по категориям в сумме или процентах
- Распределение трат по категориям как пользовательским, так и системным
- Просмотр транзакций, которые импортируются из банка
- Встроенный сервис для генерации транзакций
- Система сама определяет категорию покупки по mcc коду или названию магазина
- Создание целей и привязка их к конкретному бюджету
- Отслеживание накоплений в рамках установленной цели
- Установка сроков достижения целей
- Получение статистики по бюджету в схемах и тексте
Система построена на архитектуре микросервисов, каждый из которых запускается в отдельном Docker контейнере
| Сервис | Порт | Описание |
|---|---|---|
| Auth Service | 8089 |
Безопасность и пользователи |
| Budget Service | 8081 |
Логика бюджетов и категорий |
| Transaction Service | 8083 |
Операции и правила категоризации |
| Goal Service | 8087 |
Финансовые цели |
| Dashboard Service | 8088 |
Агрегатор данных для фронтенда |
| Bank Service | 8085 |
Эмулятор банковской системы |
- Взаимодействие: Сервисы общаются синхронно по REST API
- База данных: PostgreSQL 14
- Язык: Java 21
- Фреймворк: Spring Boot 3
- База данных: PostgreSQL
- Миграции: Liquibase
- Контейнеризация: Docker & Docker Compose
- CI/CD: GitHub Actions
- Облако: Yandex Cloud
- Документация: OpenAPI, Swagger UI
Процесс деплоя полностью автоматизирован через GitHub Actions
- Push в main — триггерит пайплайн
- Сборка — Maven собирает jar файлы и прогоняет тесты
- Docker Hub — собираются образы и отправляются в реестр
- Deploy — скрипт заходит на сервер по SSH, обновляет docker-compose и перезапускает контейнеры
- Ubuntu 20.04+
- Установленный Docker Engine
- Открытые порты в Security Group (
22,8081,8083,8085,8087,8088,8089)
Для работы нужны секреты в репозитории GitHub:
Доступ к ВМ
YC_HOSTYC_USERNAMEYC_SSH_PRIVATE_KEY
Docker Registry
DOCKER_USERNAMEDOCKER_PASSWORD
База данных
DB_NAMEDB_USERDB_PASSWORD
Безопасность
JWT_SECRETJWT_EXPIRATION
При каждом пуше в репозиторий запускаются Unit-тесты
- Установить докер
- Создать файл
.envс необходимыми переменными окружения - Запустить команду
docker compose up -d --buildДокументация Swagger доступна для каждого сервиса
- Auth: http://:8089/swagger-ui/index.html
- Budget: http://:8081/swagger-ui/index.html
- Transaction: http://:8083/swagger-ui/index.html
- Goal: http://:8087/swagger-ui/index.html
- Dashboard: http://:8088/swagger-ui/index.html
а также по ссылке https://app.swaggerhub.com/apis/fourpixels/SmartBudget/1.0.0#/