Admin Guide

Managing Channels

Channels are the top-level containers for your educational content. Each channel maps to a Roku streaming channel and holds series, episodes, and associated learning materials.

Channel Lifecycle

Channels progress through several stages from creation to active use:

Draft Name & category set Configured Theme, images, desc Content Added Series + episodes Published is_published = true Active on Roku Feed live, students enroll STEP 1 STEP 2 STEP 3 STEP 4 STEP 5

Figure 3: Channel Lifecycle -- Draft to Active on Roku

Creating a Channel

  1. Navigate to Channels

    From the sidebar, click Channels or go to /channels.

  2. Click "Create Channel"

    The blue Create Channel button is in the top-right corner. A modal form will open.

  3. Fill in Channel Details

    Enter the required and optional fields:

    • Channel Name (required) -- A unique, descriptive name (max 255 characters)
    • Description -- Brief summary of the channel content
    • Category -- Educational, Entertainment, Documentary, Tutorial, or Kids
    • Language -- en, es, fr, de
    • Theme Color -- Hex color for branding (e.g., #1a1a2e)
  4. Save the Channel

    Click Create Channel. The system will create a backing collection in the COLLECTIONS API and a local channel record. You should see a success toast.

Behind the scenes, creating a channel sends a request to the COLLECTIONS API to set up the content hierarchy. If the COLLECTIONS API is down, channel creation will fail with a 500 error.

API Example: Create Channel

bash
curl -X POST http://localhost:8065/api/channels \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "channel_name": "Science 101",
    "channel_description": "Introductory science topics for beginners",
    "category": "Educational",
    "language": "en",
    "theme_color": "#0f3460"
  }'

Channel Settings

After creating a channel, you can configure additional settings via the Edit modal:

SettingTypeDefaultDescription
channel_nameString--Display name (1-255 chars, required)
channel_descriptionTextnullLong description for the channel
categoryEnumEducationalContent classification
languageStringenPrimary language code
theme_colorHex#1a1a2eBranding color (used on cards and feed)
is_publishedBooleanfalseToggle channel visibility
roku_channel_idStringnullRoku-specific channel identifier
channel_poster_urlURLnullPoster image for channel card
channel_banner_urlURLnullWide banner image
channel_logo_urlURLnullSquare logo image
splash_screen_urlURLnullSplash screen for Roku device
certification_statusStringdraftRoku certification status

Editing and Deleting

Editing a Channel

Hover over any channel card in the grid to reveal the Edit (pencil) icon. Click it to open the edit modal with pre-filled values. Modify the fields you want and click Save Changes.

bash
curl -X PUT http://localhost:8065/api/channels/{channel_id} \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "channel_name": "Science 101 - Updated",
    "is_published": true
  }'

Deleting a Channel

Click the Delete (trash) icon on a channel card. You will be asked to confirm. Deletion is a soft-delete (records are flagged, not permanently removed). The backing collection in COLLECTIONS API is also deleted.

Admin Required: Only users with the Admin or Super Admin role can delete channels. Regular authenticated users will receive a 403 Forbidden error.
bash
curl -X DELETE http://localhost:8065/api/channels/{channel_id} \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

# Returns 204 No Content on success

Publishing a Channel

When is_published is set to true:

  • The channel appears with a green Published badge on the card
  • A public Roku JSON feed becomes available at /api/roku/feed/{channel_id}
  • Students can enroll and start watching content
Make sure your channel has at least one series with episodes and video content before publishing. An empty published channel will generate a valid but empty Roku feed.