- 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
- 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
Ensure you have the following installed:
- Go: v1.25 or later
- Make: For running build commands (optional)
-
Clone the repository:
git clone https://github.com/rivetron/slate.git cd slate -
Install dependencies:
go mod tidy
-
Run the application:
go run src/cmd/main.go
-
Or use Make commands:
make run
slate init my-slides.mdThis creates a sample markdown presentation with example slides.
slate present my-slides.md- 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.
Presentations are written in markdown. Use horizontal rules (---) to separate slides:
slate config showslate config initThis creates a configuration file at ~/.config/slate/slate.yaml.
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+cPresent a markdown file as slides.
slate present slides.mdCreate a sample presentation.
slate init
slate init my-talk.mdManage 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- Bubble Tea - TUI framework
- Glamour - Markdown rendering
- Lipgloss - Style definitions
- Cobra - CLI framework
- yaml.v3 - YAML parser
This project is licensed under the MIT License. See the LICENSE file for details.
- Built for developers who value maintainable and scalable code
- Inspired by tools like slides and reveal.js
- Perfect for developers who love the terminal
