Premium UAE gaming storefront built with modular HTML/CSS/JS (no framework), dynamic JSON-driven content, and optional serverless persistence.
The site is data-driven through JSON sources:
data/site.json: canonical business config (store profile, shipping, VAT, promo rules, emirates, feature flags)data/nav.json,data/footer.json: shared navigation/footer modeldata/content/*.json: section/page contentdata/i18n/en.json,data/i18n/ar.json: UI string dictionariesproducts.json: product catalog + compatibility metadata + SEO fieldsdata/deals.json: deal entries tied toproductIddata/blog/posts.json+data/blog/posts/*.md: dynamic blog index + article content
Runtime loaders in js/core/ fetch these files and render each page.
js/core: app-level data loading + shared layoutjs/pages: per-page render/controllersjs/lib: pricing, security, i18n helpersjs/components: reusable UI components (future expansion)netlify/functions/order-create.js: order creation endpoint with safe demo fallback
/.netlify/functions/order-create
- If backend env vars are present (Supabase/Resend), this can run in server mode.
- Without backend config, checkout falls back to local demo storage and writes a demo outbox entry shown in Admin.
Order schema documentation: data/models/order.schema.json.
Arabic routes are preserved:
/ar/index.html/ar/products.html/ar/checkout.html/ar/contact.html
Pages are RTL and product names remain English from catalog data.
npm run build
npm run validate-assets
npm run audit-links
npm run test:unit
npm run test:e2enpm run build validates critical JSON and regenerates:
sitemap.xmlrss.xml
Netlify remains static publish (publish = ".") with functions under netlify/functions.
Set in Netlify environment variables when ready:
SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYRESEND_API_KEYORDER_NOTIFY_TO
Without these, demo mode remains functional and visible in Admin.