start
This commit is contained in:
47
README.md
Normal file
47
README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Инвентаризация
|
||||
|
||||
Сервис учёта инвентаря: объекты (инвентарный номер, описание, фото) складываются в ящики (с вложенностью), у каждого объекта и ящика есть QR-код — сканирование обычной камерой телефона открывает публичную страницу с описанием и фото, без установки приложений. Правки защищены простым admin-логином, просмотр — публичный.
|
||||
|
||||
Стек: FastAPI + SQLAlchemy (async) + PostgreSQL, MinIO (S3) для фото, React + Vite + Tailwind на фронте, всё поднимается через Docker Compose.
|
||||
|
||||
## Быстрый старт (локально)
|
||||
|
||||
1. Скопируйте `.env.example` в `.env` и при желании поменяйте пароли/секреты:
|
||||
```
|
||||
cp .env.example .env
|
||||
```
|
||||
2. Поднимите весь стек:
|
||||
```
|
||||
docker compose up -d --build
|
||||
```
|
||||
Первый запуск: поднимутся Postgres и MinIO, применятся миграции (сервис `migrate`), создастся бакет MinIO с публичным доступом на чтение (сервис `minio-init`), затем стартуют `backend` и `frontend`.
|
||||
3. Создайте первого администратора:
|
||||
```
|
||||
docker compose exec backend uv run python -m app.cli --username admin
|
||||
```
|
||||
(спросит пароль интерактивно; логин без прав — без него нельзя добавлять/редактировать объекты и ящики).
|
||||
4. Откройте:
|
||||
- фронтенд — http://localhost:5173 (админка на `/admin/objects`, `/admin/boxes`)
|
||||
- API-документация — http://localhost:8000/docs
|
||||
- консоль MinIO — http://localhost:9001 (логин/пароль — `MINIO_ROOT_USER`/`MINIO_ROOT_PASSWORD` из `.env`)
|
||||
|
||||
Публичные страницы объекта/ящика (`/objects/:id`, `/boxes/:id`) открываются без авторизации — именно на них ведут QR-коды.
|
||||
|
||||
## Разработка
|
||||
|
||||
Исходники `backend/` и `frontend/` смонтированы в контейнеры (см. `docker-compose.override.yml`), оба сервиса перезапускаются на лету (`uvicorn --reload`, `vite`). Изменения в коде подхватываются без пересборки образа; пересборка (`--build`) нужна только при изменении зависимостей (`pyproject.toml`/`package.json`) или Dockerfile.
|
||||
|
||||
Новая миграция после изменения моделей:
|
||||
```
|
||||
docker compose exec backend uv run alembic revision --autogenerate -m "..."
|
||||
docker compose exec backend uv run alembic upgrade head
|
||||
```
|
||||
|
||||
Тесты бэкенда:
|
||||
```
|
||||
docker compose exec backend uv run pytest
|
||||
```
|
||||
|
||||
## Прод-деплой
|
||||
|
||||
Пока не настроен (нет `docker-compose.prod.yml`, реверс-прокси и TLS) — это следующий шаг, когда сервис будет готов выкатывать на сервер с доменом. Тогда потребуется поменять в `.env` `PUBLIC_BASE_URL` и `MINIO_PUBLIC_URL` на реальный домен (они зашиты в QR-коды и ссылки на фото) и добавить реверс-прокси (например, Caddy) для HTTPS.
|
||||
Reference in New Issue
Block a user