Skip to content

Repository files navigation

featurette - terminal movie framework

A TypeScript framework for making short films that run in the terminal.

Install · Example · Model · Features · Usage


Install

npm install featurette

Example

import { defineFilm, play } from 'featurette';

const film = defineFilm({
    title: 'Signal',
    minSize: { columns: 60, rows: 18 },
    voices: {
        process: { fg: '#f6ae1b', speed: 55 },
    },
});

film.scene('wake', async ($) => {
    await $.clear();

    await $.type('hello?', {
        at: $.center().up(1),
        voice: 'process',
    });

    await $.beat(800);

    await $.type('oh. you ran me.', {
        at: $.center().down(1),
        voice: 'process',
    });
});

await play(film);

Model

A film is an ordered set of async scenes. Inside each scene, $ is the stage: write text, compose layers, schedule effects, and respond to input. Featurette handles rendering, timing, playback, and terminal cleanup underneath.

Features

scenes, beats, voices, and layers
terminal-aware drawing and motion
cinematic and developer-native effects
input, interruption, and live resize
transcript and reduced-motion fallbacks
deterministic scene rendering for tests
ESM and CommonJS
zero runtime dependencies

Usage

See USAGE.md for composition, effects, motion, input, playback flags, and testing.

License

Licensed under the MIT License.

About

terminal cinema framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages