Rest API vtb hackaton multibank
Find a file
2025-11-05 17:41:24 +03:00
src (feat) added handler 2025-11-05 17:30:50 +03:00
tests (refactor) more clean architecture 2025-11-05 00:10:18 +03:00
.gitignore (feat) updated to extend application 2025-11-04 18:36:49 +03:00
.sops.yaml compose.yaml, secrets.yaml, .sops.yaml flake.nix 2025-11-03 21:25:56 +03:00
Cargo.lock (feat) added handler 2025-11-05 17:30:50 +03:00
Cargo.toml (feat) added handler 2025-11-05 17:30:50 +03:00
compose.yaml compose.yaml, secrets.yaml, .sops.yaml flake.nix 2025-11-03 21:25:56 +03:00
flake.lock (config) flake.nix updated to fixing NixOS openssl issues 2025-11-04 19:16:43 +03:00
flake.nix (refactor) more clean architecture 2025-11-05 00:10:18 +03:00
justfile (config) updated secrets and added requests to Cargo.toml 2025-11-04 19:08:40 +03:00
README.md removed comments 2025-11-04 01:22:26 +03:00
secrets.yaml (config) added env to urls of banks api 2025-11-05 17:41:24 +03:00

Multiberry Backend

Веб-приложение для хакатона ВТБ. Backend на Rust + Axum, БД — PostgreSQL.

🚀 Быстрый старт (macOS)

1. Установка зависимостей

при условии что docker, sops, age уже установлены

just - это Makefile 2.0

brew install just

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

rustup --version
cargo --version

# если cargo ругается
rustup default stable

# если же нет, все прекрасно, curl и rustup уже сделали свое дело

2. Клонируй репозиторий

git clone ssh://git@gitverse.ru:2222/rorikstr/multiberry-backend.git
cd multiberry-backend

3. Запусти проект

Короч. Чтобы не запускать бесконечное число раз sops exec-env для вскрытия secrets.yaml я придумал выполнять проект на Makefile 2.0: justfile

# Посмотри все доступные команды
just

# Запусти базу данных
just db-up

# В новом терминале запусти бэкенд
just run

# Проверь, что всё работает
just health

Ожидаемый результат:

{"status":"Database connection is successful."}

Готово! Бэкенд работает на http://localhost:3000

📋 Основные команды

Команда Описание
just run Запустить бэкенд в dev режиме
just db-up Поднять PostgreSQL
just db-down Остановить PostgreSQL
just db-reset Пересоздать БД (удалит все данные!)
just build Собрать релизную версию
just test Запустить тесты
just health Проверить здоровье API
just db-logs Показать логи БД
just stop Остановить всё

Больше информации: just --list

🔐 Секреты и переменные окружения

Все секреты (пароли, API ключи) хранятся в зашифрованном файле secrets.yaml.

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

  • just команды автоматически расшифровывают secrets.yaml перед запуском

Если нужно отредактировать секреты (добавить новый API ключ и т.д.):

sops secrets.yaml

🛠️ Разработка

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

.
├── src/
│   └── main.rs          # Основной код приложения
├── Cargo.toml           # Зависимости Rust
├── Cargo.lock           # Зафиксированные версии зависимостей
├── compose.yaml         # Описание Docker контейнера с PostgreSQL
├── secrets.yaml         # Зашифрованные секреты (в Git, не редактируй вручную!)
├── .sops.yaml           # Конфигурация sops (управление ключами)
├── justfile             # Команды проекта
└── README.md            # Этот файл

Workflow разработки

  1. Создай фича-ветку:

    git checkout -b feature/my-feature
    
  2. Запусти проект:

    just db-up
    just run
    
  3. Внеси изменения в src/main.rs

  4. Тесты:

    just test
    
  5. Push и создай Pull Request

Troubleshooting

"Connection reset by peer" при запуске

БД еще инициализируется. Подожди 5-10 секунд и попробуй снова:

just run

"password authentication failed"

Вероятно, в secrets.yaml неверный пароль. Напиши Wave.

Docker Desktop не запускается

Убедись, что Docker Desktop открыт:

open /Applications/Docker.app
just db-logs      # Логи БД
docker ps         # Список запущенных контейнеров

Happy coding! 🚀