Skip to content

docs: Academy learning surface#5213

Open
ouiliame wants to merge 1 commit into
simstudioai:stagingfrom
ouiliame:feat/academy
Open

docs: Academy learning surface#5213
ouiliame wants to merge 1 commit into
simstudioai:stagingfrom
ouiliame:feat/academy

Conversation

@ouiliame

Copy link
Copy Markdown
Contributor

Adds the Academy section to the docs: video-first lessons (self-hosted MP4 on Vercel Blob), organized into Workflows, Agents, Tables, Files, and Knowledge Bases, each linking back to the reference docs.

Docs only — no runtime or auth changes. The content may move to a separate CMS or its own site (academy.sim.ai) later; the docs are a starting point.

Replaces #5170 with a clean single-commit history (drops the committed preview MP4s and draft MDX).

@vercel

vercel Bot commented Jun 25, 2026

Copy link
Copy Markdown

@ouiliame is attempting to deploy a commit to the Sim Team on Vercel.

A member of the Team first needs to authorize it.

@cursor

cursor Bot commented Jun 25, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Docs-only changes with no runtime or auth impact; risk is mainly build/size from many new pages and external video URLs.

Overview
Adds a new Academy section to the docs site: video-first lessons with self-hosted MP4s on Vercel Blob, a dedicated nav tab, and a curated course tree (Get Started, Workflows, Agents, Tables, Files, Knowledge Bases, Use Cases) that links back to reference docs.

Lesson UI introduces VideoPlaceholder (hero card or inline player), VideoChapters (in-page chapter rail with seek via academy:* window events), and WhatYouWillLearn cards; lessons reuse existing WorkflowPreview where relevant.

Docs shell treats /academy like API Reference: full-width layout, TOC disabled, and prev/next navigation confined to the section. getAssetUrl passes through absolute video URLs; .gitignore ignores nested Fumadocs **/.source/ dirs.

Reviewed by Cursor Bugbot for commit 7470b77. Bugbot is set up for automated code reviews on this repo. Configure here.

@greptile-apps

greptile-apps Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds the Sim Academy to the docs site — a video-first learning surface with lessons organized into Workflows, Agents, Tables, Files, Knowledge Bases, and Use Cases, each linking back to the reference docs.

  • New UI components: VideoPlaceholder (16:9 hero card with inline playback), VideoChapters (seek panel), WhatYouWillLearn (objectives card), and CourseProgress (lesson-list panel) — all wired through a lightweight window event bus (academy:seek / academy:video-ready / academy:video-query).
  • Page-level layout changes: Academy pages suppress the TOC, go full-width, and scope the prev/next footer navigation inside the /academy/ prefix, mirroring the existing behavior for /api-reference/.
  • Navbar: A new "Academy" tab is added and the Documentation tab's match predicate is updated to exclude /academy paths.

Confidence Score: 5/5

Documentation-only change adding new content pages and UI components with no runtime, auth, or data-path changes.

All changed files are scoped to the docs app — new MDX content, new React display components, and minor layout adjustments to the page shell. There are no database calls, auth paths, or API routes touched. The new components are self-contained and the window event bus for video-chapter coordination is a reasonable approach for a single-video-per-page surface.

No files require special attention.

Important Files Changed

Filename Overview
apps/docs/components/ui/video-placeholder.tsx New lesson hero component with a placeholder design card and inline video player; uses a window-event handshake (academy:seek/video-ready/video-query) to coordinate chapter seeks with VideoChapters.
apps/docs/components/ui/video-chapters.tsx Chapter list panel that dispatches academy:seek events; correctly guards buttons with disabled when no video is present, addressing prior feedback.
apps/docs/components/ui/course-progress.tsx Visual progress panel (lesson count, duration, progress bar, lesson list); progress percentage clamped correctly in both bar and label. Component is defined but not yet imported by any MDX in this PR.
apps/docs/components/ui/what-you-will-learn.tsx Simple presentational card listing lesson objectives; no logic concerns.
apps/docs/app/[lang]/[[...slug]]/page.tsx Adds isAcademy detection (slug?.[0] === 'academy') to suppress TOC, enable full-width, and scope prev/next navigation to the Academy section.
apps/docs/lib/utils.ts Adds getAssetUrl() to resolve Vercel Blob CDN paths; absolute-URL guard is correct and mirrors the guard in resolveVideoSrc for clarity.
apps/docs/components/navbar/navbar.tsx Adds Academy nav tab and correctly excludes /academy from the Documentation tab match predicate.
apps/docs/content/docs/en/academy/meta.json Fumadocs sidebar config for the Academy section; root: true, covers all lesson and use-case pages.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    participant MDX as Academy MDX Page
    participant VP as VideoPlaceholder
    participant VC as VideoChapters
    participant W as window event bus

    MDX->>VP: render with src prop
    MDX->>VC: render with chapters prop
    Note over VP,VC: useEffect fires after DOM paint
    VP->>W: listen academy:seek and academy:video-query
    VP->>W: dispatch academy:video-ready (pre-emptive)
    VC->>W: listen academy:video-ready
    VC->>W: dispatch academy:video-query
    W-->>VP: academy:video-query triggers announce
    VP->>W: dispatch academy:video-ready
    W-->>VC: "academy:video-ready sets hasVideo=true"
    Note over VC: Chapter buttons become enabled
    VC->>W: dispatch academy:seek with time seconds
    W-->>VP: onSeek handler fires
    VP->>VP: seek video or set pendingSeek and show player
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
    participant MDX as Academy MDX Page
    participant VP as VideoPlaceholder
    participant VC as VideoChapters
    participant W as window event bus

    MDX->>VP: render with src prop
    MDX->>VC: render with chapters prop
    Note over VP,VC: useEffect fires after DOM paint
    VP->>W: listen academy:seek and academy:video-query
    VP->>W: dispatch academy:video-ready (pre-emptive)
    VC->>W: listen academy:video-ready
    VC->>W: dispatch academy:video-query
    W-->>VP: academy:video-query triggers announce
    VP->>W: dispatch academy:video-ready
    W-->>VC: "academy:video-ready sets hasVideo=true"
    Note over VC: Chapter buttons become enabled
    VC->>W: dispatch academy:seek with time seconds
    W-->>VP: onSeek handler fires
    VP->>VP: seek video or set pendingSeek and show player
Loading

Reviews (3): Last reviewed commit: "docs: add Academy learning surface" | Re-trigger Greptile

Comment thread apps/docs/components/ui/course-progress.tsx Outdated
Comment thread apps/docs/components/ui/video-chapters.tsx
@ouiliame

Copy link
Copy Markdown
Contributor Author

@greptile review

Comment thread apps/docs/components/ui/video-chapters.tsx
Comment thread apps/docs/app/[lang]/[[...slug]]/page.tsx
@ouiliame

Copy link
Copy Markdown
Contributor Author

@cursor review
@greptile review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 17c0654. Configure here.

Comment thread apps/docs/components/ui/course-progress.tsx Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 17c0654. Configure here.

Comment thread apps/docs/app/[lang]/[[...slug]]/page.tsx Outdated
Adds the Academy section to the docs: video-first lessons (self-hosted MP4 on
Vercel Blob), organized into Workflows, Agents, Tables, Files, and Knowledge
Bases, each linking back to the reference docs. Lessons use a course layout
(hero video with chapter seek, "what you'll learn", block diagrams).

Docs only — no runtime or auth changes. The content may move to a separate CMS
or its own site (academy.sim.ai) later; the docs are a starting point.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ouiliame

Copy link
Copy Markdown
Contributor Author

@cursor review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant