multiberry-backend/README.md

154 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Multiberry Backend
Веб-приложение для хакатона ВТБ. Backend на Rust + Axum, БД — PostgreSQL.
## 🚀 Быстрый старт (macOS)
### 1. Установка зависимостей
при условии что docker, sops, age уже установлены
just - это Makefile 2.0
```zsh
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. Клонируй репозиторий
```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!** 🚀