# О!Клиника — Интерактивный брендбук

Живой цифровой брендбук клиники «О!Клиника» (oclinica.ru).
Формат: **Living Styleguide** — полноценное веб-приложение, где дизайнеры видят все UI-компоненты, блоки и страницы в реальном виде, а также могут создавать и сохранять экспериментальные элементы.

---

## Стек технологий

| Слой       | Технология                  |
|------------|-----------------------------|
| Frontend   | Next.js (App Router)        |
| Backend    | NestJS                      |
| База данных| PostgreSQL                  |
| ORM        | Prisma                      |
| Стилизация | CSS Modules / Tailwind CSS  |
| Шрифт      | Fira Sans (Google Fonts)    |

---

## Структура монорепозитория

```
oclinica-brandbook/
├── apps/
│   ├── web/          # Next.js — фронтенд брендбука
│   └── api/          # NestJS — REST API
├── packages/
│   └── tokens/       # Дизайн-токены (цвета, типографика) — shared
├── docs/             # Проектная документация
│   ├── BRANDBOOK_SCOPE.md
│   ├── SPRINTS.md
│   └── decisions/    # ADR — Architecture Decision Records
├── .env.example
├── docker-compose.yml
└── README.md
```

---

## Быстрый старт (локальная разработка)

### Требования
- Node.js >= 20
- pnpm >= 9
- Docker (для PostgreSQL)

### 1. Клонировать репозиторий

```bash
git clone <repo-url>
cd oclinica-brandbook
```

### 2. Установить зависимости

```bash
pnpm install
```

### 3. Настроить окружение

```bash
cp .env.example .env
# Отредактировать .env — указать DATABASE_URL и другие переменные
```

### 4. Запустить PostgreSQL через Docker

```bash
docker-compose up -d
```

### 5. Применить миграции Prisma

```bash
cd apps/api
pnpm prisma migrate dev
pnpm prisma db seed  # опционально — тестовые данные
```

### 6. Запустить проект

```bash
# Из корня монорепозитория
pnpm dev
# web: http://localhost:3000
# api: http://localhost:3001
```

---

## Переменные окружения

Создайте `.env` в корне на основе `.env.example`:

```env
# База данных
DATABASE_URL="postgresql://user:password@localhost:5432/brandbook"

# API
API_PORT=3001
API_URL=http://localhost:3001

# Web
NEXT_PUBLIC_API_URL=http://localhost:3001
```

---

## Git-workflow

### Ветки

| Ветка         | Назначение                                      |
|---------------|-------------------------------------------------|
| `main`        | Стабильный production-ready код                 |
| `develop`     | Интеграционная ветка, основа для спринтов       |
| `sprint/N`    | Ветка текущего спринта (например `sprint/2`)    |
| `feature/xxx` | Конкретная фича или компонент                   |
| `fix/xxx`     | Исправление бага                                |

### Процесс работы

```
main ← develop ← sprint/N ← feature/component-name
```

1. Новую задачу начинаем с ветки от `sprint/N`:
   ```bash
   git checkout develop
   git checkout -b feature/hero-block
   ```
2. Коммитим по конвенции (см. ниже)
3. Открываем PR в `sprint/N` (или напрямую в `develop` для мелких правок)
4. В конце спринта `sprint/N` мержится в `develop`
5. После тестирования `develop` мержится в `main` и деплоится

### Конвенция коммитов (Conventional Commits)

```
<type>(<scope>): <описание на русском или английском>

feat(colors): добавлена цветовая палитра primary
fix(button): исправлен hover-стейт для ghost-кнопки
docs(readme): обновлена инструкция по запуску
refactor(card): вынесен компонент DoctorCard
style(typography): выровнены размеры заголовков
chore(deps): обновлена версия Prisma
```

Типы: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`

---

## Деплой

### Production (сервер)

```bash
# На сервере
pnpm build
pnpm start
```

### Docker (опционально)

```bash
docker-compose -f docker-compose.prod.yml up -d
```

> Подробности деплоя — в `docs/deployment.md` (создаётся в ходе разработки)

---

## Структура базы данных (схема Prisma)

Основные модели:

- `Component` — экспериментальный компонент (name, html, css, status, author)
- `Page` — экспериментальная страница (name, blocks[], status)
- `Block` — блок страницы (name, componentId, order)

---

## Документация

| Файл                       | Содержание                          |
|----------------------------|-------------------------------------|
| `docs/BRANDBOOK_SCOPE.md`  | Полный состав брендбука             |
| `docs/SPRINTS.md`          | План спринтов                       |
| `docs/decisions/`          | Архитектурные решения (ADR)         |

---

## Команда

| Роль              | Участник           |
|-------------------|--------------------|
| Дизайн + контент  | О!Клиника          |
| Разработка        | совместно с ИИ     |

---

*Проект разрабатывается итеративно. Документация обновляется в ходе спринтов.*
