Spiritual Fitness

Track spiritual growth with structured, customizable plans modeled after physical fitness routines. Requires Rock RMS 15+

Overview

Spiritual Fitness is a Rock plugin that helps churches deliver guided devotionals and spiritual disciplines through their website or mobile app. Content can be presented in various formats and organized into flexible, customizable plans.

Modeled after physical fitness routines, each Spiritual Fitness Plan is made up of daily workouts, and each workout contains one or more exercises—like reading a verse, following a guided prayer, or watching a video. Participants can mark exercises as complete, allowing the plugin to track their progress along the way.

Plans can be tailored to fit your ministry's needs. Workouts can be tied to specific dates or made available sequentially, repeated on a daily, weekly, or monthly basis, and include defined start and end dates. While the plugin is highly flexible, effective setup and display require a solid understanding of Rock RMS and Lava.

Key Features

  • Exercise Templates - Define how each exercise is displayed on web and mobile.

  • Fitness Plans - Can be daily, weekly, or monthly, with customizable start and end dates.

  • Workouts - A set of spiritual exercises designed for participants to engage with regularly.

Example

Visual of a user beginning a reading plan, engaging with the content, and marking it complete—all contributing to meeting today's spiritual goal. The colored rings track daily (aqua), weekly (green), and monthly (purple) progress.

Daily Progress Rings: Start, Read, Complete

Installation & Configuration

After installing the plugin from the Rock Shop, a few quick setup steps will get your Spiritual Fitness plugin ready to go.

You can find the plugin by navigating to: Admin Tools > Installed Plugins > Spiritual Fitness

Spiritual Fitness Plugin Button

The Spiritual Fitness interface is managed from a single page designed for quick and easy access to your plans.

  • The left column includes a large orange button that opens a modal for managing Exercise Templates.

  • Below that, you’ll find the category tree, which helps organize your plans into folders.

  • The main panel is where you’ll create and edit both fitness plans and workouts.

The Spiritual Fitness page is designed to help you create and manage fitness plans and workouts.

Creating a Fitness Plan

  1. Add a new Fitness Plan

  2. (Optional) Create a Fitness Plan Category if you want to group similar plans.

  3. After creating the plan, define its key fields in Exercise Templates (covered in the next section).

Adding a new Category

Fitness Plan Settings

A Fitness Plan defines how workouts and exercises are structured and scheduled. The most important setting is the Plan Type, which has three options:

  • Ordered

  • By Date

  • Recurring

Plan Type Options

Ordered

An Ordered plan starts any time and progresses in sequence (Workout 1 → 2 → 3…). There are no specific calendar dates—participants unlock the next workout as they go. Plan Frequency: Daily, Weekly, or Monthly

  • Weekly plans begin on Sunday

  • Monthly plans begin on the 1st of the month

Example: A 7-day program someone can start any day; one new workout unlocks each day after they begin. After you save the plan, you can start adding workouts.

By Date

By Date plans tie each workout to a specific calendar day. Use this when timing matters.

  • Workouts have specific dates, but do not need a strict order.

Example: An Advent devotional where a new workout appears on each day leading up to Christmas.

Recurring

Recurring plans have no assigned dates or order. Instead, a single workout repeats on a schedule (daily, weekly, or monthly).

  • Ideal for simple, habit-building routines like daily reading, prayer prompts, or gratitude journaling.

  • Offers the least customization, by design, to keep the routine simple.

Create/Manage Exercise Plans and Templates

Example scenario: You’re building a Daily Reading plan that includes Scripture, Prayer, and Meditation. You’ll create Exercise Templates so you have fields to enter that content.

Exercise Template: Key Fields

Each Exercise Template defines how a type of exercise is displayed and what data it stores.

  • Name - The template’s name (e.g., “Scripture,” “Prayer,” “Meditation”).

  • Description - A short note about when/why to use this template.

  • Icon (optional) - A visual to represent this exercise in lists.

  • Web Template - Lava-enabled HTML used for web display.

<div>{{ Exercise | Attribute: 'Prayer' }}
{{ Exercise | Attribute: 'Prayer' }}</div>
  • Mobile Template - Lava-enabled XAML or JSON used for mobile display.

<Label Text="{{ Exercise | Attribute: 'Prayer' }}" />
  • Attributes - The content fields you’ll enter (e.g., Scripture Text, Reference, Prayer Text, Meditation Prompt).

Note: Create one template per section—Scripture, Prayer, and Meditation. The screenshot shows a Scripture template with Scripture and Reference attributes.

Adding Workouts

You’ve created your Fitness Plans and Exercise Templates—now add Workouts to the plan.

