vault backup: 2026-05-13 11:00:11
This commit is contained in:
parent
09aa48e394
commit
66b987d706
1 changed files with 185 additions and 0 deletions
185
05 Aimpress LTD/Shumiland/Shumiland.md
Normal file
185
05 Aimpress LTD/Shumiland/Shumiland.md
Normal file
|
|
@ -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 |
|
||||
Loading…
Add table
Reference in a new issue