App Manifest
The app manifest (teachfloor-app.json) defines your app's metadata, capabilities, permissions, and behavior.
Overview
The manifest is a JSON file at the root of your project:
- Defines app name, description, and version
- Specifies where your app displays (viewports)
- Declares required permissions
- Sets distribution type (public/private)
- Configures post-installation actions
Basic Structure
Here's a minimal manifest:
Code
Complete Manifest Example
Code
Field Reference
Required Fields
id (string)
Unique identifier for your app. Auto-generated during app creation.
Code
Rules:
- Must be unique across all Teachfloor apps
- Cannot be changed after creation
- Automatically generated by CLI
version (string)
Semantic version of your app following semver format.
Code
Rules:
- Must follow
MAJOR.MINOR.PATCHformat - Examples:
1.0.0,2.1.5,0.5.0-beta - Increment when uploading new versions
Versioning Guidelines:
- MAJOR: Breaking changes
- MINOR: New features, backward compatible
- PATCH: Bug fixes, backward compatible
name (string)
Display name shown to users in the marketplace and dashboard.
Code
Rules:
- Maximum 50 characters
- Should be descriptive and unique
- Used in app listings and UI
description (string)
Short description of what your app does.
Code
Rules:
- Maximum 200 characters
- Should clearly explain the app's purpose
- Displayed in marketplace listings
Distribution
distribution_type (string)
Determines how your app is distributed.
Code
Values:
"private": Only your organization can install (default)"public": Listed in marketplace for all organizations
See Deployment Guide for detailed information on private vs public distribution.
UI Extension
ui_extension (object, optional)
Defines where and how your app displays in the platform.
The ui_extension field is optional. Apps without it can function as backend integrations listening to platform events.
views (array)
List of views your app provides.
Code
View Object:
viewport(string): Where the view displays (must be an exact match to an available viewport)component(string): React component name (must match filename without extension)
Viewports require exact string matches. Wildcard patterns are not supported. See Viewports System for available viewports.
permissions_policy (object)
Browser permissions your app needs (microphone, camera, etc.).
Code
Available Permissions:
microphone: Audio inputcamera: Video inputgeolocation: Location accessclipboard-write: Clipboard access
Fields:
- Permission name: Array of allowed origins
purpose: User-facing explanation (required)
Permissions
permissions (array)
Platform permissions your app needs to access Teachfloor resources.
Code
Permission Object:
permission(string): Permission identifierpurpose(string): User-facing explanation of why you need it
Important:
- Only request permissions you actually use
- Provide clear, user-facing explanations
- Users see permission requests during installation
- Write permissions (
*_write) automatically include read access
See Permissions Reference for the complete list of available permissions, their descriptions, and permission hierarchy.
Post-Install Action
post_install_action (object)
Defines what happens after a user installs your app.
Code
Type: Settings Redirect to app settings page:
Code
Type: External Redirect to external URL:
Code
Use Cases:
- Configuration wizard
- Account connection
- Welcome tutorial
- Feature introduction
Manifest Validation
The CLI automatically validates your manifest before upload.
Validation Rules
Required Fields
id,version,namemust be present
Version Format
- Must match semver pattern:
^\d+\.\d+\.\d+(-[\w.]+)?$ - Valid:
1.0.0,2.1.5,1.0.0-beta.1 - Invalid:
1.0,v1.0.0,1.0.0.0
Component Names
- Must be valid React component names
- PascalCase only
- Valid:
MyView,CourseDetailView - Invalid:
myView,my-view,my_view
Viewport Names
- Must match known viewport patterns
- See Viewports documentation
Manual Validation
The manifest is automatically validated when you run:
Code
Managing Manifests
Updating Metadata
Via CLI Commands
Update distribution type:
Code
Add permission:
Code
Remove permission:
Code
Add view:
Code
Remove view:
Code
Manual Editing
- Open
teachfloor-app.jsonin your editor - Make changes
- Save the file
- Run
teachfloor apps startorteachfloor apps upload
The CLI will validate and upload the updated manifest.
Version Management
Once a version is published, it becomes locked and cannot be modified. To release updates, increment the version number and upload again.
See Deployment Guide for complete information on version states, semantic versioning, and deployment process.
Multi-Environment Manifests
Use different manifests for development and production:
Development (teachfloor-app.dev.json):
Code
Production (teachfloor-app.json):
Code
Start with custom manifest:
Code
Next Steps
→ Continue to Viewports System
Additional Resources
- Best Practices - Naming, descriptions, permissions, and versioning guidelines
- Troubleshooting Guide - Common manifest errors and solutions
- Examples - Complete manifest examples
- Permissions Reference
- CLI Commands