Commit graph

222 commits

Author SHA1 Message Date
Vadym Samoilenko
8ffd6ebaa6 fix(kvytky): combo cards driven by ezy API — no test tariffs, correct prices
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
buildComboCards now uses ezy tariffs as primary source when available.
Static cards are only used for descriptions and as fallback when ezy is down.
This removes test/placeholder cards and fixes mismatched prices from CMS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:56:23 +01:00
Vadym Samoilenko
12cd941da5 fix(kvytky): client-side tariff fallback when static build has no server
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
At Docker build time Next.js renders /kvytky statically before the server
starts, so getTariffs() gets empty array. KvytkyTicketsClient now fetches
/api/tickets/tariffs on mount when serverTariffs is empty.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:50:21 +01:00
Vadym Samoilenko
faff04fab2 fix: use localhost for internal fetches, footer logo hostname, dyvolis tickets
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- revalidatePath + kvytky page: use http://localhost:3000 for server-to-self
  fetches (was using NEXT_PUBLIC_SITE_URL with self-signed HTTPS → Node rejected cert)
- Footer: strip hostname from Payload media URL (same fix as Header)
- DyvoLisTickets: show zone ticket named 'Диво' for individual dyvolis tickets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:47:43 +01:00
Vadym Samoilenko
00612e7d69 fix: logo absolute URL, dyvolis tickets priority, why-section layout, birthday extra CMS items
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- Header: strip hostname from Payload media URL in resolveLogoUrl (was showing IP)
- DyvoLisTickets: prefer 'dyvolis' category over 'dyno' for single tickets
- DyvoLisWhyVisit: narrow accordion (628→480px), remove video max-w cap
- migration 0017: seed 3 extra birthday package items (rows 4-6) so CMS block is editable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:38:41 +01:00
Vadym Samoilenko
fc73909ea4 fix(migration): add section_titles_google_review_url column to home_page
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
ALTER TABLE home_page + _home_page_v to add the new varchar column
for the Google review URL field added to sectionTitles group.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:26:53 +01:00
Vadym Samoilenko
c3274b0bd6 feat(reviews): add CMS field for Google review button URL
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Add googleReviewUrl text field to HomePage.sectionTitles group so editors
can update the Google review link without a deploy. Falls back to the
hardcoded URL when the field is empty.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:22:03 +01:00
Vadym Samoilenko
40ced357df fix(dynozavry): serve hero banner from public PNG + raise media quality
- Copy original lossless PNG to public/images/locations/ as hero bg fallback
  (bypasses Payload WebP compression entirely when CMS has no image)
- Fallback heroBgUrl to static PNG so the banner always renders
- Raise Media collection WebP quality: 82→88 (mobile/tablet), 85→92 (original+desktop)
  Future re-uploads will have noticeably better quality

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:20:17 +01:00
Vadym Samoilenko
ab820f7c99 feat(docker): add Caddyfile for self-signed TLS proxy
Terminates HTTPS on port 443 with self-signed cert, redirects :80 to HTTPS.
Required for Payload admin CSRF (browsers only send Sec-Fetch-Site in secure context).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:14:01 +01:00
Vadym Samoilenko
683ed47795 chore: regenerate payload-types + next-env.d.ts after schema changes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:48 +01:00
Vadym Samoilenko
a226d3a7f8 fix(ui): bump next/image quality to 90, clean up DyvoLis comment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:43 +01:00
Vadym Samoilenko
8b4a9262e2 feat(home-why): support CMS side gallery images in WhyParents
Replace hardcoded video-only VideoSlider with SideSlider that accepts
any images array. If CMS sideGallery images exist, show them without
the play button; otherwise fall back to static video thumbnail with
play button as before.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:38 +01:00
Vadym Samoilenko
af4bd74d67 feat(home): add patternGreen/patternOrange CMS upload fields to birthdayIntro
Allow editors to upload custom background pattern images for the birthday
section cards (green cards and featured orange card) from the CMS admin.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:31 +01:00
Vadym Samoilenko
dfc7cc49b0 feat(docker): add Caddy TLS proxy with self-signed cert, remove traefik
Switch prod setup from traefik (external network) to self-contained
Caddy container that terminates HTTPS at the IP. Self-signed cert is
needed so browsers send Sec-Fetch-Site (only in secure contexts) and
Payload admin cookie auth works over http-by-IP won't.

- Add caddy:2-alpine service with ports 80/443 and Caddyfile mount
- Mount ./certs volume to app (NODE_EXTRA_CA_CERTS) so next/image can
  optimise absolute https://IP media URLs without cert rejection
- Remove traefik-public external network + labels
- Update build arg NEXT_PUBLIC_SITE_URL to https://147.135.209.100
- Add postgres-data/backups/certs to .dockerignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:26 +01:00
Vadym Samoilenko
c3e1edbee7 fix(birthday): reconnect extra items to CMS + fix altanka placeholder
extraItems was simplified to always use FALLBACK_EXTRA_ITEMS in the
previous refactor, breaking CMS editability for Костюмованих ведучих,
Аквагрим, Затишну альтанку. Restore CMS-first logic: use
cmsPackageItems[3+] when available, fallback otherwise.

Replace wrong gallery-shumi-6.webp (DyvoLis topiary arch) with null
so the placeholder SVG shows until a real photo is uploaded via CMS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:17 +01:00
Vadym Samoilenko
00c3548272 fix(dynozavry): fetch heroBackground from locations collection
heroBgUrl was never populated — page.tsx queried only the dinosaur-page
global and didn't read the Location's heroBackground upload field.
Now fetches the locations collection in parallel and passes heroBgUrl to
DinoPageContent, which already handles the conditional hero-bg render.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:12:51 +01:00
Vadym Samoilenko
4b064eee65 refactor(birthday): clean up unused CMS fields and dead variable declarations
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Remove 10 CMS global fields that had data+fallbacks but were never rendered:
workingHours, pricingPackages, entrancePrices, freeInclusions, entertainmentPackages
plus heroCta, packageSectionSubtitle, and their title fields.

In page.tsx: remove TicketCard component, TicketCardData interface, and all
corresponding variable declarations (~80 lines). Simplify extraItems to always
use FALLBACK_EXTRA_ITEMS (removes fragile cmsHasPhotos && length>3 condition).

Fix typo in packageItems defaultValue: 'ДинопаркArk' → 'ДиноПарк'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 13:53:16 +01:00
Vadym Samoilenko
9a2ebd8cc0 fix(dinopage|gallery|birthday): hero bg z-index, gallery padding, altanka image
- DinoPageContent: add isolation:isolate to .hero so z-index:-1 hero-bg
  is visible (was painted behind the page background color)
- Gallery: pad CMS images with static fallbacks when fewer than 9 entries,
  so the slider always shows a full set even if CMS only has 2 photos
- Birthday page: replace null altanka image with gallery-shumi-6.webp placeholder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 13:45:16 +01:00
Vadym Samoilenko
3a44b986bc fix(images): add dynamic remotePattern from NEXT_PUBLIC_SITE_URL
Some checks failed
CI / Type Check (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
Deploy / Build & Push Image (push) Has been cancelled
Deploy / Deploy to VPS (push) Has been cancelled
Payload media served from the deployment host (e.g. http://147.135.209.100)
was blocked by Next.js image optimiser with 400 because the host was absent
from remotePatterns. Now parsed at build time from NEXT_PUBLIC_SITE_URL so
it works for any environment (localhost, IP, or domain) without hardcoding.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 21:18:40 +01:00
Vadym Samoilenko
958de340c1 fix(seed): return numeric IDs from media upload helpers
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Payload 3 + PostgreSQL rejects string IDs for upload field relationships;
helpers were returning String(doc.id) which caused ValidationError on
every location/post create that referenced an already-existing media record.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 20:44:16 +01:00
Vadym Samoilenko
b2e03d1311 feat(media): auto-compress uploaded videos via FFmpeg H.264 CRF 28
On video upload, fires FFmpeg in the background to re-encode to
H.264/AAC with CRF 28 (50-80% size reduction vs phone recordings).
Adds FFmpeg to runner Docker image. Original file is replaced
in-place so URL never changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 13:12:45 +01:00
Vadym Samoilenko
7e592d3af7 feat(birthday): upload fields for why-section videos
Replace text src/poster in whyVideos with media upload pickers so
admins can upload video files directly from the CMS instead of
entering raw URLs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 13:10:59 +01:00
Vadym Samoilenko
04e13097da fix(birthday): show all CMS extra items, remove hardcoded slice(3,6) limit
Some checks failed
CI / Type Check (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
Deploy / Build & Push Image (push) Has been cancelled
Deploy / Deploy to VPS (push) Has been cancelled
extraItems now uses slice(3) without end limit — items 4-N all appear
in the "Також можна додатково замовити" grid instead of being silently dropped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 12:44:10 +01:00
Vadym Samoilenko
83283ed43c feat(home): CMS-managed birthday card background patterns
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Admins can now upload custom pattern images for green and orange
pricing cards via Home Page → День народження → Паттерн зелених/оранжевої карток.
Falls back to static /images/figma/card-pattern-*.png if not set.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 12:39:05 +01:00
Vadym Samoilenko
7371462eab fix(migration): add _home_page_v_version_sections table for versions support
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 12:31:41 +01:00
Vadym Samoilenko
b3837fc412 feat(homepage): sections array — add/remove/reorder/show/hide via CMS
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 12:23:25 +01:00
Vadym Samoilenko
917678e363 fix(admin): fallback adminThumbnail to original URL when tablet size missing
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 12:14:26 +01:00
Vadym Samoilenko
7080b9ba2d feat(admin): use filename as title in Media list to show built-in thumbnail
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 12:06:53 +01:00
Vadym Samoilenko
8e2b79f01f revert(admin): remove MediaThumbnailCell — crashes admin list view
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 11:59:44 +01:00
Vadym Samoilenko
f6712ae8d2 feat(admin): add thumbnail preview in Media list view
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 11:48:51 +01:00
Vadym Samoilenko
c6542873b0 fix(birthday): remove static fallback — respect CMS featured flag
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 11:31:50 +01:00
Vadym Samoilenko
96c08391e1 feat(birthday): filter featured packages on homepage, add payment link label
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-05 11:24:14 +01:00
Vadym Samoilenko
a58ce75f66 fix(news): pass CMS limit to getLatestPosts instead of hardcoded 3
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 10:25:45 +01:00
Vadym Samoilenko
33d6a707ea fix(map): auto-extract src URL from full iframe HTML embed code
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 10:18:57 +01:00
Vadym Samoilenko
1b64b79129 feat(home): birthday section, map embed, and CMS-driven news title/subtitle
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- Add BirthdayPricing section to home page (was missing entirely)
- Add MapSection component rendering Google Maps iframe from CMS embedUrl
- News component now accepts title/subtitle props from CMS sectionTitles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 10:13:13 +01:00
Vadym Samoilenko
97f775afcb fix(migration): 0010 hero_slides — DROP TABLE → CREATE IF NOT EXISTS to preserve data on redeploy
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 17:06:46 +01:00
Vadym Samoilenko
d61d5c87ed fix(cms): remove unused dyvolis-page global, fix docker-compose volume, seed error handling
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- Remove DyvoLisPage global from Payload config (was not connected to website,
  website reads from locations collection instead)
- Fix docker-compose.prod.yml migrate service volume path:
  /app/migrations -> /migrations to match Dockerfile.migrator WORKDIR
- Wrap seed route in try/catch to return proper error instead of silent 500

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 16:48:29 +01:00
Vadym Samoilenko
9ae5852f7b fix(migration): complete 0012 — add version table columns for faq field
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Add missing version_faq_title column to _home_page_v and create
_home_page_v_version_faq_items table; Payload versions: {max:20}
requires both the main table and the versions table to be in sync.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 14:36:23 +01:00
Vadym Samoilenko
b33ec01b16 feat(home): add FAQ section and seed WhyParents items
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- Add FAQ accordion section (FAQ.tsx) after Reviews on home page
- Add faq group field to HomePage global (title + items array)
- Add HomePageFaq types to types/globals.ts
- Seed whyParents.items with 6 items from static fallback texts
- Seed faq with 6 Q&A items about the park
- Migration 0012: create home_page_faq_items table for Payload array field

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 14:29:27 +01:00
Vadym Samoilenko
78e00a4c24 fix(dino): hero image height 100% to always fill section regardless of content length
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:56:33 +01:00
Vadym Samoilenko
a836449976 fix(hero): constrain slider text to 48% width; dino fills full height without maxWidth
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:48:08 +01:00
Vadym Samoilenko
44eb01a9e8 fix(dino): anchor hero image to bottom, fill full section height
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:35:04 +01:00
Vadym Samoilenko
76c487401d fix(hero): replace literal \n in titles; fix hero_slides table schema (varchar id)
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:33:55 +01:00
Vadym Samoilenko
abfc8de91c feat(legal): cookie banner + Ukrainian law references in legal pages
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- CookieBanner: bottom-fixed, stores consent in localStorage,
  links to privacy policy, green brand colors
- Privacy policy + Data processing: replace GDPR as primary
  reference with ЗУ «Про захист персональних даних» № 2297-VI,
  correct article references (ст. 6, 8, 16, 24 Закону),
  supervisory authority: Уповноважений ВРУ з прав людини

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 13:21:01 +01:00
Vadym Samoilenko
dd63759220 fix(legal): larger textarea rows in admin, update date to 01.06.2026
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:15:56 +01:00
Vadym Samoilenko
7332b81c17 chore(migrations): add legal_pages table
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:10:24 +01:00
Vadym Samoilenko
2cf8ec9715 feat(legal): 4 Ukrainian legal pages + footer links + CMS global
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- LegalPages global in Payload CMS (Юридичні сторінки section)
- /privacy-policy, /terms-of-use, /oferta, /data-processing pages
- Legal text pre-filled with contract data (ТОВ ТЕХНОСМАРТ УКРАЇНА,
  ЄДРПОУ 40166430, contacts from contract №20260422)
- Footer: legal links row above copyright
- All pages editable from CMS admin, fallback to hardcoded defaults

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 13:01:38 +01:00
Vadym Samoilenko
028d14ea17 fix(migrations): add background_image_url column to hero_slides table
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 12:56:50 +01:00
Vadym Samoilenko
4547d5aacf feat(cms): connect checkout instructions/terms + thank-you page to CMS
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- CheckoutPage: pass instructions and terms from CMS global to frontend;
  instructions shown above form, terms below button
- ThankYouPage: fetch title/message/contactPhone/contactEmail from CMS;
  contact info shown if set, falls back to hardcoded defaults
- Hero: use backgroundImageUrl text field as fallback for media upload
- Add lexicalToText util for plain-text extraction from Payload Lexical JSON

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:54:29 +01:00
Vadym Samoilenko
6d37d150ef chore(migrations): add home_page_hero_slides table migration
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 12:46:50 +01:00
Vadym Samoilenko
a11d3051b8 fix(hero): use slides prop array instead of SLIDES constant
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 12:42:43 +01:00