Skip to content

Technical Architecture

Version: 1.0 foundational
Scope: Mandatory architecture for FRX Studios products.


General Principle

FRX uses modern, scalable technologies with the lowest reasonable maintenance cost.
The architecture should serve a small product at the beginning, while allowing it to grow later.

Core rule: do not add a new service or layer unless it solves a real problem.


Mandatory Architecture

LayerTechnologyRole
WebsiteCloudflare PagesCompany sites and static frontends
APICloudflare WorkersAPIs, backend tasks, and lightweight functions
DatabaseSupabase PostgreSQLCore data, accounts, rooms, content, leaderboards
AuthSupabase AuthAuthentication and user management
StorageCloudflare R2Files, images, audio, and attachments
CDN / DomainCloudflareDomain, performance, protection, and distribution
EmailCloudflare Email Routing + Gmail / Pro ProviderOfficial email and routing
ClientFlutter + Riverpod + GetX + HiveMobile and web apps, state, and cache
AnalyticsFirebase + GA4 + Cloudflare AnalyticsUsage and performance measurement
CrashesFirebase CrashlyticsCrash reporting
PaymentsPaddle + App StoresPayments and purchases
DocumentationMarkdown + GitHubDocumentation and versions
Wiki / PMNotionInternal knowledge and project management
DesignFigmaDesign and UI work
AI CodingClaude CodeAI-supported development

Product Structure Pattern

Products should be organized by features, not only by file type.
Each feature should keep its screens, services, state, and tests as clear as possible.

Initial example:

text
features/
  gameplay/
  auth/
  multiplayer/
  profile/
  store/
  analytics/

Blur Guess as Reference

Blur Guess uses:

  • Flutter for the client.
  • Cloudflare Workers for the API.
  • Supabase for accounts, data, and Realtime.
  • Durable Object for multiplayer matchmaking.
  • R2 for files such as voice notes.
  • Firebase, GA4, and Cloudflare Analytics for measurement.
  • Crashlytics for crashes.
  • Gemini for dynamic content and stories.

Any new product should start from this logic, not from a random new architecture.


Scaling Rules

Technical scaling should happen only when there is a clear reason such as:

  • real load increase.
  • security need.
  • lower operating cost.
  • complexity harming maintenance.
  • a new product that needs logical separation.

Premature scaling without need adds burden to a small team.