- B1: Next.js 15 + Payload CMS 3.0 + Postgres 16, ESLint, Prettier, Husky, Vitest - B2: 9 collections, 6 globals, 12 Page Builder blocks, access control, slugify/revalidate hooks - B3: ezy.com.ua payments, Binotel HMAC webhook, leads API, Telegram bot, Resend email, rate limiting - B4: Tariffs collection with ezy API sync (cron + manual), dynamic pricing source-of-truth - B5: 13 test files covering unit libs and all API routes - B6: Dockerfile multi-stage, docker-compose.prod.yml, nginx.conf SSL, GitHub Actions CI/CD, health endpoint - B7: docs/admin-guide-ua.md (marketer guide), docs/deploy.md (VPS instructions), README quickstart Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
59 lines
2 KiB
Markdown
59 lines
2 KiB
Markdown
# Shumiland
|
|
|
|
Website for Shumiland entertainment park — Next.js 15 + Payload CMS 3.0 + PostgreSQL 16.
|
|
|
|
## Quickstart (dev)
|
|
|
|
```bash
|
|
# 1. Install dependencies
|
|
pnpm install
|
|
|
|
# 2. Copy env and fill in values
|
|
cp .env.example .env
|
|
|
|
# 3. Start database
|
|
docker compose up postgres -d
|
|
|
|
# 4. Run dev server
|
|
pnpm dev
|
|
```
|
|
|
|
Open [http://localhost:3000/admin](http://localhost:3000/admin) to access the CMS admin.
|
|
|
|
On first run, Payload will prompt you to create an admin user.
|
|
|
|
## Commands
|
|
|
|
| Command | Description |
|
|
| ---------------- | --------------------------------- |
|
|
| `pnpm dev` | Start dev server with hot reload |
|
|
| `pnpm build` | Production build |
|
|
| `pnpm start` | Start production server |
|
|
| `pnpm lint` | ESLint check |
|
|
| `pnpm typecheck` | TypeScript check |
|
|
| `pnpm test` | Run tests |
|
|
| `pnpm format` | Prettier format |
|
|
| `pnpm seed` | Seed initial admin user + globals |
|
|
|
|
## Project structure
|
|
|
|
```
|
|
src/
|
|
├── app/api/ # API routes (leads, tickets, binotel, health, revalidate)
|
|
├── collections/ # Payload CMS collections (Pages, Blog, Tariffs, Leads, Orders, ...)
|
|
├── globals/ # Payload globals (Header, Footer, HomePage, SiteSettings, ...)
|
|
├── blocks/ # Page Builder blocks (Hero, Gallery, LeadForm, PricingBlock, ...)
|
|
├── lib/ # Integrations (ezy, binotel, telegram, resend, rateLimit, ...)
|
|
└── access/ # Access control helpers
|
|
tests/
|
|
├── unit/ # Unit tests (lib functions)
|
|
└── api/ # API route tests
|
|
docs/
|
|
├── admin-guide-ua.md # CMS guide for marketers (Ukrainian)
|
|
└── deploy.md # VPS deployment instructions
|
|
```
|
|
|
|
## Docs
|
|
|
|
- [Admin guide (UA)](docs/admin-guide-ua.md) — for marketers, no technical knowledge required
|
|
- [Deploy guide](docs/deploy.md) — VPS setup, secrets, CI/CD, backup/restore
|