Viewports System
Viewports define where your app displays within the Teachfloor platform.
What is a Viewport?
A viewport is a specific location in the Teachfloor dashboard where your app renders its UI. Each viewport corresponds to a page or section of the platform.
Viewport Structure
Viewports follow a hierarchical naming pattern:
Code
Example: teachfloor.dashboard.course.detail
teachfloor: Platform namespacedashboard: Surface where the view renderscourse: Resource being vieweddetail: View type
Available Viewports
Quick Reference Table
| Viewport | Page | Path Pattern | Common Use Cases |
|---|---|---|---|
| Course Management | |||
teachfloor.dashboard.course.list | Course listing | /:org/courses | Course directory widgets, filters, quick actions |
teachfloor.dashboard.course.detail | Course detail | /:org/courses/:id | Course analytics, notes, supplementary materials |
teachfloor.dashboard.course.module.list | Module list | /:org/courses/:id/modules | Module overview, navigation tools |
teachfloor.dashboard.course.module.detail | Module detail | /:org/courses/:id/modules/:id | Module tools, notes, progress tracking |
teachfloor.dashboard.course.element.detail | Element detail | /:org/courses/:id/modules/:id/elements/:id | Element annotations, supplementary content |
teachfloor.dashboard.course.assessment.list | Assessment list | /:org/courses/:id/assessments | Assessment overview, quiz management |
teachfloor.dashboard.course.progress.detail | Course progress | /:org/courses/:id/progress | Progress tracking, completion status |
teachfloor.dashboard.course.calendar.detail | Course calendar | /:org/courses/:id/calendar | Schedule view, deadline tracking |
teachfloor.dashboard.course.member.list | Course members | /:org/courses/:id/directory | Student list, member management |
| Community | |||
teachfloor.dashboard.community.overview | Community home (cross-channel feed) | /:org/community | Cross-channel feed widgets, suggested content, digest tools |
teachfloor.dashboard.community.channel.detail | Single channel page | /:org/community/:channelId | Social features, engagement tools, moderation |
teachfloor.dashboard.community.post.detail | Community post detail | /:org/community/:channelId/posts/:postId | Post sidebars, reaction tools, translation |
teachfloor.dashboard.community.member.list | Community members | /:org/community/:channelId/members | Member profiles, networking tools, search |
| Settings | |||
teachfloor.dashboard.settings.general.detail | General settings | /:org/settings/general | Organization-wide integrations, preferences |
teachfloor.dashboard.settings.customization.domain.detail | Customization · Domain | /:org/settings/customization/domain | Domain configuration widgets, DNS helpers |
teachfloor.dashboard.settings.customization.appearance.detail | Customization · Appearance | /:org/settings/customization/appearance | Theme tools, brand previews |
teachfloor.dashboard.settings.customization.smtp.detail | Customization · SMTP | /:org/settings/customization/smtp | Email-delivery diagnostics |
teachfloor.dashboard.settings.customization.checkout.detail | Customization · Checkout | /:org/settings/customization/checkout | Checkout experiments, payment tweaks |
teachfloor.dashboard.settings.customization.login.detail | Customization · Login | /:org/settings/customization/login | Login-screen branding |
teachfloor.dashboard.settings.customization.labels.detail | Customization · Labels | /:org/settings/customization/labels | Custom terminology tools |
teachfloor.dashboard.settings.customization.achievements.detail | Customization · Achievements | /:org/settings/customization/achievements | Gamification configuration |
teachfloor.dashboard.settings.customization.profile-layout.detail | Customization · Profile layout | /:org/settings/customization/profile-layout | Profile field arrangement tools |
teachfloor.dashboard.settings.team.list | Team management | /:org/settings/team | Team collaboration tools, role management |
teachfloor.dashboard.settings.billing.detail | Billing | /:org/settings/billing | Usage analytics, cost tracking |
teachfloor.dashboard.settings.integration.list | Integrations | /:org/settings/integrations | Third-party integrations, API tools |
teachfloor.dashboard.settings.notification.list | Notifications | /:org/settings/notifications | Custom notification rules, digest tools |
teachfloor.dashboard.settings.custom-field.list | Custom fields | /:org/settings/custom-fields | Custom field management, data import tools |
teachfloor.dashboard.settings.branch.list | Branches | /:org/settings/branches | Branch management, multi-tenant tools |
teachfloor.dashboard.settings.sanction.list | Sanctions | /:org/settings/sanctions | Restriction policies, moderation tooling |
teachfloor.dashboard.settings.import.list | Import data | /:org/settings/import | Bulk import tools, data migration |
teachfloor.dashboard.settings.app.list | Apps | /:org/settings/apps | Installed apps, app marketplace |
| User Management | |||
teachfloor.dashboard.account.detail | User account | /:org/account | Personal tools, user preferences, integrations |
teachfloor.dashboard.profile.detail | User profile | /:org/users/:userId | Profile widgets, member insights |
teachfloor.dashboard.learner.list | Learners | /:org/learners | Learner analytics, bulk actions, import tools |
| Commerce | |||
teachfloor.dashboard.payment.list | Payments | /:org/payments | Payment analytics, invoicing tools |
| Messaging | |||
teachfloor.dashboard.messaging.thread.detail | Thread | /:org/messaging/threads/:thread | Thread sidebars, translation tools, message-level integrations |
| Workspace | |||
teachfloor.dashboard.analytics.detail | Analytics | /:org/analytics | Custom dashboards, exports, alerts |
teachfloor.dashboard.library.detail | Library drive | /:org/library/:drive | Asset browsers, content pickers |
teachfloor.dashboard.automation.list | Automations | /:org/automations | Workflow inspectors, audit tools |
teachfloor.dashboard.getstarted.detail | Get started | /:org/getstarted | Onboarding hints, checklists |
| App Settings | |||
settings | App settings | /:org/settings/apps/:appId | App configuration, user preferences |
Course Management
teachfloor.dashboard.course.list
Displays on: Course listing page
Path: /:organization/courses
Use cases: Course directory widgets, filters, quick actions
Code
teachfloor.dashboard.course.detail
Displays on: Individual course page
Path: /:organization/courses/:courseId
Use cases: Course analytics, notes, supplementary materials
Code
teachfloor.dashboard.course.module.detail
Displays on: Module detail page
Path: /:organization/courses/:courseId/modules/:moduleId
Use cases: Module-specific tools, notes, progress tracking
Code
teachfloor.dashboard.course.element.detail
Displays on: Learning element page (assignments, videos, etc.)
Path: /:organization/courses/:courseId/modules/:moduleId/elements/:elementId
Use cases: Element annotations, supplementary content, tools
Code
teachfloor.dashboard.course.module.list
Displays on: Module list page
Path: /:organization/courses/:courseId/modules
Use cases: Module overview, navigation tools
Code
teachfloor.dashboard.course.assessment.list
Displays on: Assessment list page
Path: /:organization/courses/:courseId/assessments
Use cases: Assessment overview, quiz management
Code
teachfloor.dashboard.course.progress.detail
Displays on: Course progress page
Path: /:organization/courses/:courseId/progress
Use cases: Progress tracking, completion status
Code
teachfloor.dashboard.course.calendar.detail
Displays on: Course calendar page
Path: /:organization/courses/:courseId/calendar
Use cases: Schedule view, deadline tracking
Code
teachfloor.dashboard.course.member.list
Displays on: Course members page
Path: /:organization/courses/:courseId/directory
Use cases: Learner list, member management
Code
Community
teachfloor.dashboard.community.overview
Displays on: Community home (cross-channel feed) — the /community landing page
Path: /:organization/community
Use cases: Cross-channel feed widgets, suggested content, digest tools
The workspace-level home that aggregates posts across every channel the viewer can see. Stripe-style overview rather than feed/list because no single resource is being listed — distinct from community.channel.detail, which targets a single channel.
Code
teachfloor.dashboard.community.channel.detail
Displays on: Single channel page
Path: /:organization/community/:channelId
Use cases: Social features, engagement tools, moderation
The primary resource on this page is the Channel itself — posts are its content — so the viewport follows Stripe's {resource}.detail convention.
Code
teachfloor.dashboard.community.post.detail
Displays on: Individual community post page
Path: /:organization/community/:channelId/posts/:postId
Use cases: Post sidebars, reaction tools, translation, attached references
Code
teachfloor.dashboard.community.member.list
Displays on: Community members directory
Path: /:organization/community/:channelId/members
Use cases: Member profiles, networking tools, search
Code
Settings
teachfloor.dashboard.settings.general.detail
Displays on: General settings page
Path: /:organization/settings/general
Use cases: Organization-wide integrations, preferences
Code
teachfloor.dashboard.settings.customization.domain.detail
Displays on: Customization · Domain subtab
Path: /:organization/settings/customization/domain
Use cases: Domain configuration widgets, DNS helpers
Code
teachfloor.dashboard.settings.customization.appearance.detail
Displays on: Customization · Appearance subtab
Path: /:organization/settings/customization/appearance
Use cases: Theme tools, brand previews
Code
teachfloor.dashboard.settings.customization.smtp.detail
Displays on: Customization · SMTP subtab
Path: /:organization/settings/customization/smtp
Use cases: Email-delivery diagnostics
Code
teachfloor.dashboard.settings.customization.checkout.detail
Displays on: Customization · Checkout subtab
Path: /:organization/settings/customization/checkout
Use cases: Checkout experiments, payment tweaks
Code
teachfloor.dashboard.settings.customization.login.detail
Displays on: Customization · Login subtab
Path: /:organization/settings/customization/login
Use cases: Login-screen branding
Code
teachfloor.dashboard.settings.customization.labels.detail
Displays on: Customization · Labels subtab
Path: /:organization/settings/customization/labels
Use cases: Custom terminology tools
Code
teachfloor.dashboard.settings.customization.achievements.detail
Displays on: Customization · Achievements subtab (visible only when the workspace has the achievements feature enabled)
Path: /:organization/settings/customization/achievements
Use cases: Gamification configuration
Code
teachfloor.dashboard.settings.customization.profile-layout.detail
Displays on: Customization · Profile layout subtab (visible only to owners and admins)
Path: /:organization/settings/customization/profile-layout
Use cases: Profile field arrangement tools
Code
teachfloor.dashboard.settings.team.list
Displays on: Team management page
Path: /:organization/settings/team
Use cases: Team collaboration tools, role management
Code
teachfloor.dashboard.settings.billing.detail
Displays on: Billing settings page
Path: /:organization/settings/billing
Use cases: Usage analytics, cost tracking
Code
teachfloor.dashboard.settings.integration.list
Displays on: Integrations page
Path: /:organization/settings/integrations
Use cases: Third-party integrations, API tools
Code
teachfloor.dashboard.settings.notification.list
Displays on: Notification settings page
Path: /:organization/settings/notifications
Use cases: Custom notification rules, digest tools
Code
teachfloor.dashboard.settings.custom-field.list
Displays on: Custom fields settings page
Path: /:organization/settings/custom-fields
Use cases: Custom field management, data import tools
Code
teachfloor.dashboard.settings.branch.list
Displays on: Branches settings page
Path: /:organization/settings/branches
Use cases: Branch management, multi-tenant tools
Code
teachfloor.dashboard.settings.sanction.list
Displays on: Sanctions settings page (visible only when the workspace has the sanctions feature enabled)
Path: /:organization/settings/sanctions
Use cases: Restriction policies, moderation tooling
Code
teachfloor.dashboard.settings.import.list
Displays on: Import data page
Path: /:organization/settings/import
Use cases: Bulk import tools, data migration
Code
teachfloor.dashboard.settings.app.list
Displays on: Apps settings page
Path: /:organization/settings/apps
Use cases: Installed apps, app marketplace
Code
User Management
teachfloor.dashboard.account.detail
Displays on: User account settings page
Path: /:organization/account
Use cases: Personal tools, user preferences, integrations
Code
teachfloor.dashboard.profile.detail
Displays on: User profile page
Path: /:organization/users/:userId
Use cases: Profile widgets, member insights, supplementary user info
Code
teachfloor.dashboard.learner.list
Displays on: Learners management page
Path: /:organization/learners
Use cases: Learner analytics, bulk actions, import tools
Code
Commerce
teachfloor.dashboard.payment.list
Displays on: Payments page
Path: /:organization/payments
Use cases: Payment analytics, invoicing tools
Code
Messaging
teachfloor.dashboard.messaging.thread.detail
Displays on: Messaging thread page
Path: /:organization/messaging/threads/:threadId
Use cases: Thread sidebars, translation tools, message-level integrations
Code
Workspace
teachfloor.dashboard.analytics.detail
Displays on: Analytics page
Path: /:organization/analytics
Use cases: Custom dashboards, exports, alerts
Code
teachfloor.dashboard.library.detail
Displays on: Library drive page
Path: /:organization/library/:drive
Use cases: Asset browsers, content pickers
Code
teachfloor.dashboard.automation.list
Displays on: Automations page
Path: /:organization/automations
Use cases: Workflow inspectors, audit tools
Code
teachfloor.dashboard.getstarted.detail
Displays on: Get started page
Path: /:organization/getstarted
Use cases: Onboarding hints, checklists
Code
App Settings
settings
Displays on: Your app's settings page
Path: /:organization/settings/apps/:appId
Use cases: App configuration, user preferences
Code
The settings viewport provides a dedicated settings page for your app.
Viewport Context
When your app renders in a viewport, it receives context about the current page:
Code
Available Context
Code
Viewport Matching
How Matching Works
- User navigates to a page (e.g.,
/myorg/courses) - Platform determines viewport (
teachfloor.dashboard.course.list) - Platform finds apps with views matching the exact viewport
- Matching app views are rendered in their designated positions
Viewports require exact string matches. Wildcard patterns are not supported.
Example Scenario
Your app manifest:
Code
User visits course detail page (/org/courses/123):
- ✅
CourseDetailViewrenders (viewport:teachfloor.dashboard.course.detail) - ❌
CourseListViewdoes not render (different viewport)
User visits course list page (/org/courses):
- ✅
CourseListViewrenders (viewport:teachfloor.dashboard.course.list) - ❌
CourseDetailViewdoes not render (different viewport)
User visits app settings page (/org/settings/apps/yourapp):
- ✅
SettingsViewrenders (viewport:settings)
View Component Structure
Basic View Component
Code
Viewport-Aware Component
Code
Dynamic View Loader
Code
Adding Views to Your App
Using CLI
Code
- Select viewport from list
- Enter component name (PascalCase)
- Choose whether to generate example code
Manual Addition
- Create component file:
Code
- Update manifest:
Code
- Implement component:
Code
Removing Views
Using CLI
Code
Manual Removal
- Delete component file
- Remove from manifest:
Code
Next Steps
→ Continue to Extension Kit Components
Additional Resources
- Best Practices - Viewport selection and performance optimization
- Troubleshooting Guide - Viewport issues and debugging
- Examples - Multi-viewport app examples
- Extension Kit Integration