Skip to content

Latest commit

History

185 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

ibl.ai

Course

AI-assisted course authoring and delivery — design programs, browse the catalog, and chat with course agents on the ibl.ai platform.

The video demo is available here.

Next.jsTypeScriptTailwind CSSClaude CodeDesktop & MobileLicense: MIT


What is Course

Course is deployed at course.ibl.ai.

Course is an end-to-end course-authoring workspace on the ibl.ai platform. Plan a project, attach mentors, browse or create courses, and chat with an agent that helps draft outlines and unit content — all from one shell powered by the @iblai/iblai-js SDK and connected to iblai.app.

Screenshots

HomeMy Courses
Course homeMy Courses
FeatureDescription
ChatAgent chat at /platform/{tenant}/{mentor} via the SDK chat surface — streaming, sessions, files, voice
Explore AgentsBrowse agents through the SDK <AgentSearch> component at /agents
My CoursesPer-tenant course list fetched from the course-creation API (/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/) with About / Schedule / Edit / Preview / Delete actions and the "View Creation Prompt" dialog
Course CatalogCross-tenant public marketplace via the SDK useDiscover({ tenantOverride: "main" }) hook
Course ContentedX learner UI at /course-content/[id]/{course,dates,progress,discussion,bookmarks}
ProjectsCreate + manage projects in the sidebar, attach mentors per project
CustomizeTenant-wide configuration surface at /customize
UsersUser directory + role management
AccountProfile, social, security, and admin tabs in the SDK account dialog
SSO AuthenticationLogin via iblai.app — no tokens to manage
Tenant SwitchingSwitch organizations from the avatar dropdown

AGENTS.md / CLAUDE.md

Refer to CLAUDE.md (when present) at the repository root for component priorities, SDK import conventions, and the env-setup flow Claude Code should follow when running the app for the first time.

Quick Start

Prerequisites

  • Node.js 18+
  • pnpm (fall back to npm only if unavailable)
  • An ibl.ai platform login (or a tenant you can SSO into via iblai.app)
  • The iblai CLI — install from source (see below)

Install the iblai CLI

The CLI is installed from source via make. clone + make install is the supported install path — the version you run tracks the templates the team is editing.

macOS / Linux (Python 3.11+, pip, git, make):

git clone https://github.com/iblai/iblai-app-cli.git
cd iblai-app-cli
make -C .iblai install
cd - # back to your project

If iblai isn't found afterwards, add ~/.local/bin to your PATH:

export PATH="$HOME/.local/bin:$PATH"# add to ~/.bashrc or ~/.zshrc to persist

Windows (Python 3.11+, pip, git):

git clone https://github.com/iblai/iblai-app-cli.git
cd iblai-app-cli
pip install -e .iblai/
cd -

If iblai isn't found, ensure Python Scripts is on PATH (typically %APPDATA%\Python\Python311\Scripts\).

Verify the install:

iblai --version

Install & Run

pnpm install
pnpm dev

Open http://localhost:3000. You'll be redirected to https://login.iblai.app for SSO; on return, the home page resolves your active tenant and lands you on the workspace home.

.env.local is already populated with the iblai.app endpoints — no manual platform credentials are needed up front. Tenant + username are resolved at runtime from the SDK after SSO completes.

Build

pnpm build
pnpm start

Tests

Vitest covers the libraries, hooks, providers, components, and modals:

pnpm test# one-shot
pnpm test:watch # rerun on file changes
pnpm test:coverage # html + console v8 report under coverage/

Playwright covers user journeys via real SSO:

pnpm test:e2e # spins up `next dev`, runs auth.setup.ts once, then the journeys
pnpm test:e2e:ui # Playwright UI mode
pnpm test:e2e:headed # headed browser

Deploy to Vercel

iblai deploy vercel

The CLI auto-detects the deploy mode from next.config.mjs. Course is a server-rendered Next.js app, so the CLI will:

  • deploy the repo root to Vercel for a remote build,
  • disable Vercel authentication / password protection,
  • upload env vars from .env.local to production + preview (NEXT_PUBLIC_* as plain, the rest as encrypted; reserved keys and your-… placeholders are skipped),
  • rerun the deploy with --force + VERCEL_FORCE_NO_BUILD_CACHE=1 whenever env vars changed so the new NEXT_PUBLIC_* values are re-inlined into the client bundle.

Override detection with --mode static or --mode server when needed. Full guide: /iblai-ops-deploy.

Setup: generate a Vercel token at https://vercel.com/account/tokens and add it to iblai.env:

echo'VERCEL_TOKEN=<token>'>> iblai.env

Tip: You can change the Vercel domain name by clicking on the three-dot button on your Vercel project on vercel.com and selecting "Manage Domains".

Native builds (iOS, Android, macOS, Linux, Surface)

Wrap Course in a native shell with Tauri v2 using the iblai builds family of commands (full guide: /iblai-ops-build). All platforms share a single static next build export — the CLI runs the frontend build automatically before starting the Tauri dev server, and the WebView loads the same out/ bundle. Stop pnpm dev (and any other process on port 3000) before running a dev build.

One-time setup

iblai add builds # Add Tauri support to the project
pnpm install
iblai builds iconography logo.png # Generate per-platform app icons

You'll also need Rust via rustup.

