A comprehensive, structured learning path for mastering terminal-based software development, designed for full-stack engineers working with Python, JavaScript, and Ruby.
For impatient users who want to get up and running immediately:
# Clone the repository
git clone https://github.com/YourUsername/enhanced-terminal-environment.git
cd enhanced-terminal-environment
# Run the setup script (works on macOS and most Linux distributions)
./setup.sh
# Start a new terminal session to load the environment
source ~/.zshrc
This will install:
- Zsh with Oh My Zsh configuration
- Tmux with optimized configuration
- Neovim with programming language support
- Essential CLI tools for development
See INSTALLATION.md for detailed installation instructions and customization options.
This project provides a progressive approach to learning essential terminal tools for a modern software development workflow:
- Shell (Bash/Zsh) for command-line navigation and automation
- Neovim for efficient text editing and programming
- Tmux for terminal multiplexing and session management
- Git/GitHub CLI for version control and collaboration
- Docker for containerization and deployment
- SQL/NoSQL Databases for data storage and retrieval
- Cloud CLI Tools for infrastructure management
- HTTP Client Tools for API testing and integration
- Package Managers for dependency management
- Monitoring Tools for system and application performance
The course focuses on core fundamentals first, gradually introducing more advanced concepts as your skills develop.
This repository now includes a complete, structured 12-month learning path to help you master terminal-based development. Each monthly guide includes:
- Clear learning objectives
- Weekly assignments and projects
- Daily practice routines
- Resource recommendations
- A monthly capstone project
The guides are organized into four phases:
- Month 1: Terminal & Shell Fundamentals
- Month 2: Vim, Neovim & Text Editing
- Month 3: Tmux & Session Management
- Month 4: Shell Scripting & Automation
- Month 5: Git & Version Control Mastery
- Month 6: Package Management & Development Environment
- Month 7: Database Management from Terminal
- Month 8: HTTP APIs & Network Tools
- Month 9: Monitoring & Performance Optimization
- Month 10: Cloud CLI Tools
- Month 11: Configuration Management & Automation
- Month 12: Terminal Productivity System & Capstone
Each guide is designed to be completed in one month, with approximately 10 hours of study per week.
This learning path is built on these core principles:
- Mastery Through Deliberate Practice: Regular, focused practice of specific skills
- Progressive Skill Acquisition: Learn fundamentals before moving to advanced concepts
- Minimal Yet Powerful: Focus on essential tools that provide the most value
- Cross-Platform: Works consistently on both macOS and Linux
- Project-Based Learning: Apply skills to real-world projects
- Language Polyglot: Support for Python, JavaScript, and Ruby workflows
-
Clone this repository:
git clone https://github.com/joshuamichaelhall/enhanced-terminal-env.git cd enhanced-terminal-env
-
Run the pre-installation check (optional but recommended):
./pre-check.sh
-
Run the installation script:
# For macOS or Linux ./install.sh
-
Verify your installation:
./verify.sh
The script will install and configure the necessary tools with sensible defaults for modern software development.
- Begin with the Month 1 Guide
- Follow the weekly assignments and daily practice routines
- Complete projects to apply your skills
- Progress through each month as you build your terminal mastery
- Cross-platform installation script for setting up all essential tools
- Language-specific development environments for Python, JavaScript, and Ruby
- Containerization tools for Docker and microservices
- Cloud tooling for AWS, Terraform, and Ansible
- Terminal-based HTTP clients for API testing
- Minimal configurations for Neovim, Tmux, and Zsh
- Comprehensive learning guides with clear objectives and exercises
- Quick reference cheatsheet for all tools
- Project suggestions to reinforce learning
- Zsh with key plugins and configurations
- Tmux for session management
- Neovim for efficient editing
- Git and GitHub CLI for version control
- Language-specific tools for Python, JavaScript, and Ruby
- Package managers (pip, npm, gem, etc.)
- Linting and formatting tools
- PostgreSQL and MongoDB Atlas CLI
- Docker and Docker Compose
- AWS CLI, Terraform, and Ansible
- Monitoring tools (htop, glances)
- Fuzzy finders (fzf)
- Ripgrep and fd for fast searching
- Custom shortcut functions
- HTTP clients (curl, HTTPie)
- Virtual environment management with Poetry
- REPL-driven development
- Testing with pytest from terminal
- Package management best practices
- Custom tmux sessions for Python development
- npm/yarn workflow optimization
- Node.js REPL for rapid testing
- Terminal-based debugging
- ESLint and Prettier integration
- Custom tmux sessions for JS development
- Gem management
- Bundler for dependencies
- IRB/Pry for interactive development
- Rubocop for linting
- Custom tmux sessions for Ruby development
After installation, you'll have access to the following commands:
mkpy <name>
- Create a Python development tmux sessionmkjs <name>
- Create a JavaScript development tmux sessionmkrb <name>
- Create a Ruby development tmux sessionmks <name>
- Create a generic development tmux session
pyproject <name>
- Create a new Python project with virtual environmentnodeproject <name>
- Create a new Node.js projectrubyproject <name>
- Create a new Ruby project
vf
- Find and edit files with fuzzy searchproj
- Navigate to projects with fuzzy searchextract <file>
- Extract archives of various formatsdsh
- Enter Docker container shell with fuzzy selection
The installation process has been significantly improved to handle common issues automatically. Most users should experience a smooth installation, but if you encounter problems:
If your installation is interrupted or encounters an error:
# Run the installation in recovery mode
./install.sh --recover
This will detect which components were successfully installed and continue from where it left off.
Directory creation and permission handling has been improved, but if you encounter permission errors:
# Fix permissions for configuration directories
sudo chown -R $(whoami) ~/.config ~/.local
chmod -R 755 ~/.config ~/.local
Python setup now properly handles PEP 668 restrictions ("externally-managed-environment") by using pipx and Poetry, eliminating the need for manual intervention.
Node.js detection and installation has been improved to work with both system-installed Node.js and NVM-installed versions.
Ruby installation now uses a more reliable approach, preferring system Ruby (via Homebrew on macOS or apt on Linux) which avoids RVM installation issues.
The Enhanced Terminal Environment now includes comprehensive Neovim setup that:
- Configures all language providers (Python, Node.js, Ruby, Perl)
- Automatically detects available languages on your system
- Properly configures init.lua with sensible defaults
- Ensures a smooth, warning-free Neovim experience
When running :checkhealth
in Neovim, you should see all providers properly configured based on your installed languages.
Configuration backup is now offered automatically if existing configurations are detected.
If you're still experiencing issues:
- Check the installation log:
install_log.txt
- Run the pre-check script before installation:
./pre-check.sh
- Use the verification script to identify problems:
./verify.sh
- Open an issue on the GitHub repository with your specific error messages
For detailed help with specific components:
- Tmux: Press
Ctrl+a ?
for a list of key bindings - Neovim: Type
:help
within Neovim - Shell: Review the aliases with
alias
command - Project templates: Run
pyproject
,nodeproject
, orrubyproject
without arguments to see usage
Contributions are welcome! If you'd like to improve the guides, fix issues, or suggest enhancements:
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin feature/your-feature
) - Open a Pull Request
This project was developed with assistance from Anthropic's Claude AI assistant, which helped with:
- Documentation writing and organization
- Code structure suggestions
- Troubleshooting and debugging assistance
- Development of comprehensive learning guides
Claude was used as a development aid while all final implementation decisions and code review were performed by Joshua Michael Hall.
This software is provided "as is", without warranty of any kind, express or implied. The authors or copyright holders shall not be liable for any claim, damages or other liability arising from the use of the software.
This project is a work in progress and may contain bugs or incomplete features. Users are encouraged to report any issues they encounter.
This project is licensed under the MIT License - see the LICENSE file for details.
"Master the basics. Then practice them every day without fail." - John C. Maxwell