Demo Outline
- Overview of main apps, concepts & features
- Dive deeper into high value features
- Roadmap & tasks in progress (AirOps, GSCom)
- Xena stats
- Discuss ideas, issues to solve, features, integrations, etc.
Key Features
Origin Admin
- ✓Users + Role Based Access
- ✓Site Management + SSO
- ✓Deployments + Deployment Targets
- ✓Self-Service Sites
Origin App
- ✓Custom Dashboard Components
- ✓Custom Theming Options
- ✓Blocks Library w/ Variants
- ✓AdCash Campaigns
- ✓Free Games - Tournament API + Operator Bonus Integration
- ✓Payload Features - Live Preview, Join Field, etc.
Operator Data Pipeline + Management
- ✓Harvester Integration
- ✓Operator Syncing (Admin --> App)
- ✓Operator Data Override (Admin & App Level)
- ✓Operator Sync Management
- ✓Operator Blocks
AirOps Integration
- ✓Shareable AirOps Utility
- ✓More Robust Content Creation
- ✓NFOLB
- ✓Guide Site (?)
High Level Overview Diagram
GSCom Migration
Migrated 445 pages, 619 blog posts, 182 reviews, 192 operators, 40k+ media into the Origin framework. The project produced a fully functional PR deployment site with content rendering, visual theming, and a reusable migration engine that can be applied to future WordPress-to-Origin conversions.
Migration Plugin (@origin/plugin-migration)
A complete, production-grade Payload CMS plugin that provides:
- Admin Dashboard — 5 custom views (Dashboard, Run Progress, Source Editor, Create Source Wizard, Unresolved Panel)
- ETL Engine — 6-phase pipeline: Authors → Taxonomies → Media → Content → Redirects → Version Records
- Block Mapping Engine — Discovers WP Gutenberg/ACF blocks, suggests Origin equivalents, allows manual override
- Selective Migration — Import individual posts by slug (avoids full 140k-media runs during development)
- Job Queue Integration — Runs as Payload background jobs with cancellation support
- Config Export/Import — Portable source configurations for repeatable migrations
- 3 Collections — MigrationSource, MigrationRun, UnresolvedRelationship
This plugin lives in the Origin monorepo and is available for any future site migration.
Highlights and Key Achievements
- Full migration in <3 weeks — From zero understanding of either codebase to a deployed PR site with 1,100+ pages of content rendering correctly. DISCLAIMER: 1,100+ pages of content in the local site, PR has less for efficiency
- 141,500 media items processed (IN THE LOCAL SITE, PENDING PR SITE TEST) — The media pipeline handles downloading, Sharp processing, and Payload upload at ~350 items/minute. Solved OOM issues at scale (12GB heap, streaming pagination, abort timeouts).
- 19,101 redirects preserved (AGAIN, TESTED IN LOCAL SITE, PENDING PR SITE MIGRATION AND TESTING) — Every /go/ affiliate link and SEO redirect from WordPress works out of the box.
- Block mapping engine — 67+ WordPress blocks automatically mapped to Origin equivalents. Custom transforms written for complex blocks (CTA tables with operator resolution, comparison charts, timelines, review verdicts).
- Zero Origin base modifications — All GamblingSites-specific code is isolated via site mode gating and CSS variable scoping. The default Origin theme/behavior is untouched.
- Admin UI for non-developers — The migration dashboard allows triggering runs, monitoring progress, resolving relationship conflicts, and managing source configurations without touching code.
Lessons Learned
- Media is the bottleneck. A site with 40-140k media items will OOM any naive import. Streaming pagination, per-post-type filtering, and selective mode (import only referenced media) are essential. Future migrations should implement resume/checkpoint for media from day one.
- WP block diversity is the complexity driver. A site with 10 blocks migrates in a day. A site with 76 custom blocks needs 2-3 weeks for transforms alone. The block mapping engine (discover → suggest → confirm → compile) makes this manageable but not instant.
- Payload’s type system catches real bugs at build time. Several issues that would have been silent runtime failures in WordPress (wrong field names, missing relationships, type mismatches) were caught by TypeScript during the Next.js build. This is a genuine quality advantage.
- Turbopack caching is treacherous during development. CSS changes frequently don’t apply until a full restart. This cost significant debugging time. The workaround (inline CSS strings in TypeScript, not .css files) is ugly but reliable.
- Visual parity is the long tail. Getting to 70% parity takes 30% of the effort. Getting from 70% to 95% takes the remaining 70%. Typography, spacing, hover states, responsive breakpoints, and edge cases compound quickly.
Xenacasinos Stats
July Stats for Greece
- ✓1028 users organic search (analytics)
- ✓Average position: 7.1 (search console)
- ✓FTDs: 49 (tableau)
87 FTDs all time!

