From 66b987d706f55183edbfd4edbac87be9cdc2d39f Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Wed, 13 May 2026 11:00:11 +0100 Subject: [PATCH] vault backup: 2026-05-13 11:00:11 --- 05 Aimpress LTD/Shumiland/Shumiland.md | 185 +++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 05 Aimpress LTD/Shumiland/Shumiland.md diff --git a/05 Aimpress LTD/Shumiland/Shumiland.md b/05 Aimpress LTD/Shumiland/Shumiland.md new file mode 100644 index 0000000..35aaa3c --- /dev/null +++ b/05 Aimpress LTD/Shumiland/Shumiland.md @@ -0,0 +1,185 @@ +--- +name: "Shumiland" +client: Aimpress LTD +status: active +server: aimpress +tech: [Next.js 16, Payload CMS 3, PostgreSQL 16, Docker, Traefik] +local_path: /Users/ai_leed/Documents/Projects/Shumiland +repo: https://git.ai-impress.com/Aimpress/Shumiland.git +deploy: "ssh aimpress → /opt/03-business/shumiland → git pull + docker compose build + up" +url: https://shumi.ai-impress.com +tags: [shumiland, nextjs, payload-cms, docker, ukraine, children-park] +created: 2026-05-13 +last_commit: 2026-05-13 +port: 3000 +--- + +# Shumiland — Сайт дитячого парку + +Сайт для дитячого розважального парку «Шуміленд» (Умань, Україна). +Fullstack Next.js + Payload CMS з PostgreSQL. Деплой через Docker Compose + Traefik на сервері Aimpress. + +> [!info] Production +> **URL:** https://shumi.ai-impress.com +> **Admin:** https://shumi.ai-impress.com/admin +> **Server:** `ssh aimpress` → `57.128.160.249:1220` (ubuntu) +> **App dir:** `/opt/03-business/shumiland/` + +## Tech Stack + +- **Frontend:** Next.js 16, React 19, TypeScript, Tailwind CSS v4 +- **CMS:** Payload CMS 3 (адмін-панель, колекції, globals) +- **Database:** PostgreSQL 16 (Docker volume `shumiland-postgres-data`) +- **Media:** локальний volume `/app/media` (mapped `shumiland-media-uploads`) +- **Package manager:** pnpm 11 +- **Process/deploy:** Docker Compose + Traefik (TLS через Cloudflare) +- **Fonts:** Montserrat (основний), Poppins (допоміжний) + +## Architecture + +``` +Browser + └── Traefik (shumi.ai-impress.com) → shumiland-app:3000 + ├── / (Next.js frontend) + │ ├── / → Hero, Locations, Reviews, Video, WhyParents sections + │ ├── /lokatsii → список локацій + │ ├── /lokatsii/dyvolis → сторінка ДивоЛіс + │ ├── /kvytky → сторінка квитків + │ ├── /blog → блог + │ ├── /dni-narodzhennia → дні народження + │ └── /grupovi-vidviduvannia → групові відвідування + └── /admin (Payload CMS) +``` + +## Server + +| | | +|---|---| +| **SSH alias** | `ssh aimpress` | +| **IP / Port** | `57.128.160.249:1220` | +| **User** | `ubuntu` | +| **App dir** | `/opt/03-business/shumiland/` | +| **Compose file** | `docker-compose.prod.yml` | +| **Env file** | `.env.production` (на сервері, не в git) | +| **Logs** | `docker logs shumiland-app --tail=50` | +| **DB volume** | `shumiland-postgres-data` | +| **Media volume** | `shumiland-media-uploads` | + +## Deployment + +```bash +# 1. Локально: push змін +git push origin main + +# 2. На сервері +ssh aimpress +cd /opt/03-business/shumiland + +# 3. Pull нового коду +git pull origin main + +# 4. Rebuild + restart (zero-downtime через Traefik) +docker compose -f docker-compose.prod.yml build app +docker compose -f docker-compose.prod.yml up -d --force-recreate app + +# 5. Перевірити +docker logs shumiland-app --tail=20 +``` + +> [!warning] git branch +> Локально — гілка `main`. На сервері — перемкнуто на `main` (раніше було `master`). +> Завжди `git pull origin main`. + +## Environment Variables (.env.production на сервері) + +| Variable | Value | +|---|---| +| `DATABASE_URL` | `postgresql://shumiland:***@shumiland-postgres:5432/shumiland` | +| `PAYLOAD_SECRET` | (у файлі на сервері) | +| `NEXT_PUBLIC_SITE_URL` | `https://shumi.ai-impress.com` | +| `NODE_ENV` | `production` | + +> [!tip] Credentials +> Детальні креди — в `[[Credentials]]` (не в iCloud). + +## Key Files + +| File/Dir | Purpose | +|---|---| +| `src/app/(frontend)/` | Усі frontend-сторінки | +| `src/components/sections/` | Секції (Hero, Gallery, WhyParents, VideoSection, DyvoLis…) | +| `src/components/ui/` | UI-компоненти (BtnPrimary, AccordionItem, Container…) | +| `src/components/layout/` | Header, Footer | +| `src/collections/` | Payload CMS колекції | +| `public/images/` | Статичні зображення | +| `docker-compose.prod.yml` | Продакшн Docker Compose | +| `.env.production` | Змінні середовища (лише на сервері) | + +## Useful Commands + +```bash +# SSH +ssh aimpress + +# Переглянути статус контейнерів +docker ps --filter name=shumiland + +# Логи +docker logs shumiland-app --tail=50 -f + +# DB backup вручну +docker exec shumiland-postgres pg_dump -U shumiland shumiland | gzip > backup.sql.gz + +# Зайти в контейнер +docker exec -it shumiland-app sh + +# Payload migrations (з контейнера) +pnpm payload migrate +``` + +## Pages + +| Page | URL | +|---|---| +| Головна | `/` | +| Локації (список) | `/lokatsii` | +| ДивоЛіс | `/lokatsii/dyvolis` | +| Квитки | `/kvytky` | +| Блог | `/blog` | +| Дні народження | `/dni-narodzhennia` | +| Групові відвідування | `/grupovi-vidviduvannia` | +| Admin CMS | `/admin` | + +## Integration: ezy.com.ua (Білетна каса) + +Деталі інтеграції — в `[[Шумиленд касса]]`. + +- **Activity key:** `fda5a0acfe1dad42867ea88dbe13008a10c391f2` +- **Partner key:** у `~/.secrets/Credentials.md` +- **Endpoint тарифів:** `GET https://www.ezy.com.ua/ipay/default/get-partner-tariff?activity=...` +- **Endpoint оплати:** `POST https://www.ezy.com.ua/ipay/pay/partner-pay` +- **Редирект:** на url з відповіді (Monobank) + +--- + +## Sessions + +### 2026-05-13 — DyvoLis page + first deploy +**Asked:** Реалізувати сторінку ДивоЛіс по двом Figma-дизайнам, запушити в git і задеплоїти на aimpress. +**Done:** +- Завантажив дизайн через Figma MCP (ноди 3:77 та 4:205) +- Скачав Figma-ассети до `public/images/dyvolis/` (hero-cat.png, gallery-1–4.jpg, video-thumb.jpg) +- Створив секції: `DyvoLisHero`, `DyvoLisGallery`, `DyvoLisWhyVisit`, `DyvoLisTickets` +- Нова сторінка `/lokatsii/dyvolis` +- Нода 4:205 (BtnPrimary) — вже існувала в проекті, покрита +- Фікс `.gitignore`: `*.png/jpg/jpeg` → `/*.png/jpg/jpeg` (root-only) +- Push на `main`, git pull на aimpress, `docker compose build + up --force-recreate` +- Сервер: `ssh aimpress` → `/opt/03-business/shumiland/` + +--- + +## Change Log + +| Date | Changed | +|---|---| +| 2026-05-13 | DyvoLis location page: Hero, Gallery, WhyVisit, Tickets sections; fix .gitignore |