Skip to content

Latest commit

 

History

History
259 lines (212 loc) · 11 KB

File metadata and controls

259 lines (212 loc) · 11 KB

💸 Проект "Умный Бюджет"

Добро пожаловать в монорепозиторий проекта, реализуемого в рамках проектного практикума от Т-Банка.

Система реализована на микросервисной архитектуре с использованием Python (FastAPI) и C# (.NET 8), а также фронтенда в стилистике Т-Банка без логотипа на React.


🧩 Архитектура проекта

Каждый сервис отвечает за отдельную бизнес-область и может разворачиваться независимо.

Сервис Язык Назначение
Frontend TypeScript (React) Веб-интерфейс пользователя
Authentification Python (FastAPI) Аутентификация, JWT, JWKS, refresh токены
Transactions C# (ASP.NET Core) Управление транзакциями
Classification Python (FastAPI) Классификация транзакций
Budget C# (ASP.NET Core) Управление бюджетом и лимитами
Goals Python (FastAPI) Финансовые цели и прогресс
Logs C# (ASP.NET Core) Централизованный сбор логов
Notification Python (FastAPI, Celery) Отправка email, push и SMS уведомлений
Shared Python + .NET Общие библиотеки, модели и утилиты
Infra Docker + K8s Инфраструктура, CI/CD, мониторинг

📁 Структура репозитория

.
├── services/
│   ├── authentification/
│   ├── transactions/
│   ├── classification/
│   ├── budget/
│   ├── goals/
│   ├── logs/
│   └── notification/
│
├── frontend/               
│   ├── public/
│   ├── src/
│   │   ├── app/
│   │   ├── features/
│   │   │   ├── budget/      # Экран бюджета
│   │   │   ├── dashboard/   # Главный экран
│   │   │   ├── goals/       # Экран целей
│   │   │   ├── settings/    # Экран настроек
│   │   │   └── transactions/   # Экран транзакций
│   │   └── shared/             # Общие экраны и компоненты
│   └── package.json
│
├── shared/                 # Общие библиотеки (Python / .NET)
│   ├── python/
│   └── dotnet/
│
├── infra/                  # Инфраструктура, Docker, CI/CD, мониторинг
│   ├── docker/
│   ├── k8s/
│   ├── ci-cd/
│   └── compose/
│
├── docker-compose.yml       # Основной compose для dev-окружения
├── .env.example             # Пример переменных окружения
└── README.md                # Этот файл

🚀 Быстрый старт (локальная разработка)

1. Клонировать репозиторий

git clone https://github.com/asedletskii/SmartBudget.git cd SmartBudget

2. Скопировать и настроить переменные окружения

cp .env.example .env

3. Запустить инфраструктуру

docker compose -f infra/compose/docker-compose.yml up -d

4. Запустить все микросервисы

docker compose up --build

5. Запустить фронтенд

Для запуска фронтенда потребуется Yarn версии 1.x.x (проверялась только 1.22.22) (инструкция по установке)

Проверить версию Yarn можно командой: yarn --version

Алгоритм запуска

  1. Выполните команду для перехода в папку frontend cd frontend

  2. Выполните команду для установки зависимостей проекта: yarn install

  3. Выполните команду для запуска проекта: yarn start

Фронтенд будет доступен по адресу: http://localhost:3000


После сборки сервисы будут доступны по адресам:

Сервис URL
✅ Authentification http://localhost:8000/api/v1/docs
✅ Classification http://localhost:8001/api/v1/docs
✅ Goals http://localhost:8002/api/v1/docs
🟡 Notification http://localhost:8003/api/v1/docs
❌ Budget http://localhost:8004/swagger
❌ Transactions http://localhost:8005/swagger
❌ Logs http://localhost:8006/swagger
✅ Frontend http://localhost:3000

🖥️ Frontend (Web UI)

Веб-интерфейс реализован на React + TypeScript в стилистике Т-Банка без использования логотипов.

✨ Основные возможности UI

  • ✅ Авторизация: вход пользователя, работа с JWT-токеном
  • ✅ Главный экран: отображение статистики:
    • топ 5 целей по проценту выполнения
    • сумма доходов/расходов за последний месяц
    • процент расхода бюджета 
  • ✅ Транзакции:
    • ✅ список транзакций
    • ✅ фильтрация
    • ✅ поиск
    • ✅ просмотр деталей
    • ✅ ручная перекатегоризация
  • ✅ Бюджет (в процессе доработки):
    • дашборд (факт VS план)
    • просмотр лимитов по категориям
  • ✅ Цели:
    • создание
    • редактирование
    • фильтрация целей
    • отслеживание прогресса конкретной цели
    • установка меток(тэгов)
  • ✅ Настройки:
    • ✅ управление активными сессиями
    • ✅ установка срока жизни refresh-токена
    • ✅ смена пароля
    • ✅ настройка уведомлений
    • ✅ настройка категорий бюджета
  • ✅ Уведомления: отображение алертов и событий в центре уведомлений

⚠️ Некоторые экраны/сценарии могут работать в демонстрационном режиме (используя файлы frontend/src/features/*/api/*.mock.ts).

🧭 Навигация и структура

Фронтенд построен по feature-based структуре:

  • frontend/src/features/ — экраны и бизнес-логика по доменам (budget, dashboard, goals, settings, transactions)
  • frontend/src/shared/ — переиспользуемые компоненты, экраны авторизации, store, утилиты и слой API
  • frontend/src/app/ — глобальные провайдеры

🔌 Интеграция с API

Фронтенд взаимодействует с микросервисами через REST API:

  • /api/v1/authentification — регистрация, логин, обновление токена
  • /api/v1/goals — создание, редактирование, получение и фильтрация целей
  • /api/v1/transactions — получение и перекатегоризация транзакций
  • /api/v1/notifications — получение списка уведомлений
  • /api/v1/push — пуш-уведомления
  • /api/v1/budget — создание, получение информации о бюджете и лимитах
  • /api/v1/dashboard — агрегированная статистика (реализуется через API Gateway)
  • /api/v1/settings — управление настройками пользователя (сессии, пароль, параметры безопасности)

⚙️ Технологии проекта

🐍 Backend (Python)

  • FastAPI
  • SQLAlchemy
  • Pydantic
  • ARQ
  • Redis
  • PostgreSQL

💠 Backend (.NET)

  • .NET 8 / ASP.NET Core
  • Entity Framework Core
  • PostgreSQL

💻 Frontend

  • React
  • TypeScript
  • Material UI
  • Redux toolkit
  • React Router

☁️ Инфраструктура

  • ✅ Docker / Docker Compose
  • ❌ Kubernetes - (в планах)
  • ✅ Nginx (reverse proxy)
  • ❌ Prometheus + Grafana для мониторинга - (в планах)
  • ✅ Kafka (очереди сообщений)
  • 🟡 GitHub Actions (CI/CD) - (в процессе)

🧩 Общие модули и инфраструктура

Папка Назначение
shared/ Общие библиотеки и модели (Python и .NET)
infra/ Docker, Kubernetes, CI/CD, мониторинг
frontend/ Веб-интерфейс приложения
services/ Все микросервисы системы

🧠 Принципы архитектуры

  • Каждый микросервис полностью автономен.
  • Общение между сервисами — через брокер сообщений Kafka.
  • Общение между сервисами и фронтендом — через REST API.
  • Все токены подписываются централизованно через JWKS из Auth.
  • Логи собираются централизованно через Logs Service.
  • Общие компоненты вынесены в shared/
  • В продакшн — деплой через CI/CD и Kubernetes.

👥 Команда проекта

Участник Роль Ответственность
Артем Горшков Backend developer (C#) Transactions, Budget, Logs
Дмитрий Костерин (Телеграм) Backend developer (Python) Classification, Goals, Notification, Authentification
Антон Седлецкий (Телеграм) Frontend developer UI, интеграция API
Софья Евланова Analityc Анализ эффиктивности и работоспособности приложения

💬 Контакты

Если у вас есть предложения или баг-репорты — создайте Issue в GitHub
или свяжитесь с командой разработки.