Skip to content

MaksChocomint/finops-portal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FinOps Portal

Полноценное fullstack-приложение (React + Go + PostgreSQL) для портфолио с вымышленной продуктовой доменной моделью и приближенной к production архитектурой.

Полный функционал

1. Аутентификация и сессия

  • Вход по email/паролю (POST /auth/login)
  • JWT-токен для доступа к защищенным API
  • Получение данных текущего пользователя (GET /auth/me)
  • Хранение сессии на frontend (token + user в localStorage)
  • Выход из аккаунта с очисткой локальной сессии

2. Роли и контекст пользователя

  • Поддержка ролей: admin, manager, analyst, developer
  • Role-aware сводка “My Day” (например, счетчики задач учитывают роль владельца)
  • Демо-аккаунты для быстрого входа

3. Главный дашборд

  • KPI-блок с ключевыми показателями:
    • задачи в работе
    • просроченные задачи
    • открытые тикеты
    • непрочитанные алерты
  • Обновление данных с backend после действий пользователя

4. Метрики и аналитика

  • Таблица “План vs Факт” по продуктам и метрикам (GET /metrics/plan-fact)
  • Просмотр снимков метрик (GET /metrics)
  • Каталог метрик (GET /metrics/catalog) с редактированием:
    • название
    • описание
    • формула
    • единица измерения
  • Сохранение изменений каталога (PATCH /metrics/:code/catalog)

5. Импорт данных метрик

  • Импорт JSON-пакета метрик (POST /metrics/import)
  • Валидация входных строк импорта
  • Upsert логика (повторная загрузка обновляет значение за ту же дату)
  • Логирование статусов импорта (running/success/failed)
  • Просмотр истории импортов (GET /imports)

6. Центр алертов

  • Получение списка алертов (GET /alerts)
  • Пометка алерта как прочитанного (PATCH /alerts/:id/read)
  • Отображение приоритета/серьезности алертов

7. Процессные задачи

  • Просмотр регламентных задач (GET /process-tasks)
  • Смена статуса задачи (todo, in_progress, done)
  • Обновление статуса через API (PATCH /process-tasks/:id/status)

8. Тикетная система

  • Просмотр списка тикетов (GET /tickets)
  • Создание тикета с приоритетом (POST /tickets)
  • Канбан-представление по статусам:
    • open
    • in_progress
    • done
  • Смена статуса тикета (PATCH /tickets/:id/status)
  • Комментарии к тикетам:
    • список (GET /tickets/:id/comments)
    • добавление (POST /tickets/:id/comments)

9. Отчеты

  • Экспорт CSV-отчета по метрикам (GET /reports/metrics.csv)
  • Скачивание файла напрямую из UI

10. UX-функции frontend

  • Мультиязычный интерфейс: RU / EN / 中文
  • Переключение темы: light / dark
  • Реактивное обновление блоков после CRUD-операций

11. Инициализация и демо-данные

  • Автоматическое создание схемы БД при запуске API
  • Автоматический seed тестовых данных:
    • пользователи
    • продукты
    • метрики
    • значения и target-данные
    • задачи
    • тикеты и алерты

Технологический стек

  • Frontend: React 18, Vite, TypeScript, Zustand
  • Backend: Go 1.23, Gin, pgx, JWT
  • База данных: PostgreSQL 16
  • Инфраструктура: Docker Compose

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

Frontend (FSD)

  • src/app — инициализация приложения и провайдеры
  • src/pages — страницы-оркестраторы (композиция виджетов)
  • src/widgets — крупные UI-блоки страницы
  • src/entities — доменные сущности и их модели
  • src/shared — переиспользуемая инфраструктура (api, i18n, lib, config)

Backend (слоистая архитектура)

  • cmd/server — точка входа и wiring зависимостей
  • internal/domain — доменные модели и ошибки
  • internal/application — use-case сервисы (бизнес-правила)
  • internal/infrastructure — адаптеры инфраструктуры (PostgreSQL, JWT)
  • internal/interfaces/http — delivery-слой (роутинг, middleware, handlers)
  • internal/db — bootstrap/migrations/seed базы данных

Быстрый запуск (Docker)

  1. Скопировать env:
    cp .env.example .env
  2. Запустить сервисы:
    docker compose up --build
  3. Открыть приложение:
    • http://localhost:4173
  4. Проверить API:
    • http://localhost:8080/health

Демо-доступ

  • admin@finops.local / admin123
  • manager@finops.local / manager123
  • analyst@finops.local / analyst123

Локальная разработка

Backend

cd api
go mod tidy
go run ./cmd/server

Frontend

cd web
npm install
npm run dev

Основные API-эндпоинты

  • POST /auth/login
  • GET /dashboard/my-day
  • GET /metrics
  • POST /metrics/import
  • GET /metrics/catalog
  • PATCH /metrics/:code/catalog
  • GET /metrics/plan-fact
  • GET /imports
  • GET /alerts
  • PATCH /alerts/:id/read
  • GET /process-tasks
  • PATCH /process-tasks/:id/status
  • GET /tickets
  • POST /tickets
  • PATCH /tickets/:id/status
  • GET /tickets/:id/comments
  • POST /tickets/:id/comments
  • GET /reports/metrics.csv

Примечание

  • Схема БД и сидирование выполняются автоматически при запуске API.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors