Skip to content

TheFourPixels/smart-budget-backend

Repository files navigation

Smart Budget Backend

Микросервисная платформа для управления личными финансами

Проект позволяет вести учет доходов и расходов, ставить финансовые цели и анализировать траты


Функционал системы

1. Аутентификация и Профиль (auth-service)

  • Безопасная авторизация через JWT токены
  • Хранение данных пользователя, смена пароля и настроек

2. Управление Бюджетом (budget-service)

  • Создание бюджетов на месяц с учетом доходов
  • Установка ограничений по категориям в сумме или процентах
  • Распределение трат по категориям как пользовательским, так и системным

3. Транзакции и Банк (transaction-service и bank-service)

  • Просмотр транзакций, которые импортируются из банка
  • Встроенный сервис для генерации транзакций
  • Система сама определяет категорию покупки по mcc коду или названию магазина

4. Финансовые Цели (goal-service)

  • Создание целей и привязка их к конкретному бюджету
  • Отслеживание накоплений в рамках установленной цели
  • Установка сроков достижения целей

5. Аналитика (dashboard-service)

  • Получение статистики по бюджету в схемах и тексте

Структура проекта

Система построена на архитектуре микросервисов, каждый из которых запускается в отдельном 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

Деплой на Yandex Cloud

Процесс деплоя полностью автоматизирован через GitHub Actions

Как это работает

  1. Push в main — триггерит пайплайн
  2. Сборка — Maven собирает jar файлы и прогоняет тесты
  3. Docker Hub — собираются образы и отправляются в реестр
  4. Deploy — скрипт заходит на сервер по SSH, обновляет docker-compose и перезапускает контейнеры

Требования к серверу

  • Ubuntu 20.04+
  • Установленный Docker Engine
  • Открытые порты в Security Group (22, 8081, 8083, 8085, 8087, 8088, 8089)

Переменные окружения (Secrets)

Для работы нужны секреты в репозитории GitHub:

Доступ к ВМ

  • YC_HOST
  • YC_USERNAME
  • YC_SSH_PRIVATE_KEY

Docker Registry

  • DOCKER_USERNAME
  • DOCKER_PASSWORD

База данных

  • DB_NAME
  • DB_USER
  • DB_PASSWORD

Безопасность

  • JWT_SECRET
  • JWT_EXPIRATION

Тестирование

Автоматические тесты

При каждом пуше в репозиторий запускаются Unit-тесты


Локальный запуск

  • Установить докер
  • Создать файл .env с необходимыми переменными окружения
  • Запустить команду
docker compose up -d --build

API Документация

Документация 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#/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors