Rock RMS Documentation

repository·develop·Indexed 20 days ago

https://github.com/sparkdevnetwork/rock

Documentation for Rock, an open source CMS, Relationship Management System (RMS), and Church Management System (ChMS). Includes developer guides for the Model Map Builder, AI implementation layers (Provider, Agent, and Automations), Check-in engines (Legacy and v2), and the CMS domain model covering rendering hierarchies, content channels, and audience targeting.

Tokens
295.6K
Snippets
396
Records
1.2K
Agent score
70%

What's inside rockrms

  1. Overview of Core Rock Concepts

    develop

    The Core Documentation covers cross-cutting concepts that recur across multiple domains in the Rock platform. These patterns are used by engineers writing platform code or authors of domain-specific documentation to ensure consistency in areas like entity resolution, caching, and lifecycle management. Key architectural patterns include:

    • Caching: Mechanisms for ItemCache, EntityCache, and ModelCache using save-hook-driven eviction.
    • UI Patterns: The Cascade Picker and Composite Field Type patterns for complex form inputs.
    • Data Modeling: Defined Type/Value patterns, PersonAlias semantics, and Entity Reference resolution.
    • Lifecycle Management: The RockContext unit-of-work model and EntitySaveHook<TEntity> patterns.
    • Extensibility: Obsidian Block lifecycles and Lava Data Object conventions.
  2. Overview of Rock Lava Implementation Tests

    develop
    These tests validate the Rock Lava implementation, which is built upon the Fluid Templating Framework. Fluid is an open-source .NET template engine that implements the Liquid template language. The primary goal of these tests is to ensure that Lava templates render correctly within the Rock environment.
  3. Overview of the Engagement domain

    develop

    The Engagement domain in Rock provides tracking systems to monitor person-level growth and ministry activity. It is composed of four primary subsystems:

    1. Streaks: Binary tracking of patterns (did/did-not) using a bitmap model.
    2. Steps: Discipleship pathway tracking via Step Programs.
    3. Achievements: Gamified badges based on specific criteria.
    4. Outreach Toolbox: Relational ministry tools focused on Contacts and Touchpoints.

    Note: The Learning Management System (LMS) shares this domain under Rock/Model/Lms/ and operates as a related but distinct subsystem.

  4. Overview of Lava templating language

    develop

    Lava is Rock's templating language, derived from Liquid. It allows administrators to write markup templates that interact with Rock entities, custom data, and computed values using merge fields.

    Key Engine Information: Rock currently supports two engines during a multi-year migration process:

    • Fluid: The modern engine and the default since Rock 16.
    • DotLiquid: The legacy engine.

    Because of the dual-engine support, developers should be aware of which engine a specific feature or block is targeting to ensure compatibility.

  5. Overview of the Rock Learning Management System (LMS)

    develop

    The Rock LMS is an academic-shaped system designed for managing programs, courses, classes, semesters, activities, completions, and grading. It is suitable for staff training, volunteer onboarding, theological education, and structured curriculum.

    The core data model follows a hierarchical structure:

    1. LearningProgram
    2. LearningCourse
    3. LearningClass

    Users enrolled in these classes are represented as LearningParticipants, and their progress is tracked via LearningClassActivity completions.

  6. Overview of Rock Reporting domains

    develop

    Rock's reporting surface is composed of several distinct layers used for querying and visualizing data. Understanding these layers is essential for knowing which tool to use for a specific data requirement:

    • DataViews: The foundational layer. These are population queries used to define sets of data. Most other reporting domains integrate with DataViews.
    • Reports: Used for column projection (selecting specific fields from a dataset).
    • Metrics: Used for time-series data and tracking values over time.
    • Dynamic Data blocks: Allows admins to author SQL and Lava reports directly, with support for page-parameter filtering and triggering workflows or communications from selected rows.
    • Analytics Source tables: Denormalized snapshots used for analytics, population jobs, SCD-2 historical entities, and integration with postal/census data.
  7. Overview of Rock.Tests.Shared

    develop

    The Rock.Tests.Shared project is a central repository for common data and reusable components used across all Rock testing projects. It is designed to provide consistency and reduce boilerplate in test suites by offering shared constants, base classes, and utility components.

    Key contents include:

    • Constants: Guid identifiers for well-known test data entities, allowing tests to reference specific, predictable data instances.
    • Base Classes: Common functionality for test classes to ensure standardized testing patterns.
    • Utility Components: General-purpose functions for manipulating and working with test data.

    This project is a dependency for:

    • Rock.Tests
    • Rock.Tests.Integration
  8. Overview of EPPlus 4.0.4 features

    develop

    EPPlus is a library used to create advanced Excel spreadsheets. Version 4.0.4 includes:

    • New Cell Store: Optimized for lower memory consumption and faster row inserts. Supports column insertion at the sheet level (rather than just range level).
    • Agile Encryption: Supports newer encryption types used in Office 2012 and later.
    • Formula Parser: Supports 100+ functions and allows for custom function registration via FormulaParserManager.
    • Chart Support: Includes support for Chart worksheets, including Bubble charts, Radar charts, and Area charts.
    • Threading Support: Uses DotNetZip (replacing the Packaging API) to enable multi-threading and resolve Isolated Storage issues. The cell store includes locks for multi-threaded access.
  9. Overview of Lava templating in Rock

    develop

    Lava is Rock's templating language, derived from Liquid. It allows administrators to create dynamic content for emails, SMS, content channels, dynamic blocks, and workflow forms by merging Rock entities, custom data, and computed values into markup.

    Rock currently supports two engines:

    • Fluid: The modern default (since Rock 16). Most new filters and commands are Fluid-only.
    • DotLiquid: The legacy engine. A multi-year migration is underway to move away from DotLiquid due to its lack of maintenance and limited C# interop (e.g., async support).

    When developing new extensions, you should target the Fluid engine first.

  10. Overview of Rock RMS

    develop

    Rock RMS is an open source Relationship Management System (RMS) and Application Framework designed for 501c3 organizations, specifically optimized for churches but applicable to various service industries.

    Technical Stack:

    • Framework: ASP.NET 4.5 (C#)
    • ORM: Entity Framework 6.0
    • Frontend: jQuery, Bootstrap 3, and other open source libraries.
  11. Overview of Model Map Builder

    develop
    Model Map Builder is a console tool that generates a versioned JSON "model map" of Rock's entity models. This file serves as a file-based counterpart to the live Model Map web UI block. It captures properties, methods, XML documentation comments, enums, defined values, and obsolete flags, organized by domain. This allows developers to keep a version-controlled record of the Rock entity model in source control.