A comprehensive framework for creating stunning terminal interfaces in pure Bash
Quick Start β’ Features β’ Installation β’ Examples β’ Documentation
ShellCandy transforms ordinary shell scripts into beautiful, interactive terminal applications. With 9 powerful modules and 60+ functions, you can create professional UIs with:
β¨ Interactive menus with keyboard navigation
π Data visualization with charts and sparklines
π Auto-sizing tables with perfect alignment
π¨ Rich colors (256-color, RGB, themes)
β‘ Progress indicators (bars, spinners, gauges)
π Interactive forms with validation
π― Zero dependencies - Pure Bash 4.0+
curl -fsSL https://raw.githubusercontent.com/NickCrew/shellcandy/main/install.sh | bash#!/usr/bin/env bash
source ~/.shellcandy/lib/shellcandy.sh
# Beautiful boxes
box_success "Welcome!" \
"ShellCandy makes terminals beautiful" \
"π¨ Colors π Charts π― Menus β‘ Progress"
# Data visualization
declare -a data=(45 52 68 73 81 76 84 92)
echo "Trend: $(sc_sparkline data) π"
# Progress bar
sc_progress_bar 75 100 "Processing"| Module | Description |
|---|---|
| colors | 256-color, RGB, themes, gradients |
| logging | Multi-level logging with file output |
| progress | Spinners, bars, ETA calculations |
| icons | 50+ status symbols and emojis |
| boxes | Perfect alignment with ANSI/emoji support |
| tables | Auto-sizing, CSV import, formatting |
| prompts | Interactive forms with validation |
| menus | Keyboard navigation, nested menus |
| charts | Sparklines, bar charts, gauges, histograms |
curl -fsSL https://raw.githubusercontent.com/NickCrew/shellcandy/main/install.sh | bashgit clone https://github.com/NickCrew/shellcandy.git ~/.shellcandy
echo 'export SHELLCANDY_HOME="$HOME/.shellcandy"' >> ~/.bashrc
echo 'source $SHELLCANDY_HOME/lib/shellcandy.sh' >> ~/.bashrc
source ~/.bashrc#!/usr/bin/env bash
source ~/.shellcandy/lib/shellcandy.sh
sc_menu_create "Main Menu"
sc_menu_add "Deploy" "deploy_app" "true" "d"
sc_menu_add "Status" "show_status" "true" "s"
sc_menu_add "Logs" "view_logs" "true" "l"
sc_menu_add "Exit" "exit" "true" "q"
sc_menu_show#!/usr/bin/env bash
source ~/.shellcandy/lib/shellcandy.sh
# System metrics
declare -a cpu=(30 35 42 45 50 48 52)
sc_gauge 52 100 "CPU Usage" 40
echo "Trend: $(sc_sparkline cpu)"
# Table
sc_table_create "rounded"
sc_table_header "Service" "Status" "CPU"
sc_table_row "Web" "β OK" "23%"
sc_table_row "DB" "β OK" "45%"
sc_table_render- Complete Documentation - Full API reference
- Testing Guide - Validation and benchmarks
- Optimization Guide - Performance tips
- Changelog - Version history
ShellCandy is highly optimized:
| Metric | Performance | Status |
|---|---|---|
| Core functions | 40-70Β΅s/call | β |
| Box rendering | 2-4ms | β |
| Table (10 rows) | 15-25ms | β |
| Sparklines | 1-2ms | β |
Run tests:
shellcandy-validate # 68 tests
shellcandy-benchmark # 13 benchmarksContributions welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Make changes and test:
./lib/validate.sh - Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
- 9 modules with 60+ functions
- 10,100 lines of code
- 68 validation tests (100% passing)
- 13 performance benchmarks
- Zero dependencies
- Pure Bash 4.0+
MIT License - See LICENSE for details
Copyright (c) 2025 Nicholas Crew Ferguson
- Issues: https://github.com/NickCrew/shellcandy/issues
- Discussions: https://github.com/NickCrew/shellcandy/discussions
Made with π ShellCandy
Making terminals beautiful, one script at a time
β Star us on GitHub if you find ShellCandy useful!





