application public active Verified 2026-04-11

TwinView

Property digital twin and inspection application for provider-agnostic capture jobs, authenticated capture-job source assets, processing-run history, WebODM-backed drone processing, explicit processing handoff state, self-hosted panorama tours, room-level walkthrough entry links, Matterport imports, external 3D pipelines, share links, field QA, TwinView-owned customer accounts, and authenticated customer scan delivery.

Documentation Map

What It Is

Property digital twin and inspection application for provider-agnostic capture jobs, authenticated capture-job source assets, processing-run history, WebODM-backed drone processing, explicit processing handoff state, self-hosted panorama tours, room-level walkthrough entry links, Matterport imports, external 3D pipelines, share links, field QA, TwinView-owned customer accounts, and authenticated customer scan delivery.

Architecture

Owners: property-platform

Source repos: PlatformApplications/TwinView

Dependencies: topolo-auth

Repo shape

  • PlatformApplications/TwinView/apps/
  • PlatformApplications/TwinView/package-lock.json
  • PlatformApplications/TwinView/package.json
  • PlatformApplications/TwinView/packages/
  • PlatformApplications/TwinView/topolo.cloudcontrol.json

Runtime Surfaces

Hosts:

https://twinview.app https://api.twinview.app
twinview-api

Config: PlatformApplications/TwinView/apps/api/wrangler.toml

Main: src/index.ts

Routes: workers.dev or asset-only surface

twinview-web

Config: PlatformApplications/TwinView/apps/web/wrangler.toml

Main: not declared

Routes: workers.dev or asset-only surface

API Reference

Coverage: curated

Source: PlatformApplications/TopoloDocs/src/content/public/applications/twinview.mdx

Source exists in repo: yes

Canonical TwinView coverage now lives in the docs application.

App API page: /reference/apps/topolo-twinview

This system currently relies on a curated or README-derived contract surface instead of a source-controlled OpenAPI spec.

Auth and Permissions

Depends on Topolo Auth: yes

Service IDs:

srv_twinview

API key scopes

annotations.read

View annotations and pinned notes

Resource pattern: none

annotations.write

Create and manage annotations and pinned notes

Resource pattern: none

capture_jobs.read

View capture jobs and field status

Resource pattern: none

capture_jobs.write

Create and manage capture jobs and schedules

Resource pattern: none

dashboard.read

View TwinView dashboards and portfolio summaries

Resource pattern: none

inspections.read

View inspection tasks and issue status

Resource pattern: none

inspections.write

Create and manage inspection tasks and issue status

Resource pattern: none

integrations.read

View Matterport and external integration metadata

Resource pattern: none

integrations.write

Manage Matterport and external integration metadata

Resource pattern: none

properties.read

View properties and site records

Resource pattern: none

properties.write

Create and update properties and site records

Resource pattern: none

reports.read

View TwinView reporting and portfolio summaries

Resource pattern: none

settings.read

View TwinView workspace settings

Resource pattern: none

settings.write

Manage TwinView workspace settings

Resource pattern: none

share_views.read

View public and client share configuration

Resource pattern: none

share_views.write

Manage public and client share configuration

Resource pattern: none

twins.publish

Publish or archive twin share views

Resource pattern: none

twins.read

View published and draft twins

Resource pattern: none

twins.write

Create and update twin records

Resource pattern: none

units.read

View units and subspaces

Resource pattern: none

Service permissions

annotations:read, annotations:write, capture_jobs:read, capture_jobs:write, dashboard:read, inspections:read, inspections:write, integrations:read, integrations:write, properties:read, properties:write, reports:read, settings:read, settings:write, share_views:read, share_views:write, twins:publish, twins:read, twins:write, units:read

Data Ownership

d1

Binding: DB

Target: 05bd77a2-5028-4d97-b8dd-e9ef22715a2c

Environment: default

Source: PlatformApplications/TwinView/apps/api/wrangler.toml

r2

Binding: ASSETS

Target: twinview-assets

Environment: default

Source: PlatformApplications/TwinView/apps/api/wrangler.toml

Queues / Cron / Workflows

Queue bindings:

  • JOBS -> twinview-jobs

Cron triggers

No cron triggers were detected.

Workflow signals

  • JOBS -> twinview-jobs

Environment Variables and Bindings

Environment variables:

ALLOWED_ORIGINS APP_ORIGIN ASSET_PUBLIC_BASE_URL AUTH_BASE_URL MAGIC_LINK_EMAIL_FROM

All wrangler bindings

  • DB (d1) -> 05bd77a2-5028-4d97-b8dd-e9ef22715a2c
  • ASSETS (r2) -> twinview-assets
  • JOBS (queue) -> twinview-jobs

Deployments

Deployment environments: default only or not declared

Routes: workers.dev or Pages-only delivery

Observability enabled: no explicit setting found

Wrangler surfaces

  • PlatformApplications/TwinView/apps/api/wrangler.toml -> twinview-api
  • PlatformApplications/TwinView/apps/web/wrangler.toml -> twinview-web

Build and deploy commands

  • build — PlatformApplications/TwinView/apps/api/package.json :: tsc -p tsconfig.json
  • deploy — PlatformApplications/TwinView/apps/api/package.json :: wrangler deploy
  • deploy:dry-run — PlatformApplications/TwinView/apps/api/package.json :: wrangler deploy --dry-run --outdir .wrangler/build
  • build — PlatformApplications/TwinView/apps/web/package.json :: tsc -p tsconfig.json && vite build
  • preview — PlatformApplications/TwinView/apps/web/package.json :: vite preview
  • build — PlatformApplications/TwinView/package.json :: npm run build -w @twinview/shared && npm run build -w @twinview/api && npm run build -w @twinview/web
  • build:field-android — PlatformApplications/TwinView/package.json :: cd apps/field-android && ANDROID_HOME=${ANDROID_HOME:-$HOME/Library/Android/sdk} ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT:-$HOME/Library/Android/sdk} ./gradlew assembleDebug
  • build:field-ios — PlatformApplications/TwinView/package.json :: xcodebuild -project apps/field-ios/TwinViewField.xcodeproj -scheme TwinViewField -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO build
  • build — PlatformApplications/TwinView/packages/shared/package.json :: tsc -p tsconfig.json
  • build — PlatformApplications/TwinView/packages/topolo-auth-client/package.json :: tsup src/index.ts --format esm,cjs --dts

Failure Modes

  • Neither OpenAPI nor README-derived interface detail was found.

Debugging Runbooks

Start with these entrypoints:

  • PlatformApplications/TwinView/apps/api/wrangler.toml
  • PlatformApplications/TwinView/apps/web/wrangler.toml
  • PlatformApplications/TopoloDocs/src/content/public/applications/twinview.mdx
  • PlatformApplications/TwinView/apps/api/package.json
  • PlatformApplications/TwinView/apps/web/package.json
  • PlatformApplications/TwinView/package.json
  • PlatformApplications/TwinView/packages/shared/package.json
  • PlatformApplications/TwinView/packages/topolo-auth-client/package.json

Change Log / Verification

Lifecycle: active

Last verified: 2026-04-11

Any code change to this system is expected to update the canonical docs in PlatformApplications/TopoloDocs and refresh the verification date.