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: Area (dashboard vs public pages)course: Page categorydetail: Specific page
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/members | Student list, member management |
| Community | |||
teachfloor.dashboard.community.post.list | Community posts | /:org/community/:id/posts | Social features, engagement tools, moderation |
teachfloor.dashboard.community.member.list | Community members | /:org/community/:id/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.detail | Customization | /:org/settings/customization | Branding tools, theme extensions |
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.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.learner.list | Learners | /:org/learners | Learner analytics, bulk actions, import tools |
| Commerce | |||
teachfloor.dashboard.payment.list | Payments | /:org/payments | Payment analytics, invoicing tools |
| 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/members
Use cases: Learner list, member management
Code
Community
teachfloor.dashboard.community.post.list
Displays on: Community posts/feed page
Path: /:organization/community/:communityId/posts
Use cases: Social features, engagement tools, moderation
Code
teachfloor.dashboard.community.member.list
Displays on: Community members directory
Path: /:organization/community/:communityId/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.detail
Displays on: Customization settings page
Path: /:organization/settings/customization
Use cases: Branding tools, theme extensions
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.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.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
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