docs: инициализация проекта, структура репозитория и проектная документация
- 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>
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
# О!Клиника — Интерактивный брендбук
|
||||
|
||||
Живой цифровой брендбук клиники «О!Клиника» (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) |
|
||||
|
||||
---
|
||||
|
||||
## Команда
|
||||
|
||||
| Роль | Участник |
|
||||
|-------------------|--------------------|
|
||||
| Дизайн + контент | О!Клиника |
|
||||
| Разработка | совместно с ИИ |
|
||||
|
||||
---
|
||||
|
||||
*Проект разрабатывается итеративно. Документация обновляется в ходе спринтов.*
|
||||
Reference in New Issue
Block a user