Developer Guide

Welcome! If you’re here, you’re interested in running CEDAR locally, extending it, or contributing to the project. We’re glad you’re interested.

Who This Is For

This guide is for:

  • Institutional researchers who want more control than the web dashboard provides
  • R users who want to build custom analyses on enrollment data
  • Developers who want to contribute to CEDAR
  • Curious folks who want to understand how CEDAR works

What You’ll Need

  • Basic R knowledge — You should be comfortable with R basics (variables, functions, data frames)
  • R and RStudio — Or another R development environment
  • Git — For cloning the repository and contributing

Don’t worry if you’re still learning — the best way to learn is by doing. And we’re happy to help if you get stuck.

Getting Started

Quick Start

# Clone the repository
git clone https://github.com/fredgibbs/cedar.git
cd cedar

# Install dependencies (in R)
source("setup.R")

# Start the Shiny app
Rscript cedar.R -f shiny

See Installation for detailed setup instructions.

Next Steps

I want to… Go to…
Install and run CEDAR locally Installation
Use the command line tools CLI Usage
Understand the data model Data Model
Understand subject, program, and dept codes Codes and Departments
Look up function documentation Function Reference
Contribute code or docs Contributing

Project Structure

CEDAR is organized into a few key areas:

cedar/
├── R/
│   ├── cones/          # Analysis modules (enrollment, headcount, etc.)
│   ├── branches/       # Shared utilities (filtering, loading, etc.)
│   └── data-parsers/   # Data transformation scripts
├── Rmd/                # Report templates
├── config/             # Configuration files
├── data/               # Data files (not in repo)
├── tests/              # Test suite
├── ui.R                # Shiny UI
├── server.R            # Shiny server
└── cedar.R             # CLI entry point

The “Cones” Concept

CEDAR’s architecture has three layers. At the base is the trunk: core utilities for loading, filtering, and transforming data — the logic that handles crosslisting, deduplication, term comparisons, and the structural details that every analysis needs to get right before the interesting work begins. Above that are the branches: domain-specific analytical functions for enrollment calculations, headcount, grade distributions, credit hour production, and other recurring computations that multiple analyses share. Cones sit at the top: focused, self-contained modules that answer specific questions by composing trunk and branch functions into a complete analysis.

Adding a cone for a new question means defining what you want to find out and assembling pieces that already exist — the underlying infrastructure doesn’t change. Specific questions live in cones, reusable logic lives below them, and neither needs to know too much about the other. That separation is what keeps the system extensible, and what makes a cone developed at one institution adaptable at another.

Current cones:

Cone What It Does
enrl.R Enrollment analysis
headcount.R Student counts by program
credit-hours.R Credit hour calculations
sfr.R Student-faculty ratio
rollcall.R Student demographics
degrees.R Graduation data
dept-report.R Department reports
course-report.R Course reports

CEDAR Data Model

CEDAR uses a normalized data model with five main tables:

Table Contents
cedar_sections Course offerings
cedar_students Student enrollments
cedar_programs Student majors/minors
cedar_degrees Degrees awarded
cedar_faculty Faculty information

This model is institution-agnostic. See Data Model for the full schema.

Ways to Contribute

We welcome contributions of all sizes:

  • Report bugs — Found something broken? Open an issue
  • Suggest features — Have an idea? We’d love to hear it
  • Improve docs — See something unclear? PRs welcome
  • Add tests — Help us improve coverage
  • Build features — Check out the Contributing Guide

Getting Help

  • GitHub Issues — Best for bugs and feature requests
  • Email — fwgibbs@unm.edu for general questions
  • Code questions — Feel free to open a discussion on GitHub

We’re a small project, so responses may take a few days. But we do read everything!


Table of contents


Back to top

CEDAR is open source software for higher education analytics.