This boilerplate does not cover advanced scripting, but focuses more on automating a neat UI/UX for shell scripts.
As someone who occassionally creates shell scripts I made this oriented for self use, so feel free to edit all/any part of the code to match your own styles.
If you do use this code, please give me some credit in the repo :)
- Neatly designed UI/UX
- Stores project data in a JSON file (
project.json) - Built-in dependency checker
You can find an example script built using Shellplate in the /example directory.
Shellplate in use:

An example script built using Shellplate:

Shellplate depends on the following packages which need to be installed manually depending on your platform.
git
jq
curl
tput
fmt
figlet
These can also be found in requirements.txt
- Open a terminal, clone this repo and cd into the Shellplate directory
git clone https://github.com/DarkGuy10/Shellplate.git cd Shellplate - Execute the
Shellplate.shscript and follow the interactive wizardbash Shellplate.sh
- If during the dependency check, any of the packages are marked
UNMET, manually install them and rerun the script. - Your project is created at
out/<ProjectName>/. Open the<ProjectName>.shfile in the directory and place your code in themain()function. - Happy scripting!
- Support for custom and prebuilt ANSII-based UI color schemes
- Built-in script updater
- Single script-file projects
- Script flags to skip the interactive wizard
<ProjectName>/
ascii_art.txt
<ProjectName>.sh
project.json
README.md
requirements.txt
ascii_art.txt- A banner art for the project created usingfiglet<ProjectName>.sh- This is the main script file. Put your code inside themain()functionproject.json- Contains basic info about the project. It follows the following template:{ "name": "", "version": "", "author": "", "repository": "", "description": "" }README.md- The readme file of the project.requirements.txt- Contains a list of packages which the script depends to run. NOTE : Do not removejqandtputfromrequirements.txt. They are important for the boilerplate itself.
By default the <ProjectName>.sh script file contains a few utility functions for easier UI/UX management.
pretty_banner- clears the screen and prints a banner showing project name ASCII art and other detailscentre "some text"- Print some text in centre of a region of 80 columns (80 is the maximum number of columns in the UI)header "some title"- Print a bold header in centre, bounded by[]
Changelog can be found here.