justfile and README.md
This commit is contained in:
parent
c158d1b140
commit
86007d4e09
2 changed files with 196 additions and 0 deletions
149
README.md
Normal file
149
README.md
Normal file
|
|
@ -0,0 +1,149 @@
|
||||||
|
# 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!** 🚀
|
||||||
47
justfile
Normal file
47
justfile
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
# justfile для проекта
|
||||||
|
|
||||||
|
# ========== КОНСТАНТЫ ==========
|
||||||
|
sops_run := "sops exec-env secrets.yaml"
|
||||||
|
|
||||||
|
# ========== БАЗА ДАННЫХ ==========
|
||||||
|
db-up:
|
||||||
|
@echo "🗄️ Starting PostgreSQL..."
|
||||||
|
@{{sops_run}} 'docker compose up -d'
|
||||||
|
|
||||||
|
db-down:
|
||||||
|
@echo "🛑 Stopping PostgreSQL..."
|
||||||
|
@docker compose down
|
||||||
|
|
||||||
|
db-logs:
|
||||||
|
@docker compose logs -f postgres
|
||||||
|
|
||||||
|
db-reset:
|
||||||
|
@echo "🗑️ Resetting PostgreSQL (deleting all data)..."
|
||||||
|
@docker compose down -v
|
||||||
|
@{{sops_run}} 'docker compose up -d'
|
||||||
|
|
||||||
|
stop:
|
||||||
|
@echo "🛑 Stopping all services..."
|
||||||
|
@docker compose down
|
||||||
|
|
||||||
|
# ========== ПРИЛОЖЕНИЕ ==========
|
||||||
|
run:
|
||||||
|
@echo "🚀 Starting backend in dev mode..."
|
||||||
|
@{{sops_run}} 'cargo run'
|
||||||
|
|
||||||
|
build:
|
||||||
|
@echo "🔨 Building release version..."
|
||||||
|
@{{sops_run}} 'cargo build --release'
|
||||||
|
|
||||||
|
test:
|
||||||
|
@echo "🧪 Running tests..."
|
||||||
|
@{{sops_run}} 'cargo test'
|
||||||
|
|
||||||
|
health:
|
||||||
|
@echo "🏥 Checking health endpoint..."
|
||||||
|
@curl http://localhost:3000/api/health
|
||||||
|
|
||||||
|
# ========== UTILITY ==========
|
||||||
|
[default]
|
||||||
|
list:
|
||||||
|
@just --list
|
||||||
Loading…
Add table
Add a link
Reference in a new issue