# Gnommo Player

This project is a proof of concept for an interactive lecture player.

## Reusable Player Surface

The player is now organized so it can be embedded in a larger React app such as GnommoEditor.

The intended host integration looks like this:

```tsx
import {
  GlitchPlayer,
  defaultSlideRegistry,
  createSessionId,
  type PresentationDefinition,
  type VoteRequest
} from "./player";
import "./player/styles.css";

function GnommoEditorPreview({
  presentation,
  onVoteCommit
}: {
  presentation: PresentationDefinition;
  onVoteCommit: (vote: VoteRequest) => Promise<void> | void;
}) {
  return (
    <GlitchPlayer
      presentation={presentation}
      slideRegistry={defaultSlideRegistry}
      initialSessionId={createSessionId()}
      onVoteCommit={onVoteCommit}
    />
  );
}
```

The key boundary is:

- the host app fetches the presentation
- the host app provides the slide registry
- the host app owns vote/event persistence
- the player owns playback, timing, layout, gestures, and rendering

## Why This Exists

The goal is not just to make ordinary videos or ordinary slide decks.

The goal is to build a pipeline for AI-assisted lecture creation, where a lecture can eventually become a normal YouTube video, but starts as a richer structured presentation format.

The underlying idea is:

- A creator writes a lecture script in a web-based presentation editor, similar to Keynote.
- The creator defines a timed slide show and only decides high-level layout behavior, such as whether a slide should be square or fullscreen.
- The creator records talking-head video segments and uploads them.
- Those segments are stitched into a continuous lecture timeline and transcribed.
- The spoken words become the scaffold for when slide events should happen.
- The actual slide contents can then be generated or refined by AI using available templates.

That slide content does not need to be limited to static slides. A slide may be:

- a React component
- a chart or visualization
- an image
- a 3D scene
- an interactive explanatory surface

This creates a new kind of lecture format:

- the talking head provides narrative continuity
- the slide layer provides rich explanation
- the viewer can inspect, manipulate, and compare alternate variants of the same explanation

## Product Vision

The long-term vision is a system for authoring lectures as structured, interactive presentations first, and rendering them into linear video later.

That means:

- creators can use AI to help generate visual explanations
- multiple candidate slide variants can compete for the same moment in the lecture
- viewers can browse or interact with those variants
- the format can later crystallize into a fixed canonical video suitable for YouTube

## Why The Player Matters

This player is the runtime for that format.

It proves that a lecture can be represented as:

- stitched talking-head video segments
- timed slide events on a continuous timeline
- square or fullscreen slide presentation modes
- interactive slide content
- variant selection and future preference learning

In short:

This project exists to explore an AI-assisted interactive lecture format that can begin as a live structured presentation and later become a standard video.