Add A Workout

  1. Click Add Workout. A modal dialog opens.

  2. Enter the workout details.

    • Ordered (Daily) plans: The Day is already set. You can reorder workouts later if needed.

    • By Date plans: Assign a specific calendar date to the workout.

  3. Click Save to create the workout.

Adding Exercises to a Workout

  1. In the workout modal, open the Add Exercise dropdown and select an existing Exercise Template (e.g., Guided Prayer).

  2. Complete any Attributes that the template exposes (e.g., Scripture, Reference, Prayer text).

  3. Click Save. Repeat to add as many exercises as needed.

You can also:

  • Reuse the same Exercise Template multiple times within one Workout.

  • Include a different number of exercises per Workout.

  • Reorder Exercises within a Workout.

Note: When you’re finished adding or editing exercises, close the modal. Changes are saved automatically as you go.

Displaying Content

The Spiritual Fitness plugin does not ship with a visual block. All rendering is done with Lava, which gives you full control over layout and behavior.

The installed Lava points to a sample Yearly Plan. To display your plan publicly, update the Fitness Plan Id in two places (as shown in the screenshots):

  • Image Source code

Around line 70 you'll find the Image Source. Add your Fitness Plan Id, highlighted by the arrow.
  • Assign Workout Lava

Around Line 96 add your Fitness Plan Id for assign workout.

Lava Details for diving Deeper:

We've included a set of custom Lava filters that make it easier to display content from your Fitness Plans. These filters simplify the process of building dynamic, engaging pages tailored to your needs—whether you’re showing today’s workout, highlighting plan progress, or embedding exercises in a custom layout.

📅 TodaysWorkout Filter

The TodaysWorkout filter returns a WorkoutViewModel for the current workout in a particular Fitness Plan based on today’s date.

% assign workout = 1 | TodaysWorkout:CurrentPerson %} 

{% for exercise in workout.Exercises %} 

  <a href="?exerciseId={{exercise.Id}}" class="btn btn-default"> 

    <i class="fa fa-{{exercise.Icon}}"></i> {{exercise.Name}} 

  </a> 

  {% if exercise.IsComplete %} 

   <i class="fa fa-check"></i> 

  {% endif %} 

  <br /> 

{% endfor %} 

You can also pass a specific date as a second parameter. This allows you to retrieve the workout for a different day instead of using the current date.

{% assign workout = 1 | TodaysWorkout:CurrentPerson, '12/25/2023' %} 

WorkoutStatus Filter

The WorkoutStatus filter works similarly to TodaysWorkout, but instead of using the Fitness Plan Id, it uses the Workout Id to return a WorkoutViewModel.

{% assign workoutId = 1 %} 

{% assign workout = workoutId | TodaysWorkout:CurrentPerson, '12/25/2023' %} 

This is helpful when you’re referencing a specific Workout directly, rather than calculating it based on date or plan.

🧘 ExerciseStatus Filter

The ExerciseStatus filter is used to display the content of an exercise—either the web version or the mobile version, depending on how you're rendering it.

This filter returns an ExerciseViewModel, which includes access to all the content and attributes defined in the Exercise Template.

{% assign exerciseId = PageParameter['exerciseId'] %} 

{% assign exercise = exerciseId | ExerciseStatus:CurrentPerson %} 

{{exercise.Web }} 

<br> 

<a href="/fitnessPlan?completeId={{exercise.Id}}" class="btn btn-primary"> 

  {% if exercise.IsComplete %} 

     Done 

  {% else %} 

     Mark Complete 

  {% endif %} 

</a> 

🏁 CompleteExercise Filter

The CompleteExercise filter marks an exercise as complete for the currently logged-in person. It takes an Exercise Id and creates a completion record.

{% assign completeId = PageParameter['completeId'] %} 

{% if completeId and completeId != '' %} 

    {{ completeId | CompleteExercise:CurrentPerson }} 

{% endif %} 

Use this filter when you want to track progress—such as after someone clicks a "Mark Complete" button or finishes reading the content.

📊 CompletionPercentage Filter

The CompletionPercentage filter takes a Fitness Plan Id and returns the percentage completed by the currently logged-in person.

You can also include an optional second parameter to limit the calculation to a specific number of days.

For example, the following Lava returns the completion percentage for Fitness Plan 5 over the last 30 days:

{{5 | FitnessPlanPercentComplete:CurrentPerson, 30}} 

Wrapping Up

With the Spiritual Fitness plugin in place, you’re ready to build meaningful spiritual experiences from end to end—using Exercise Templates for structured content, Plan Types (Ordered, By Date, Recurring) for flexible scheduling, and Lava (with page parameters) for full control over presentation. Whether you’re creating a short devotional series or a long-term discipleship journey, these tools let you guide participants through intentional, consistent engagement—day by day, workout by workout.

Last updated