For mobile SSO, set TAURI_CUSTOM_SCHEME=courseai in iblai.env so the auth SPA redirects via a custom URI scheme (mobile WebViews can't return from an https:// redirect to a native app).

iOS

Requires macOS + Xcode + Xcode Command Line Tools.

rustup target add aarch64-apple-ios aarch64-apple-ios-sim
iblai builds ios init # one-time
iblai builds device # list simulators
iblai builds ios dev "iPhone 16 Pro Max"# run on simulator
iblai builds ios dev --device # run on a connected iPhone
iblai builds ios build # produce .ipa
iblai builds ci-workflow --ios # generate App Store CI

Android

Requires Android Studio with the Android SDK + NDK installed.

rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
iblai builds android init # one-time
iblai builds device # list emulators
iblai builds android dev "Pixel_9"# run on emulator
iblai builds android dev --device # run on a connected device
iblai builds android build # produce APK
iblai builds ci-workflow --android # generate Play Store CI

macOS desktop

Requires xcode-select --install.

iblai builds dev # run as a desktop app
iblai builds build # produce .dmg / .app
iblai builds ci-workflow --mac # generate macOS CI

Linux desktop

System deps (Debian/Ubuntu):

sudo apt install libwebkit2gtk-4.1-dev build-essential libssl-dev \
libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
iblai builds dev # dev shell
iblai builds build # produce .deb / .AppImage
iblai builds ci-workflow --linux # generate Linux CI

Surface (Windows tablet / desktop)

Requires Visual Studio Build Tools (C++ workload) and WebView2 (bundled with Windows 11).

iblai builds dev # dev shell
iblai builds build # produce .msi / .exe
iblai builds ci-workflow --windows # generate Windows CI

Generate every CI workflow at once

iblai builds ci-workflow --all

Project Structure

app/
├── layout.tsx # Root layout — wraps with providers
├── page.tsx # Home redirect (auth check → workspace)
├── login/ # SSO entry
├── sso-login-complete/ # SSO callback (SDK <SsoLogin>)
├── home/ # Authed home / dashboard
├── agents/ # <AgentSearch> grid
├── platform/[tenantId]/[mentorId]/ # Mentor chat
├── chat/ # Standalone chat surface
├── course/ # Per-course landing
├── course-catalog/ # Cross-tenant public catalog (useDiscover tenantOverride:"main")
├── course-content/[id]/ # edX learner UI (course / dates / progress / discussion / bookmarks)
├── courses/ # My Courses — course-creation list view
├── customize/ # Tenant customization
├── project/ # Project workspaces
└── users/ # User directory + roles
components/
├── account-dialog.tsx # Profile / social / security / admin tabs in a modal
├── analytics-navigation.tsx # Analytics surface (when enabled)
├── chat-input/ # Custom chat input form
├── chat-tabs/ # Chat tab strip
├── course-creation-academy-block.tsx # AI-assisted course-creation entry point
├── create-academy-dialog.tsx # School / academy creation flow
├── credential-detail-modal.tsx # Integration credential viewer
└── modals/ # Shared dialogs (invite, rename, delete, create project, ...)
lib/iblai/
├── config.ts # NEXT_PUBLIC_* env reader
├── tenant.ts # Tenant resolution
├── course-actions.ts # Course-creation REST helpers (list, delete, brief lookup)
├── auth-utils.ts # redirectToAuthSpa, logout, handleTenantSwitch
└── use-url-context.ts # tenantKey + mentorId + username from URL params
providers/
└── iblai-providers.tsx # Redux + AuthProvider + TenantProvider

Built With

Contributing

Setup

  1. Fork the repo and clone it
  2. Install dependencies: pnpm install
  3. Start the dev server: pnpm dev

Development Workflow

  1. Create a branch from main: git checkout -b feat/my-feature
  2. Make your changes
  3. Run pnpm build and pnpm test to verify
  4. Commit and push your branch
  5. Open a pull request against main

Guidelines

  • Use ibl.ai SDK components first — do not build custom components when an SDK equivalent exists
  • Use shadcn/ui for custom UI — install via npx shadcn@latest add <component>, not raw HTML or third-party libraries
  • Do not override SDK styles — SDK components ship with their own styling
  • Use SDK design tokens — reference CSS variables like var(--primary-color), var(--border-color), var(--text-secondary) instead of hardcoded colors
  • Course-creation API: paths like /api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/{id}/ take the integer EdxCourse.id, not the edX locator. See lib/iblai/course-actions.ts.
  • Use pnpm as the package manager

Adding Features

Use the iblai CLI and Claude Code skills to add new features:

iblai add auth # SSO authentication
iblai add profile # User profile
iblai add account # Account/org settings
iblai add analytics # Analytics dashboard
iblai add notification # Notification bell
iblai add invite # Invite dialogs
iblai add builds # Tauri v2 desktop/mobile shell

See CLAUDE.md for the full list of skills and component priority rules.

Resources

License

Released under the MIT License.


Built with ibl.ai Vibe

About

End-to-end AI course-authoring workspace on the ibl.ai platform: plan programs, attach mentors, browse or create courses, and chat with an agent that drafts outlines and unit content. Built with Next.js and the @iblai/iblai-js SDK, deployed at course.ibl.ai. Desktop and mobile.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages