Changelog · build cadence
What we shipped, and when.
A public log of every meaningful change to sakal.dev — the platform, the marketing site, the integrations. Honest dates, no flannel.
Blog + use cases (file-based MDX)
contentLong-form content via local MDX — no CMS, no extra infra. Three starter blog posts shipped; use cases ready for first customers.
- MDX-driven /blog with Zod-validated frontmatter
- Three starter posts: company welcome, native Bakong KHQR, Khmer thermal printers
- MDX-driven /use-cases with empty-state CTA inviting founding customers
- Custom MDX components matching site typography (mono code, brand-tinted links)
- Sitemap, llms.txt, and Cmd+K palette updated
Command palette, dark mode, long-tail SEO
platformCmd+K palette across the whole catalog, system-aware dark mode, per-industry sub-pages.
- Per-industry sub-pages under /solutions/[slug]/for/[industry] for SEO long-tail
- Cmd+K command palette searches pages, Products, Solutions, contact channels
- Dark mode with system-aware default, persisted via cookie
- Press kit at /press, public changelog at /changelog
AI-friendly + conversion polish
platformExplicit allow rules for AI crawlers, FAQ schema on the home page, related items on detail pages, sticky mobile CTA.
- AI crawler allow list in robots.txt (GPTBot, ClaudeBot, Perplexity, etc.)
- Home page FAQ section emits FAQPage JSON-LD
- Solution / Product detail pages show 3 related siblings before the final CTA
- Fixed-bottom Talk-to-sales pill on mobile screens
- Route-transition loading skeleton in brand colours
Integrations + assets
integrationReal backend wiring: Brevo email, Telegram bot alerts, Cloudflare Turnstile spam gate, analytics, Open Graph card.
- Contact form delivers via Brevo transactional API + Telegram sales alert
- Newsletter form in the footer adds to a Brevo list
- Cloudflare Turnstile widget + server-side verification
- Cloudflare Web Analytics + Plausible script tags (env-gated)
- Edge-rendered /opengraph-image with brand-colour 1200×630 card
- Testimonials components ready for content
Design pass across all pages
designThree new reusable components and per-page elevations so every page reads as one piece of design.
- New PageHero, SectionDivider, FaqAccordion components
- Listing pages split into Live/Featured + Coming soon bands
- Stronger 'Most popular' treatment on Pricing with pinging accent dot
- Editorial quote moment on About
- Response-time stats on Contact
- Bundle preview chip strip in Solution detail hero
All base pages built
contentSurface complete: Product detail, Services, Contact (with form), About, Built for Cambodia, Pricing, legal, 404.
- Product detail page with Live/Coming-Soon variants
- Services page with offerings, tech stack, engagement models
- Contact page with Zod-validated server action form + channel cards
- About page with origin, four beliefs, three-tier recap, stats
- Built-for-Cambodia deep dive on 7 platform capabilities
- Pricing page with three-tier cards + FAQ
- Privacy + Terms placeholder pages
- Brand-polished 404 page
Hero visual + animation pass
designSculptural platform card replacing the bento grid, scroll-triggered animations, count-up stats.
- Refined hero visual: deep-primary slab → light brand-tinted slab with module strip
- Stats count-up via Motion library when scrolled into view
- Solution / Product card hover shimmer + brand-tinted gradient
- Cambodia capabilities section with KHQR-style pattern overlay
Restructure into Products / Solutions / Services
platformMove from a flat 'modules' model to the three-tier taxonomy.
- Six SaaS Products (Menuy, SakalHR, SakalAccounting, SakalLoyalty, SakalPOS, SakalTicket)
- Seven industry Solutions (3 featured, 4 coming soon)
- Custom Services tier
- Zod-validated content schemas under content/
- Detail page templates for both Products and Solutions
Scaffold + Cloudflare Workers
platformInitial Next.js 16 scaffold, i18n routing, shadcn/ui setup, Cloudflare Workers deployment via OpenNext.
- Next.js 16 with Turbopack + App Router
- next-intl routing (English at /, Khmer at /km)
- shadcn/ui primitives over Tailwind v4
- @opennextjs/cloudflare adapter for Cloudflare Workers
- Cambodia-inspired indigo + red brand tokens