Реализация Page и DataCardWidget
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# Armstrong Vision
|
||||
|
||||
Монорепозиторий: **Rails API** (`api/`), **React + Vite** (`frontend/`) и **PostgreSQL**, собранные в один стек через **Docker Compose**. Для повседневных команд используется **Makefile** в корне проекта.
|
||||
|
||||
## Требования
|
||||
|
||||
- [Docker](https://docs.docker.com/get-docker/) и [Docker Compose](https://docs.docker.com/compose/) v2
|
||||
- [GNU Make](https://www.gnu.org/software/make/)
|
||||
|
||||
На Linux обычно достаточно пакетов `docker` / `docker-compose` (или плагин `docker compose`) и `make`.
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
После клонирования репозитория из корня каталога проекта:
|
||||
|
||||
```bash
|
||||
make prepare
|
||||
```
|
||||
|
||||
Команда **`make prepare`** (то же самое, что **`make setup`**) выполняет:
|
||||
|
||||
1. сборку образов (`docker compose build`);
|
||||
2. запуск сервисов в фоне с ожиданием готовности Postgres и API (`docker compose up -d --wait`);
|
||||
3. при старте backend в entrypoint вызывается **`rails db:prepare`** (БД и схема) — **без** `db:seed` (так устроен Rails);
|
||||
4. затем **`make prepare`** отдельно выполняет **`rails db:seed`** в контейнере backend (можно отключить: **`make prepare SEED_ON_PREPARE=0`**);
|
||||
5. во frontend-контейнере при старте выполняется **`npm install`**, затем **`npm run dev`**.
|
||||
|
||||
Команда **`make dev`** сначала делает то же, что **`make prepare`** (включая сиды при `SEED_ON_PREPARE=1`), затем включает поток логов.
|
||||
|
||||
После успешного выполнения:
|
||||
|
||||
| Сервис | Адрес |
|
||||
|----------|--------|
|
||||
| API | <http://localhost:3000> |
|
||||
| Фронтенд | <http://localhost:5173> |
|
||||
| Postgres | `localhost:5432`, БД `app_development`, пользователь `postgres`, пароль `postgres` |
|
||||
|
||||
Остановка стека:
|
||||
|
||||
```bash
|
||||
make stop
|
||||
```
|
||||
|
||||
## Полезные команды
|
||||
|
||||
| Команда | Назначение |
|
||||
|---------|------------|
|
||||
| `make` или `make help` | краткая справка по целям |
|
||||
| `make prepare` / `make setup` | первый запуск: сборка + подъём стека |
|
||||
| `make up` / `make start` | поднять уже собранный стек (с `--wait`) |
|
||||
| `make dev` | как `prepare`, затем поток логов всех сервисов (`Ctrl+C` только выходит из просмотра логов) |
|
||||
| `make restart` | пересборка и перезапуск |
|
||||
| `make logs` | следить за логами |
|
||||
| `make bash` | оболочка в контейнере backend |
|
||||
| `make rails CMD='db:migrate'` | произвольная команда `rails` в backend |
|
||||
| `make db-console` | `psql` в контейнере Postgres |
|
||||
| `make db-seed` | загрузить сиды (`db/seeds.rb`) |
|
||||
|
||||
Таймаут ожидания healthcheck при `up` / `prepare` (секунды, по умолчанию 300):
|
||||
|
||||
```bash
|
||||
make up WAIT_TIMEOUT=600
|
||||
```
|
||||
|
||||
## Сиды
|
||||
|
||||
Демо-данные для таблиц `channels` и `histories` задаются в **`api/db/seeds.rb`**. Загрузка в уже запущенном стеке:
|
||||
|
||||
```bash
|
||||
make db-seed
|
||||
```
|
||||
|
||||
Сиды сделаны идемпотентными: если в `channels` уже есть записи, повторный `db:seed` их не дублирует.
|
||||
|
||||
## Локальная разработка без Docker (опционально)
|
||||
|
||||
Если Postgres установлен на машине, API и фронт можно запускать локально. Переменные для подключения к БД см. в **`Makefile`** (`LOCAL_PG_*`). Кратко:
|
||||
|
||||
```bash
|
||||
cd api && bundle install
|
||||
make local-db-prepare # из корня репозитория
|
||||
make local-server # Rails на :3000
|
||||
```
|
||||
|
||||
Подробнее по целям `local-*` выводит `make help`.
|
||||
|
||||
## Структура репозитория
|
||||
|
||||
```
|
||||
├── Makefile # команды для Docker и локального Rails
|
||||
├── docker-compose.yml # Postgres, backend, frontend
|
||||
├── api/ # Ruby on Rails 8 (API-only)
|
||||
└── frontend/ # React + Vite
|
||||
```
|
||||
|
||||
Дополнительно в подкаталогах могут быть свои README шаблонов фреймворков (`api/README.md`, `frontend/README.md`).
|
||||
|
||||
## Замечания
|
||||
|
||||
- Порт **5432** на хосте занят контейнером Postgres; если локально уже крутится свой PostgreSQL, измените проброс порта в `docker-compose.yml` или остановите локальный инстанс.
|
||||
- Код API и фронтенда монтируется в контейнеры томами: правки на диске сразу видны внутри сервисов (для Rails при необходимости перезапустите процесс вручную; Vite обычно пересобирает сам).
|
||||
Reference in New Issue
Block a user