97 lines
3.9 KiB
Markdown
97 lines
3.9 KiB
Markdown
# МОНИКИ — платные услуги
|
|
|
|
Сайт и CMS платных медицинских услуг КДЦ МОНИКИ: каталог услуг и врачей, запись на приём, акции, новости, личный кабинет пациента и оплата через СБП.
|
|
|
|
Репозиторий: [Moniki_uslugi](https://git.myunion.pro/Alex/Moniki_uslugi) на [git.myunion.pro](https://git.myunion.pro/).
|
|
|
|
Текущая версия: **v1.0.0** (см. [CHANGELOG.md](CHANGELOG.md)).
|
|
|
|
## Что внутри
|
|
|
|
Монорепозиторий `pnpm` с двумя приложениями Next.js 15:
|
|
|
|
| Пакет | Назначение |
|
|
| --- | --- |
|
|
| `apps/web` | Публичный сайт (`:3000`): каталог, врачи, акции, новости, запись, личный кабинет |
|
|
| `apps/cms` | Админка Payload CMS 3 (`:3001`): контент, медиа, пользователи, настройки |
|
|
| `packages/shared` | Общие типы и утилиты |
|
|
|
|
База данных — PostgreSQL. Локально можно поднять через `docker-compose.yml`.
|
|
|
|
### Сайт
|
|
|
|
- Каталог услуг и прайс, специальности, карточки врачей
|
|
- Два филиала: КДЦ МОНИКИ (Щепкина) и Реутов
|
|
- Акции и новости
|
|
- Главные баннеры: картинка или видео (воспроизведение по клику)
|
|
- Онлайн-запись на приём
|
|
- Документы (в т.ч. договор на платные услуги)
|
|
- Мультиязычность: русский, английский, белорусский, таджикский, киргизский, китайский (`next-intl`)
|
|
- Личный кабинет пациента
|
|
|
|
### CMS
|
|
|
|
- Коллекции: услуги, врачи, специальности, филиалы, баннеры, акции, новости, документы, медиа, пользователи
|
|
- Глобальные настройки сайта (контакты, реквизиты, тексты)
|
|
- Загрузка изображений и видео
|
|
- Сид-скрипты прайса, врачей, баннеров и акций
|
|
|
|
### Интеграции (через переменные окружения)
|
|
|
|
- СБП — оплата
|
|
- Resend — почта
|
|
- SMS-провайдер — уведомления
|
|
|
|
Секреты в репозиторий **не входят**. Реальные логины, пароли, ключи API и строки подключения хранятся только в локальных `.env` / `.env.local` (они в `.gitignore`).
|
|
|
|
## Быстрый старт
|
|
|
|
Нужны Node.js 20+, pnpm 10 и PostgreSQL 16.
|
|
|
|
```bash
|
|
pnpm install
|
|
cp apps/cms/.env.example apps/cms/.env
|
|
cp apps/web/.env.example apps/web/.env.local
|
|
# Заполните DATABASE_URI и PAYLOAD_SECRET своими значениями
|
|
pnpm --filter @moniki/cms generate:types
|
|
pnpm --filter @moniki/cms generate:importmap
|
|
pnpm seed
|
|
pnpm dev
|
|
```
|
|
|
|
- Сайт: http://localhost:3000
|
|
- CMS: http://localhost:3001/admin
|
|
|
|
Локальную PostgreSQL:
|
|
|
|
```bash
|
|
docker compose up -d postgres
|
|
```
|
|
|
|
Учётные данные для локальной разработки создаёт `pnpm seed`. Они не публикуются в этом README.
|
|
|
|
## Версии
|
|
|
|
Теги SemVer: `vMAJOR.MINOR.PATCH`. История — в `CHANGELOG.md`.
|
|
|
|
```bash
|
|
git tag -l
|
|
git checkout v1.0.0
|
|
```
|
|
|
|
## Структура
|
|
|
|
```
|
|
apps/web публичный сайт
|
|
apps/cms Payload CMS
|
|
packages/shared общее
|
|
docker-compose.yml PostgreSQL для разработки
|
|
```
|
|
|
|
## Что не коммитится
|
|
|
|
- `.env`, `.env.local` и любые файлы с секретами
|
|
- `node_modules`, сборки `.next`
|
|
- загруженные медиа CMS (`media/`, `uploads/`)
|
|
- сгенерированные `payload-types.ts` и `importMap.js`
|