DocsModulesCMS: manage companion-app content (Challenges, Rewards, Badges, Tasks, Categories, Reports)

CMS: manage companion-app content (Challenges, Rewards, Badges, Tasks, Categories, Reports)

Despite the name, "CMS" doesn't manage your own website or organization — it manages the content of a separate consumer app (challenges, rewards, a task library) across six tabs that write directly to Firebase.

Prerequisites
  • You're signed in and your organization has the "CMS" module activated (Pro or Enterprise plan).
  • Access to the linked Firebase console is helpful but not required — most content can be fully managed from the web UI.
  1. 1

    What "CMS" actually is here

    This module is not a website builder for your own organization — it's the editorial interface for a separate consumer app (habit/fitness tracking). All six tabs — Challenges, Rewards, Badges, Tasks, Categories, Reports — write directly into a Firebase project, visible via the "Firebase Console" link in the top right of the module.

  2. 2

    Challenges: app-wide challenges with an icon and duration

    The "Challenges" tab lists app-wide challenges with duration, number of linked tasks, visibility (Public/Private) and likes. "Add" opens a form with a title, an icon from a fixed set (e.g. dumbbell, droplet, bed), English and German descriptions, duration in days, and "Public"/"Preinstalled" toggles. Saving creates the challenge immediately and opens its detail page — only there can you add individual challenge tasks and an image afterwards.

  3. 3

    Tasks: the app's exercise/habit library

    "Tasks" is the library of individual exercises/habits used inside challenges. Creating one asks for a name (EN/DE, at least one required), a category from the Categories tab, a difficulty (Easy to Expert), and optionally a unit (e.g. reps, minutes, kilometers). Without a category created first, the category dropdown stays empty — so create categories first.

  4. 4

    Categories: icon and default unit for tasks

    Categories group tasks and give them an emoji icon (a free-text emoji field, not a picker) plus an optional default unit that can be suggested for new tasks in that category. Categories are only referenced as a dropdown on the Tasks tab and don't appear anywhere else in the app's navigation.

  5. 5

    Rewards and Badges: same data type, two views

    "Rewards" and "Badges" show the same underlying list, filtered by an internal type field (badges = type "badge"). Both show the unlock condition as field/operator/value (e.g. "streak >= 7") and, for rewards, an optional promo code. Clicking a row opens its detail page to edit title, description, condition, image and promo data.

  6. 6

    Reports: moderate reported content

    "Reports" lists content reported by app users, with a shortened reporter ID, content type, reason, status (Pending/Reviewed/Resolved/Dismissed) and date. Clicking a row opens the detail page where the status can be changed.

Common pitfalls
  • "Add" does nothing on Rewards and Badges

    Unlike Challenges, Tasks and Categories, the "Rewards" and "Badges" tabs currently have no working create dialog — the Add button there has no effect. New rewards/badges can only be created directly in the linked Firebase console and then edited here.

  • The module name is misleading

    "CMS" sounds like a website or content builder for your own organization. In reality, the module only manages content for a separate, Firebase-backed consumer app — it has no connection to your organization's own website or to other modules like Knowledgebase.

  • Tasks need a category first

    Without at least one category created on the Categories tab, the category dropdown stays empty when creating a task. Create categories before you try to attach tasks to them.

  • Deleting is immediate and final

    Every delete action (challenge, task, category, reward, badge, report) asks for confirmation once, but then removes the entry from Firebase irreversibly — there's no trash.

Related articles

More articles are coming soon.

Last reviewed on 2026-09-12Couldn't find your answer, or still stuck? Go to support