Skip to content

Routing Structure

Document: docs/product/routing-structure.md
Status: Canonical — all new routes, Workers, and surface briefs must conform to this document
Last updated: 2026-04-06
Authority: Tim Rignold, UCCA Inc


Purpose

This document defines the URL routing structure for all RTOpacks surfaces. It has never been formally expressed before this document. All routing decisions going forward are measured against this structure. Any new route that does not conform requires an amendment.


Governing Principles

  1. No enumerable public data URLs. Public routes must not expose patterns that allow bulk traversal of the data corpus. See security-posture.md.
  2. Object identity by code. All five primitive objects are identified in URLs by their canonical code — TGA code for NRT objects, ASQA RTO code for RTOs, UCCA-generated code for general education units.
  3. Auth wall at the product boundary. Everything behind /app/ requires authentication. Everything at the root is marketing or gated entry.
  4. Surface separation. Public site, Workspace Studio, admin panel, and ops console are distinct surfaces with distinct routing namespaces.

Surface Map

Surface Domain Auth Required Primary User
Public site rtopacks.com.au No (marketing) / Yes (product) Prospective RTO clients, general
Workspace Studio my.rtopacks.com.au Yes — L3/L4/L4A RTO staff, operators
Admin panel admin.rtopacks.com.au Yes — L1/L2/L3 UCCA staff, operators
Ops console ops.ucca.online Yes — L1/L2 UCCA internal

Public Site Routes — rtopacks.com.au

Marketing routes (no auth)

Route Description Notes
/ Homepage Product pitch, hero, CTA
/about About RTOpacks
/pricing Pricing and plans
/contact Contact
/login Magic link entry point Redirects to /app on auth
/blog/* Content marketing If implemented

Data object routes — GATED at launch

No public detail pages for any data object are live at launch. The routes below are reserved and will 404 or redirect to the login page until a signed-off SEO strategy determines otherwise.

Reserved route Object Status
/qual/[code] Qualification Reserved — not public at launch
/unit/[code] Unit of Competency Reserved — not public at launch
/skill-set/[code] Skill Set Reserved — not public at launch
/rto/[code] RTO Reserved — not public at launch
/gen-ed/[code] General Education Unit Reserved — not public at launch

Note on URL slugs: - /skill-set/ is preferred over /skillset/ — hyphenated, readable, consistent with AQF terminology - /gen-ed/ is preferred over /general-education/ — concise, not easily confused with TGA URLs - /rto/ is always identified by the 5-digit ASQA RTO code

Activating these routes requires: 1. A completed SEO-01 brief with Tim sign-off 2. An amendment to this document 3. A security review confirming the public surface does not expose enriched data


Workspace Studio Routes — my.rtopacks.com.au

All routes require authentication. Minimum tier: L4A (RTO member).

Entry and navigation

Route Description
/ AppGrid — personalised dashboard, glass icon launcher
/library Training library — browse and search all objects
/courses Course builder — user's saved courses and programs

Object detail routes

Route Description Notes
/qual/[code] Qualification detail Authenticated equivalent of the reserved public route
/unit/[code] Unit of Competency detail Primary focusable object in Studio
/skill-set/[code] Skill Set detail
/rto/[code] RTO detail
/gen-ed/[code] General Education Unit detail

Studio routes

Route Description
/studio Workspace Studio — course/program builder
/studio/[session-id] Active build session
/studio/[session-id]/unit/[code] Unit focused within a build session

Account and settings

Route Description
/settings Account settings
/settings/team Team management (L4 org owners)
/settings/activity Activity log — who has done what (L4 org owners see full team)
/settings/exports Export history

Admin Panel Routes — admin.rtopacks.com.au

All routes require authentication. Minimum tier: L3 (World Operator).

Route Description Minimum tier
/ Admin dashboard L3
/organisations Client org management L3
/contacts Contact CRM L3
/clients Client accounts L3
/compliance Compliance views — qual scope references L3
/radar Radar intelligence module L2
/landscape Landscape intelligence module L2
/interactions Interaction ledger L3
/settings Admin settings L2

Ops Console Routes — ops.ucca.online

All routes require authentication via Cloudflare Access. Minimum tier: L2 (UCCA Staff).

Layer-aware sidebar navigation follows the L1–L4A model. Routes documented in ops console brief (separate from this document).


API Routes

Internal API — internal-api.rtopacks.com.au

The sole access point for rtopacks-db. All routes require auth. No public access.

Route pattern Description
/qual/[code] Qualification data
/unit/[code] Unit of Competency data
/skill-set/[code] Skill Set data
/rto/[code] RTO data
/search Full-text search across NRT objects
/scope/rto/[code] RTO scope of registration
/scope/qual/[code] RTOs delivering a qualification

Stats cache Worker

Route Description
/stats Live ABS/TGA aggregate statistics

Gen Ed API

Separate from internal-api. Accesses microcredentials-db only.

Route pattern Description
/gen-ed/[code] General Education Unit data
/gen-ed/search Search gen-ed corpus

Mobile Behaviour by Surface

Surface Mobile posture
Public site Fully responsive — all marketing routes
Workspace Studio — browse/library Responsive — view library, courses, saved items
Workspace Studio — designer/builder Desktop only — minimum 1280px. Below threshold: graceful degradation message explaining capability requires desktop. User is not locked out — view mode remains available.
Admin panel Desktop preferred — responsive where possible, graceful degradation below 1024px
Ops console Desktop only — internal tool

Graceful degradation message (Workspace Studio designer on mobile):

"The RTOpacks course designer requires a larger screen to work effectively. On this device you can browse your library and review saved courses — to build and edit, please switch to a desktop or tablet."

This message is not a lock-out. The user remains authenticated and can access view-only surfaces.


Route Naming Conventions

  • All routes lowercase, hyphen-separated
  • Object codes used as-is (TGA codes are uppercase — BSBWHS411 — preserved in URLs)
  • No trailing slashes
  • No version prefixes on user-facing routes (/v1/ etc) — versioning is an API concern, not a UI concern
  • Query parameters for search and filter state — not encoded in path segments

Amendment Log

Date Change Authority
2026-04-06 Initial document created — first formal expression of routing structure Tim Rignold