Skip to main content

Overview

The timeback.config.json file configures your Timeback integration, defining courses, sensors, and environment-specific overrides.

Location

This file is generated by timeback init during project setup and typically lives in your project root:
my-app
timeback.config.json
package.json
src

Schema

Use the JSON schema for autocompletion and validation:
timeback.config.json

Complete example

timeback.config.json

Root properties

string
required
Display name for your application.
string (URL)
Default Caliper sensor endpoint URL for activity tracking. Can be overridden per-course. See Sensor resolution.
string (URL)
Default LTI launch URL. Can be overridden per-course.
CourseDefaults
Default values applied to all courses.
CourseConfig[]
required
Array of course definitions (minimum 1). See Course properties.
object
Studio-specific configuration.

Course properties

Each course must have either grade or courseCode (or both). All (subject, grade) pairs must be unique, and all courseCode values must be unique.
TimebackSubject
required
Subject area. One of: "Math", "Reading", "Language", "Vocabulary", "Writing", "Science", "Social Studies", "FastMath", "None", "Other".
number
Grade level. -1 for Pre-K, 0 for Kindergarten, 112 for grades, 13 for AP. Required if courseCode is not provided.
string
Unique course identifier (e.g., "MATH-3"). Required if grade is not provided.
string
Course level description (e.g., "Elementary", "AP", "Honors").
string (URL)
Caliper sensor endpoint URL for this course. Overrides the root sensor.
string (URL)
LTI launch URL for this course. Overrides the root launchUrl.
object
Environment-specific course IDs, populated automatically by timeback sync.
CourseMetadata
Course metadata including publication status, goals, and metrics. See Course metadata.
object
Per-environment overrides. See Overrides.

Course metadata

All metadata fields are optional. Metadata set in defaults.metadata is merged into every course.
string
Course classification: "base", "hole-filling", or "optional".
boolean
Whether this course is supplemental to a base course.
boolean
Whether this is a custom course generated for an individual student.
string
Publication state: "draft", "testing", "published", or "deactivated".
string
Contact email for course issues.
string
Primary application identifier.
CourseGoals
Daily learning goals for students in this course.
CourseMetrics
Aggregate course metrics.

Course metadata example

timeback.config.json (course excerpt)

Overrides

Each environment override can contain level, sensor, launchUrl, and metadata. Metadata in overrides is merged with the base metadata — it does not replace it.
timeback.config.json (course excerpt)

Merge behavior

Overrides are merged in this order (highest priority last):
  1. defaults (lowest priority)
  2. Course base values
  3. overrides[env] (highest priority)

Sensor resolution

Each course must have a resolvable sensor. The SDK checks these sources in order:
  1. course.overrides[env].sensor
  2. course.sensor
  3. Root sensor
  4. Derived from launchUrl origin (falls back to course.launchUrl, then root launchUrl)
If no sensor can be resolved, config validation fails.

Next steps

Environment

Environment variables and credentials

Course progress

How totalLessons and masteredUnits drive pctCompleteApp

CLI resources

Push and pull configurations

Events

Caliper event schemas