# Multiberry Backend Веб-приложение для хакатона ВТБ. Backend на Rust + Axum, БД — PostgreSQL. ## 🚀 Быстрый старт (macOS) ### 1. Установка зависимостей ```zsh # Установи Homebrew, если еще не установлен /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Установи необходимые инструменты brew install rust just docker sops age # Установи Docker Desktop brew install --cask docker # Запусти Docker Desktop (один раз) open /Applications/Docker.app ``` ### 2. Клонируй репозиторий ```bash git clone ssh://git@gitverse.ru:2222/rorikstr/multiberry-backend.git cd multiberry-backend ``` ### 3. Запусти проект Короч. Чтобы не запускать бесконечное число раз sops exec-env для вскрытия secrets.yaml я придумал выполнять проект на Makefile 2.0: justfile ```bash # Посмотри все доступные команды just # Запусти базу данных just db-up # В новом терминале запусти бэкенд just run # Проверь, что всё работает just health ``` **Ожидаемый результат:** ```json {"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!** 🚀