> ## Documentation Index
> Fetch the complete documentation index at: https://docs.junojourney.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Programs

> Create reusable event schedules — a template for organizing instructor-led sessions into structured weeks.

export const RelatedPages = ({pages = []}) => {
  if (pages.length === 0) return null;
  return <>
      <br />
      <strong>Related articles</strong>
      <CardGroup cols={2}>
        {pages.map(page => <Card title={page.title} href={page.href} key={page.href} />)}
      </CardGroup>
    </>;
};

export const VideoWalkthrough = ({src, alt, caption}) => {
  return <Frame caption={caption}>
      <img src={src} alt={alt || caption || "Walkthrough"} />
    </Frame>;
};

export const RoleBadge = ({roles = []}) => {
  const colorMap = {
    Admin: "yellow",
    Manager: "blue",
    Learner: "green",
    "Co-editor": "purple"
  };
  return <>
      {roles.map(role => <span key={role}><Badge color={colorMap[role] || "gray"} size="sm" shape="pill">{role}</Badge>{" "}</span>)}
    </>;
};

export const FeatureAvailability = ({module, feature}) => {
  const label = feature || module;
  return <Info title="Feature availability">
      {label ? <>This feature requires the <strong>{label}</strong> module. </> : <>This feature may not be enabled for your organization. </>}
      If you don't see it in Juno, contact your administrator.
    </Info>;
};

<FeatureAvailability feature="Programs" />

<RoleBadge roles={["Admin"]} />

## What is a Program?

A **Program** is a reusable template for scheduling learning events across one or more weeks. Think of it as a blueprint: you define which events happen on which days, and then create **Cohorts** from it — each Cohort is a concrete run of the program with assigned learners and specific dates.

**Program = Template. Cohort = Scheduled instance with learners.**

***

## Programs vs. Journeys

|                  | Program                                        | Journey                                  |
| ---------------- | ---------------------------------------------- | ---------------------------------------- |
| **Purpose**      | Schedule instructor-led sessions across weeks  | Sequence self-paced learning content     |
| **Time-based**   | Yes — events have specific days and times      | No — learners progress at their own pace |
| **Repeatable**   | Yes — create multiple Cohorts from one Program | No — one Journey, many enrollments       |
| **Content type** | Events / live sessions                         | Courses, quizzes, videos, any content    |

***

## Creating a Program

<Steps>
  <Step title="Navigate to Programs">
    Go to **Create & Collaborate → Programs** or **Events Hub → Programs** (admin).
  </Step>

  <Step title="Create new program">
    Click **Create Program**. Enter a title and description.
  </Step>

  <Step title="Build the schedule">
    Drag events from the sidebar onto the **week grid**. Each event slot defines:

    * Which day of the week
    * What time
    * Duration
    * Instructor (optional)
    * Location (optional)
  </Step>

  <Step title="Add more days">
    Click the **+** tab next to the week tabs and enter how many days to add. There is no maximum — extend the program as long as you need.
  </Step>
</Steps>

The program auto-saves as you make changes.

***

## Program events

Each event in a program is a reference to an existing Event unit. When you drag an event onto the grid, you define:

| Field          | What it does                                    |
| -------------- | ----------------------------------------------- |
| **Day & time** | When the event occurs within the week           |
| **Duration**   | How long the session lasts (in minutes)         |
| **Instructor** | Assigned instructor for this session (optional) |
| **Location**   | Room or venue (optional)                        |

When you click an event in the grid, the **Event details** dialog opens. Sessions generated from this event in any cohort inherit these values, so update them here once instead of editing each session individually.

### Session times on event blocks

Every event block on the week grid shows the session's **start–end time** together with its duration (for example, `9:00 - 10:30 (90 min)`). The time range updates as you drag or resize the block, so you can confirm when the session runs without opening the event details. Blocks shorter than 30 minutes hide the label to keep the grid readable.

***

## Filtering the events sidebar

The sidebar lists every event you can drag onto the grid. Use the filters at the top of the sidebar to narrow the list when your workspace has many events:

| Filter                  | What it does                                  |
| ----------------------- | --------------------------------------------- |
| **Search**              | Match on event title                          |
| **Type**                | Single session vs. multi-session              |
| **Registration policy** | Open, approval-required, or invite-only       |
| **Creator**             | Show events created by specific people        |
| **Labels**              | Show events tagged with specific event labels |

<Tip>
  Event labels are workspace-wide tags configured in **Settings → Events**. The Labels filter only appears when your workspace has labels defined and assigned to events.
</Tip>

***

## What's next?

Once your program template is ready, [create a Cohort](/learning/cohorts) to schedule it with real dates and learners.

<RelatedPages
  pages={[
{ href: "/learning/cohorts", title: "Cohorts" },
{ href: "/events/browsing-events", title: "Events" },
{ href: "/learning/learning-paths", title: "Journeys" },
]}
/>
