Welcome to Tada! We're happy you're here. Let's get started.
This guide has one goal: Check code into production by the end of the day.
- Package Management
- Terminal Setup
- Browser Setup
- Credential Management
- Communication
- Editor and Plugins
- Dev Environment
- Source Control
- Production Tools
If you get stuck, as for help in team chat.
A word of advice: Don't get hung up on the breadth of any new tech. It'll all make sense soon, and Google is your friend until then.
Homebrew is the "missing package manager for OS X", and makes keeping bits in sync way easier.
Open your terminal and run the following commands:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
While you're at it, install cask, which extends what can be installed from homebrew.
brew install caskroom/cask/brew-cask
The default terminal that you've been using works, but once you go iTerm2 + Zsh, you never go back.
brew cask install iterm2
You can install Zsh from the terminal. There's a good chance that it's going to fail on your first run, and you'll be prompted to install Apple deverloper tools. After installing those, run the command again.
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Looking for alt + ←
or cmd + →
? Yeah, us too. This thread on StackOverflow provides a fix.
Zsh has a ton of plugins available for tab-based auto complete, which can be activated by adding entries to the plugins
tuple in ~/.zshrc
. Here are a few that you might find useful:
plugins=(git aws brew github npm node osx vagrant)
Looking for a theme? Lots of people love Solarized, and Dracula is a favorite of ours.
You'll need Chrome, Firefox, and Safari (you're probably looking at it) regularly for sanity-checking compatability.
brew cask install google-chrome
brew cask install firefox
- React Developer Tools | Chrome | Firefox: Makes developing React views easier.
- Advanced Rest Client | Chrome: HTTP and REST client for testing APIs
We have a collection of Windows VMs to test the app in markets where legacy support is a must. These installs are outside of the scope of this guide, so ask for help if you're working on a market-sensitive feature.
LastPass is used for securely sharing credentials, certificates, and other things too sensitive to pass around by email.
You can install Lastpass here. This is extremely sensivite software, and the preferred install method is via this link.
If you feel really adamant about managing this install from Homebrew, just make sure that brew cask info lastpass
references https://github.com/caskroom/homebrew-cask/blob/master/Casks/lastpass.rb
, and that lastpass.rb
points to https://lastpass.com/download/cdn/lpmacosx.zip
.
Us too, but LastPass lets us federate and log access, which beats passing around a keystore. Your creds will arrive on edible paper shortly.
We prize strong communication. Bookmark these links as you'll be referring to them often.
- Tada @ Slack: Team chat
- Tada Dev @ Trello: Sprint planning boards
###Email and Calendar Our team uses Office 365, which includes access to Word, Excel, PowerPoint, Outlook, and our OneNote archive. Log in here with the credentials stored in your LastPass account to start the installation process.
Yes, you can use your favorite editor.
Our go-to is Sublime Text. This setup works with all of our stuff, so if you aren't super opinionated, give it a spin. Even if you are, you should probably follow along since your editor needs to support equivalent plugins.
brew cask install caskroom/versions/sublime-text3
Next, run this command to allow you to call sublime from the terminal
sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/bin/sublime
###Plugins Install Package Control, which manages plugins within ST.
Cmd + shift + p
opens the Package Control prompt after installation. Search install
and select Package Control - Install Package
for each of the following:
- Babel
- Editor Config
- Sass
- Sublime Linter
- SublimeLinter-eslint
- Run:
brew install node
- Run:
npm install -g eslint
- Run:
- SublimeLinter-scss-lint
- Run:
npm install -g sass-lint
- Run:
- Markdown Preview
- ApplySyntax
You can also install themes like Solarized and Dracula (along with thousands of others) in Package Control.
##Dev Environment We host our development environments in Vagrant-managed VirtualBox VMs. This helps us eliminate per-machine config isues when bugs crop up, and improves reproducability.
brew cask install virtualbox
brew cask install vagrant
###Where's Otto? It's under investigation, and will likely find its way into our stack after it's had some time to brew.
##Source Control We use Git for source control, and GitHub as our host.
If you don't already have one, create a GitHub account and then follow this guide to generate an SSH key pair and to test GitHub authentication.
Get someone official looking to add you to the Tada Works organization so you can start pulling down code!
We've all been there. Here's an excellent tutorial
Git from the Bottom Up is another fantastic resource to help you understand how Git works, something most people who use it every day don't fully understand. We recommend this even to seasoned folk.
We currently deploy Dockertized services to our CoreOS cluster, hosted in AWS. AWS credentials are available in LastPass.
brew install fleetctl
brew install awscli
- Babel Try Out: Babel is an ES2015+ (aka ES6+) to vanilla JavaScript transpiler, allowing us to write modern JavaScript code today.
- A Beginner's Guide to NPM: A quick overview of the Node Package Manager
- Webpack Tutorial: Gives an overview of the Webpack module bundler, a tool we use to package up our JavaScript code for the web.
- Vagrant: Vagrant is used to bootstrap our development environment. If you can type
vagrant up
, feel free to skip this one. - Docker: An overview of running Docker containers on CoreOS. We use Vagrant to scaffold CoreOS on our local machines.
This is a pretty brief overivew, designed to get you up and running as quickly as possible. Each repository contains a README.md
with basic usage instructions to get you started. If you have any questions, ask them in team chat. A great one to start with: "Hey, why are we using JavaScript?"