Skip to content

Repository files navigation

Slate Logo

🌗 Slate

Go Version Pre-commit Commitlint Testing License

  • Markdown Rendering: Full markdown support with syntax highlighting via Glamour
  • Beautiful Themes: Dark and light themes with customizable color schemes
  • Smooth Navigation: Intuitive keyboard shortcuts for seamless slide transitions
  • Progress Indicators: Visual progress bar and slide numbers
  • Command Footer: Context-aware navigation hints shown at the bottom of every slide
  • Smart Exit: Auto-exit when pressing "next" on the last slide
  • Customizable: Configure themes, keybindings, and presentation settings via YAML
  • Navigation History: Go back to previously viewed slides
  • Cross-Platform: Works on macOS, Linux, and Windows

⚡ Features

  • Clean Architecture: Domain-driven design with clear separation of concerns
  • Pre-configured Tooling:
    • Pre-commit: Hooks to enforce consistency before commits.
    • Testing: Comprehensive testing setup with mocks and fixtures
  • Modular Structure: Organized packages for scalability and maintainability
  • CI/CD: GitHub Actions workflows for testing and deployment
  • Security: Built-in security middleware and best practices

🚀 Getting Started

Prerequisites

Ensure you have the following installed:

  • Go: v1.25 or later
  • Make: For running build commands (optional)

⚙️ Installation

  1. Clone the repository:

    git clone https://github.com/rivetron/slate.git
    cd slate
  2. Install dependencies:

    go mod tidy
  3. Run the application:

    go run src/cmd/main.go
  4. Or use Make commands:

    make run

Quick Start

1. Create a Sample Presentation

slate init my-slides.md

This creates a sample markdown presentation with example slides.

2. Present Your Slides

slate present my-slides.md

3. Navigate Your Presentation

  • Next slide: →, L
  • Previous slide: ←, H
  • First slide: Home, G
  • Last slide: End, Shift+G
  • Go back: B
  • Show help: ?
  • Quit: Q, Esc, Ctrl+C

💡 Pro Tip: When you reach the last slide, pressing → or Space will automatically exit the presentation! Navigation commands are shown at the bottom of every slide.


Creating Presentations

Presentations are written in markdown. Use horizontal rules (---) to separate slides:


Configuration

View Current Configuration

slate config show

Create Configuration File

slate config init

This creates a configuration file at ~/.config/slate/slate.yaml.

Configuration Options

theme:
  mode: auto          # auto, dark, or light
  glamourStyle: dark  # dark, light, dracula, pink
  showProgress: true
  showSlideNum: true

presentation:
  wordwrap: 80
  margin: 2
  padding: 1

keybindings:
  next:
    - right
    - l
  previous:
    - left
    - h
  first:
    - home
    - g
  last:
    - end
    - G
  quit:
    - q
    - esc
    - ctrl+c

Commands

slate present <file>

Present a markdown file as slides.

slate present slides.md

slate init [filename]

Create a sample presentation.

slate init
slate init my-talk.md

slate config

Manage configuration.

slate config show      # Show current configuration
slate config init      # Create default config file
slate config path      # Show config file path
slate config example   # Show example configuration

Demo

Slate Demo


Built With


📜 License

This project is licensed under the MIT License. See the LICENSE file for details.


🙌 Acknowledgments

  • Built for developers who value maintainable and scalable code
  • Inspired by tools like slides and reveal.js
  • Perfect for developers who love the terminal

About

A terminal-first way to tell stories, one slide at a time.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

Generated from rivetron/helix