# Awesome Dev Env

A curated list of awesome tools, resources and workflow tips making an awesome development environment.

Inspired by awesome-go, which was in turn inspired by awesome-python.

### Contributing

Guidelines tweaked and adapted from `awesome-go` - thanks!

But in short:

- List is alphabetically sorted
- If you think an item shouldn’t be here open an issue

Many thanks to everyone on the contributor list :)

# Content

Note: for an OS specific tool, please do your best to mark with `OSX/WIN/*NIX/LIN`

- Admins
- Benchmarking
- Data
- Diagnostics
- Desktop
- Documentation
- Dotfiles
- Editors
  - Atom
  - Sublime Text
  - Vim
  - IntelliJ
  - VSCode
- Git
- Misc
- Notifications
- Orchestration
- Presentation
- Shell
- Text
- Terminal
- Workflow

## Admins

Tools to manage databases, permissions, etc.

- hss - Never type the annoying ssh commands again.
- MongoHub - Native OSx client for mongo
- Robomongo - a cross platform Admin for MongoDB

## Benchmarking

Tools to benchmark your code or services

- apachebench (ab)
- boom
- httperf
- phantomas - website perf evaluation tool
- siege
- Vegeta
- wrk
- redis-faina Instagram’s Redis counter/timing stats based on the MONITOR command

## Data

Tools for handling online and offline data

- s3cmd - the S3 CLI tool for Amazon

## Diagnostics

Tools for checking diagnosing your system while you work

- glances
- nmon
- gtop

## Desktop

Tools for improving and hacking around with your vanilla desktop

- Alfred - OSX productivity app `/OSX/`
- hydra - script your desktop `/OSX/`
- Keycastr - show your keys while presenting/casting `/OSX/`

## Documentation

Tools to document your project

- Log4brains - Docs-as-code knowledge base to manage Architecture Decision Records (ADR) for your project and publish them automatically as a static website.

## Dotfiles

- dotfiles.github.io - Collected dotfile resources. Has sections with dotfile bootstraps and lists of frameworks for various shells and editors.
- Zach Holman’s - oh-my-zsh, osx, Zsh, vi, Ruby, Git, and more
- Mathias Bynens’s - .files, including ~/.osx — sensible hacker defaults for OS X
- Thoughtbot’s - A set of vim, zsh, git, and tmux configuration files
- Paul Miller’s - Colourful & robust OS X configuration files and utilities

## Editors

Only awesome tools and addons for your favorite editor

### Atom

- atom-beautify - Beautify HTML (including Handlebars), CSS (including Sass and Less), JavaScript, and much more in Atom.
- file-icons - Adds file specific icons to atom for improved visual grepping.
- highlight-selected - Double click on a word to highlight it throughout the open file.
- minimap - A graphical map (preview) of the full source code.
- minimap-git-diff - A minimap binding for the Atom git-diff package.
- minimap-highlight-selected - A minimap binding for the highlight-selected package.
- atom-project-manager - Get easy access to all your projects and manage them with project specific settings and options.
- atom-tree-view-git-status - Show the Git repository status in the Atom tree-view.
- atom-pigments - An Atom package to display colors in project and files.

### Vim

- Completor - async autocomplete with support for omni and semantic completion.
- Powerline - improved status bar for your buffers.
- snipmate - textual snippets compatiable with Textmate snippets.
- The Ultimate Vim Distribution - spf13-vim is a distribution of vim plugins and resources for Vim, GVim and MacVim.

### Sublime Text 3

- AdvancedNewFile - File creation plugin.
- Emmet
- Git Gutter - display changed/added lines in the margin of the editor window.
- jsFormat - Javascript formatting.
- LiveReload - LiveReload plugin.
- MarkdownEditing - Markdown syntax understanding and good color schemes.
- Package Control - The Sublime Text package manager.
- RubyTest - Plugin for running Ruby tests.
- Side Bar Enhancments - Enhancements to Sublime Text sidebar. Files and folders.
- Sublime Git - Git Integration for Sublime.
- Sublime Linter - Interactive code linting.
- TrailingSpaces - Highlight trailing spaces and delete them in a flash.

### Intellij

- keymap - a hybrid Vim/ReSharper/Intellij keymap

### Visual Studio Code

- Dev Git Repo - Github code repository for VS Code
- Monaco Editor Git Repo - Github code repository for underlying browser-based editor

#### Extensions

- VS Code Extension Marketplace - Official website for extensions
- Python extension - Official Python extension
- Sync settings - Excellent extension for settings and extension sync of your VS code setup

## Git

Tools and addons for making an awesome Git experience

