npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@pep/term-deck

v1.0.27

Published

Terminal presentation tool with a cyberpunk aesthetic

Readme

term-deck

A terminal-based presentation tool with a cyberpunk aesthetic. Create beautiful slideshows in your terminal with matrix rain backgrounds, glitch effects, and ASCII art.

term-deck demo TypeScript License

Demo

term-deck demo

Matrix rain backgrounds, glitch animations, and ASCII art in your terminal

Features

  • 🌊 Matrix Rain Background - Animated katakana/symbol rain effects
  • Glitch Reveal Animations - Line-by-line scramble effects
  • 🎨 5 Built-in Themes - Matrix, Neon, Retro, Minimal, Hacker
  • 📝 Markdown Slides - One file per slide, easy to version control
  • 🎯 Figlet ASCII Art - Big text rendered with figlet
  • 🎭 Custom Gradients - Color gradients for headings
  • 🔧 Fully Themeable - Create custom themes with YAML
  • Fast - Instant startup with minimal dependencies
  • 📦 Type-Safe - Full TypeScript with Zod validation

Installation

Via npm (Recommended)

npm install -g @pep/term-deck

Or with pnpm:

pnpm install -g @pep/term-deck

From Source

Requires Node.js 18+ and pnpm.

git clone https://github.com/PepijnSenders/term-deck.git
cd term-deck
pnpm install
pnpm dev examples/slides-matrix/

Quick Start

Create Your First Presentation

# Initialize a new deck
term-deck init my-presentation

# Navigate and present
cd my-presentation
term-deck slides/

This creates:

my-presentation/
├── slides/
│   ├── 01-intro.md
│   ├── 02-content.md
│   ├── 03-end.md
│   └── deck.config.ts
└── README.md

Try the Examples

# Clone the repo to see examples
git clone https://github.com/PepijnSenders/term-deck.git
cd term-deck

# Try different themes
term-deck examples/slides-matrix/   # Classic Matrix
term-deck examples/slides-neon/     # Cyberpunk neon
term-deck examples/slides-retro/    # 80s synthwave
term-deck examples/slides-minimal/  # Clean monochrome
term-deck examples/slides-hacker/   # Terminal green

Keyboard Controls

| Key | Action | |-----|--------| | Space / Enter / | Next slide | | / Backspace | Previous slide | | 0-9 | Jump to slide | | l | Show slide list | | q / Esc | Quit |

Slide Format

Each slide is a markdown file with YAML frontmatter:

01-intro.md

---
title: Welcome
bigText: HELLO
gradient: fire
---

{GREEN}Welcome to my presentation!{/}

This is the body text of the slide.

02-content.md

---
title: Main Point
bigText:
  - MULTI
  - LINE
gradient: cool
---

{WHITE}You can have multiple bigText lines.{/}

{CYAN}And use color tokens for styling.{/}

3. Add a config file

deck.config.ts

import { defineConfig } from 'term-deck';
import matrix from 'term-deck/themes/matrix';

export default defineConfig({
  title: 'My Presentation',
  author: 'Your Name',
  theme: matrix,
  settings: {
    startSlide: 0,
    loop: false,
    showProgress: false,
  },
});

4. Run it

bun path/to/term-deck/bin/term-deck.ts .

Themes

term-deck includes 5 built-in themes. See THEMES.md for detailed documentation.

Quick Comparison

| Theme | Palette | Speed | Best For | |-------|---------|-------|----------| | Matrix | Green/Orange | Normal | All-purpose, classic cyberpunk | | Neon | Pink/Cyan/Purple | Fast | High energy, product launches | | Retro | Pink/Orange/Purple | Slow | Creative talks, storytelling | | Minimal | Monochrome | Very Slow | Corporate, documentation | | Hacker | All Green | Very Fast | Security talks, live coding |

Creating Custom Themes

Create a theme file in themes/:

themes/my-theme.ts

import { createTheme } from '../src/core/theme.js';

const yaml = `
name: my-theme
description: My custom theme

colors:
  primary: "#ff0000"
  accent: "#00ff00"
  background: "#000000"
  text: "#ffffff"
  muted: "#666666"

gradients:
  fire:
    - "#ff0000"
    - "#ff6600"
    - "#ffcc00"
  cool:
    - "#0000ff"
    - "#0066ff"
    - "#00ccff"
  pink:
    - "#ff00ff"
    - "#ff66ff"
    - "#ffccff"
  hf:
    - "#00ff00"
    - "#66ff66"
    - "#ccffcc"

glyphs: "█▓▒░▀▄▌▐■□▪▫"

animations:
  revealSpeed: 1.0
  matrixDensity: 50
  glitchIterations: 5
  lineDelay: 30
  matrixInterval: 80

window:
  borderStyle: line
  shadow: true
  padding:
    top: 1
    bottom: 1
    left: 2
    right: 2
`;

export default createTheme(yaml);

Then use it in your deck config:

import myTheme from './themes/my-theme.js';

export default defineConfig({
  title: 'My Presentation',
  theme: myTheme,
});

Slide Format

Slides use markdown with YAML frontmatter:

---
title: Slide Title
bigText: BIG TEXT
gradient: fire
transition: glitch
---

Body content goes here.

You can use color tokens:
{GREEN}green text{/}
{ORANGE}orange text{/}
{CYAN}cyan text{/}
{PINK}pink text{/}
{WHITE}white text{/}
{GRAY}gray text{/}

<!-- notes -->
These are presenter notes (optional).
Only visible in notes mode.

Frontmatter Options

| Field | Type | Description | |-------|------|-------------| | title | string | Window title (required) | | bigText | string | string[] | ASCII art text via figlet | | gradient | string | Gradient for bigText: fire, cool, pink, hf | | transition | string | Animation: glitch, fade, instant, typewriter | | theme | string | Override theme for this slide |

Development

Project Structure

term-deck/
├── bin/
│   └── term-deck.ts          # CLI entry point
├── src/
│   ├── cli/                  # CLI commands
│   ├── core/                 # Core logic (deck, slide, theme)
│   ├── renderer/             # TUI rendering
│   ├── presenter/            # Presentation controller
│   ├── export/               # Export to GIF/MP4 (future)
│   ├── schemas/              # Zod validation schemas
│   └── themes/               # Built-in themes
├── themes/                   # User custom themes
├── examples/                 # Example presentations
│   ├── slides/               # Default demo
│   ├── slides-matrix/        # Matrix theme demo
│   ├── slides-neon/          # Neon theme demo
│   ├── slides-retro/         # Retro theme demo
│   ├── slides-minimal/       # Minimal theme demo
│   └── slides-hacker/        # Hacker theme demo
└── package.json

Running Tests

bun run test

Type Checking

bun run typecheck

Roadmap

  • [ ] Export to GIF/MP4
  • [ ] Presenter notes mode (dual terminal)
  • [ ] Mermaid diagram support
  • [ ] Custom fonts for ASCII art
  • [ ] Auto-advance mode
  • [ ] Progress bar
  • [ ] Remote control (via HTTP)
  • [ ] Web viewer

Why term-deck?

  • For speakers who want terminal-native presentations
  • For developers who want to present code without context switching
  • For streamers who want a cyberpunk aesthetic
  • For anyone tired of PowerPoint

Credits

Built with:

Inspired by:

  • Slidev - Presentation slides for developers
  • mdp - Markdown presentation tool
  • present - Terminal presentation tool

License

MIT License - see LICENSE for details.


Made with 💚 by the term-deck team