Prox OS Internal Docs
PlatformArchitectureRouting

URL And Surface Model

This document is architecture doctrine and roadmap guidance. It does not change

Status

This document is architecture doctrine and roadmap guidance. It does not change current runtime routes, router behavior, database schema, App Store backend, or marketplace implementation.

Current runtime routes such as /app-os/hola, /app-os/pricing, and /app-hub/founder-suite stay registry-driven. Future owner-scoped canonical paths and Store listing paths should be connected through metadata, not by migrating the shell runtime route shape into creator or Store paths.

Surface

A Surface is the generic OS-visible resource that Prox OS can open, install, reference, pin, collect, display, or list. It is more general than an app.

Documentation-only sketch:

type SurfaceType =
  | 'app'
  | 'hub'
  | 'collection'
  | 'folder'
  | 'space'
  | 'module'
  | 'external'
  | 'system'

Rules:

RuleMeaning
Marketplace is optionalNot every surface enters the marketplace.
Runtime is optionalNot every surface is runnable.
URL addressability is optionalNot every v1 surface needs to be URL-addressable.
URL is not identityA URL is a route or path binding, not the resource identity itself.
Stable ids mattersurfaceId should be more stable than route strings, slugs, or display titles.

Resource Boundaries

ResourceBoundary
AppA single runnable product surface. It should not contain other apps.
HubA runnable product bundle or workspace that can include apps and internal modules.
CollectionA curated list or editorial playlist. It references apps, hubs, spaces, templates, or links; it owns none.
FolderUser-defined desktop organization for shortcuts and layout. It is not a marketplace product by default.
SpaceA personal, project, or collaboration context with members, permissions, installed surfaces, and data.
ModuleA Hub-internal incubation unit that can later be promoted into an App.
ExternalA URL, SaaS dashboard, repo, file, or outside resource represented inside the OS.
SystemShell-owned or infrastructure surface that is not a marketplace listing by default.

Relationship verbs should stay precise:

ActorVerbTarget
OwnerownsSurface
SpaceinstallsSurface
CollectionreferencesSurface
FoldershortcutsSurface
HubincludesApp or Module

Do not flatten all relationships into recursive nested ownership.

Runtime Route, Creator Canonical URL, Store Listing URL

Prox OS should keep three URL concepts separate.

URL conceptExample routesMeaningRule
Runtime route/app-os/hola, /app-os/pricing, /app-hub/founder-suite, /app-hub/product-studioOpens inside the OS shell.Runtime route groups remain registry-driven; do not migrate /app-os/* to owner canonical paths.
Owner canonical URL/@esmadrider, /@esmadrider/apps/waitlist-pro, /@esmadrider/runtime/os, /@esmadrider/studios/personal-lab, /@esmadrider/datasets/solo-founder-stack, /@esmadrider/library/apps/hola, /@prox-os, /@prox-os/apps/hola, /@prox-os/studios/core-team, /@prox-os/datasets/sampleExpresses ownership, authorship, governance, versioning, and future revenue split identity.The canonical owner prefix is @owner; user and organization distinctions belong to permission, billing, membership, and governance models.
Store listing URL/apps/@esmadrider/waitlist-pro, /apps/@prox-os/holaDiscovery page for a published app owner.Concrete listings include the owner.
Type-level discovery/apps, /datasets, /communityPublic discovery pages for categories.These can remain ownerless because they are not listing aliases.
Disallowed ownerless alias/apps/waitlist-proShort app listing without owner identity.Do not create this default pattern.

Ownerless aliases create unfair name claims, review disputes, and weak creator identity. Official, featured, verified, built-in, and community status should be badges, tags, filters, collections, or curation metadata, not namespace ownership.

Metadata Bridge

Future metadata should bind runtime route, creator path, and Store path without changing current shell routes.

const holaSurface = {
  id: 'hola',
  surfaceType: 'app',
  ownerType: 'organization',
  ownerHandle: '@prox-os',
  runtimeRoute: '/app-os/hola',
  creatorPath: '/@prox-os/apps/hola',
  storePath: '/apps/@prox-os/hola',
  badges: ['official', 'built-in'],
}

const founderSuiteSurface = {
  id: 'founder-suite',
  surfaceType: 'hub',
  ownerType: 'organization',
  ownerHandle: '@prox-os',
  runtimeRoute: '/app-hub/founder-suite',
  creatorPath: '/@prox-os/studios/founder-suite',
  storePath: '/apps/@prox-os/founder-suite',
  badges: ['official', 'built-in', 'incubating'],
}

These are examples only. Do not implement the routes or backend registry from this document alone.

Revenue Split And Ownership

Revenue split requires explicit owner namespace:

Split inputWhy it matters
Hub ownerOwns the bundle or workspace surface.
Included app ownersPrevents bundled apps from losing attribution.
Contributor identitiesSupports future contributor compensation.
Platform feeKeeps platform economics explicit.
Usage-based or weight-based splitAllows fair allocation when multiple surfaces drive value.
Manual split policyHandles negotiated or curated products.
Subscription poolSupports bundle or membership revenue models.

Official, featured, and verified badges are not ownership. Revenue split should bind to canonical owner identity and included surface metadata, not to short URL aliases.

DocumentUse
Hub App ModelHub and module product shape.
App Store SurfacesStore discovery and listing posture.
Space, Desktop, And Window SessionSession, scene, and window boundaries.
App Namespace And Domain StrategyCreator namespaces and future domain direction.
App RegistryCurrent runtime registry facts.
App Contract ViewApp contract and surface metadata direction.

On this page