- awesome-github - Faraz Fallahi maintains a curated list of GitHub & Git resources.
- gh - Fast GitHub command line client (hub port to Go)
- git-extra-commands - collected git helper scripts
- git-extras - GIT utilities – repo summary, repl, changelog population, author commit percentages and more
- git-it-on - ZSH plugin, adds a gitit command that opens the current directory on github in your current branch
- git-secret - A bash-tool to store your private data inside a git repository.
- git-semver - A git plugin to make Semantic Versioning 2.0.0 and Change Log management easier.
- git-sweep - safely removes branches that have been merged into the master
- git-up - a better ‘git pull’
- hub - git CLI wrapper which makes working with GitHub easier
- scm_breeze Streamline your git workflow
- tig - an ncurses-based text-mode interface for git

## Misc

Useful tools that cannot find a home in other categories

- Fenix Web Server - A multi-host local static web server with push-button sharing (desktop app).
- ML Workspace - All-in-one web-based development environment for machine learning and data science.
- Mockoon - an API / HTTP REST mocking desktop application
- HTTP Toolkit - an HTTP inspection & debugging desktop application

## Notifications

Tools that notify developers about changes in their work environment

- CatLight - status notifier for developers. Checks the status of continuous delivery builds and shows desktop notifications.

## Orchestration

Tools for orchestrating awesome development environments

- azk - a lightweight open source engine to orchestrate development environments
- Nanobox - A micro-PaaS (μPaaS) for creating consistent, isolated, development environments deployable anywhere https://nanobox.io.

## Presentation

Tools for presenting your work

- bespoke.js - DIY Presentation Micro-Framework
- hacker-slides - Reveal.js based presentation tool
- impress.js - presentation framework based on the power of CSS3 transforms and transitions
- mithril-slides - A Keynote-inspired presentation app written with Mithril
- remark - markdown based presentation on your browser
- reveal.js - markdown based presentation on your browser
- deck.js - markdown based presentation on your browser
- vimdeck - present inside your Vim
- WebSlides - Making HTML presentations easy

## Shell

Tools for having an awesome shell environment

- awesome-zsh-plugins - List of zsh plugins usable with zgen and other oh-my-zsh compatible zsh frameworks
- fish-shell - The user-friendly command line shell
- hss - Never type the annoying ssh commands again.
- oh-my-fish - Framework for managing your fish shell configuration inspired by oh-my-zsh.
- oh-my-zsh - A community driven framework for managing zsh configuration.
- zgen - Faster framework for managing your zsh configuration, backward compatible with oh-my-zsh plugins
- zsh - A shell designed for interactive use, although it is also a powerful scripting language.
- shellcheck - Lint for shell. Will find deprecated and/or dangerous usage in shell scripts
- zsh quickstart kit - Quick intro for getting set up with zsh and zgen

## Text

Tools for working with text files - search, replace, processing

- ack - the Perl based better-than-grep tool.
- ag - A C based code-searching tool similar to ack, but faster
- peco - interactive filtering, like interactive Grep
- ripgrep - Faster than grep, written in Rust

## Terminal

Tools and addons for terminal and terminal work

- autojump - remembers your folders and jump to them based on partial recall (e.g. `j proj` will jump to `/home/Users/yourself/projects`.
- fasd Command-line productivity booster, offers quick access to files and directories.
- freshenv - Provision, share, manage local and cloud developer environments.
- homebrew - Makes it easy to install open source packages on an `OS X` system with a single command.
- hss - Never type the annoying ssh commands again.
- httpie A command line HTTP client, a user-friendly cURL replacement.
- iTerm2 - a great terminal replacement `/OSX/`
- jq - a lightweight and flexible command-line JSON processor
- oh-my-zsh - the incredible ZSH addon.
- Pipe Viewer - a tool for monitoring the progress of data through a pipeline
- tmux the awesome terminal multiplexer.
- zoxide - A better way to navigate your filesystem. Written in Rust, cross-shell, and much faster than other autojumpers.

## Workflow

Tools and addons which improve your daily workflow with code

- fswatch - a watch tool which will emit FS events and you can run commands on demand with. Note - `fswatch-run` too.
- guard - FS watch tool with a huge ecosystem of plugins
- just - A task runner for conveniently saving and running project-specific commands. Similar to make, but much nicer
- LiveReload - FS watch and preprocessor as a desktop app for `/OSX/` and `/WIN/` with complementary browser extensions
  - guard-livereload - Guard plugin compatible with LiveReload’s browser extensions
  - simplehttp Fastest and simplest way to start serving a local directory over http.
- watchman - Facebook’s better `watch` - note it works as a service.
- Zappr - GitHub integration built to enhance your project workflow via enable/disable pull request approval checks.
- ergo - The management of multiple local services running over different ports made easy.
- Prodmodel - Build tool for data science pipelines.
- Gebug - A tool that makes debugging of Dockerized Go applications super easy by enabling Debugger and Hot-Reload features, seamlessly.

devenv.md Github