← All projects
JER-TEAM · 2024–2025 · Live
RoySpins
Front-end Developer
Live casino and sports product for JER-TEAM — lobby, promo landings, auth, cashier on Angular 18 + GraphQL.
Angular 18NgRxApollo GraphQLTypeScriptKeystoneJSngx-translatePWASumsub

Context
JER-TEAM casino with a royal brand. My role: Angular 18 frontend — lobby, locale routing, acquisition landings, auth, cashier, CMS-driven content — in the same family as Wazbee and Welle.
Problem
Many promo landings, multi-language routes, game discovery, payments, KYC, Casino ↔ Sport — without slowing the lobby or splitting into one-off apps.
Decisions & tradeoffs
- Locale-prefixed routes (`/:lang/...`) instead of separate apps per market.
- Apollo GraphQL + Keystone instead of ad-hoc REST for categories/promos — CMS and product data stay queryable.
- Dedicated acquisition landing routes instead of hacking campaign pages into the lobby — campaigns ship without rewriting the shell.
- NgRx for session/UI; Material/Bootstrap for dense forms — consistent dialogs across desktop and mobile.
What I built
- Lobby UX: sidebar, welcome bonus hero carousel, category filters (Hot / Popular / Live / Roy’s Choice), search.
- Casino / Sport mode toggle and lazy-loaded games discovery routes.
- Auth flows: sign-up, sign-in, terms, confirmation, password reset, locale-aware routing.
- Acquisition landings (welcome, wheel, AskGamblers, seasonal/campaign pages).
- NgRx user/session/UI state; Apollo GraphQL for product data; Keystone-driven categories and promos.
- Cashier-related UI: payment lists/modals, withdrawal requests; Sumsub KYC WebSDK.
- PWA install via Angular service worker; Splide carousels; Material/Bootstrap forms and dialogs.
Outcome
Live at royspins.com with multi-locale routing and campaign landing coverage.