Skip to content

Playupi.com

MVP Documentation for the web gaming platform.

Playupi is a web gaming platform that aggregates browser games from external brokers (and eventually first-party developers) into a single destination with ranking, discovery, analytics, and monetization.

Documentation Index

DocumentDescription
ArchitectureTech stack, services, repos, directory structure, data flows
DatabaseSchema, ERD, Prisma models, indexes, partitioning, migrations
Game SourcingWhere games come from: brokers, iframes, builds, and future dev portal
Exploration & RankingHow games move from discovery to ranked, rotation queues, thresholds
Data ModelEvents, metrics, KPIs, tags, and how they’re computed
Events PipelineHow events flow from browser to storage to aggregated metrics
API ReferencePublic and admin API endpoints, request/response examples, data types
FrontendPages, components, layout, responsive behavior, interactions
Visual IdentityColors, typography, shape language, animations, effects, accessibility
Admin DashboardCatalog management, filters, game admin, bulk operations
SEOURL structure, meta tags, structured data, Open Graph, sitemap, Core Web Vitals
SecurityIframe sandboxing, auth, rate limiting, input validation, CSRF, privacy
ScalingInfrastructure phases, free tiers, database scaling, cost projections
Deployment GuideFull deployment instructions for every phase — manual, scripted, and AI-assisted
Decisions & TODOsApplied design decisions and open questions

Core Concepts

  • Games are played inside iframes. The platform never hosts game code directly.
  • Ranking is data-driven and computed separately per surface (Home, category) and per platform (desktop, mobile).
  • Exploration is a controlled exposure system for new or experimental games that haven’t yet collected enough data to be ranked.
  • Events are the foundation of all metrics. Every interaction is tracked, stored, and aggregated into KPIs.
  • Admin Dashboard uses a single filterable catalog view rather than multiple fixed pages.

Game Lifecycle

Import/Create --> Draft --> Visible + Exploration --> Ranked
|
Hidden
  1. A game is created (manually or via bulk import) in Draft state
  2. Once all requirements are met, it can be set to Visible
  3. Visible games enter Exploration to collect initial data
  4. After reaching the unique-player threshold, the game becomes Ranked