4f1b611065
- README.md: стек, структура monorepo, git-workflow, быстрый старт - docs/BRANDBOOK_SCOPE.md: полный состав цифрового брендбука - docs/SPRINTS.md: план 12 недельных спринтов - .gitignore: node_modules, .env, .next, .DS_Store, .claude Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
206 lines
6.2 KiB
Markdown
206 lines
6.2 KiB
Markdown
# О!Клиника — Интерактивный брендбук
|
|
|
|
Живой цифровой брендбук клиники «О!Клиника» (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) |
|
|
|
|
---
|
|
|
|
## Команда
|
|
|
|
| Роль | Участник |
|
|
|-------------------|--------------------|
|
|
| Дизайн + контент | О!Клиника |
|
|
| Разработка | совместно с ИИ |
|
|
|
|
---
|
|
|
|
*Проект разрабатывается итеративно. Документация обновляется в ходе спринтов.*
|