A while ago I got systematic about organizing the files on my computer. It started with a ~/github
directory that mirrors the structure of GitHub itself. If I’ve cloned visionmedia’s commander.js, I know I can find it in ~/github/visionmedia/commander.js
. This has helped make things easy to remember. Since then I’ve added an archive directory, a src directory (which contains most of my code), and a projects directory (which contains the code I’m currently working on. A few days ago I added an apps
directory.
What does my ~/apps
directory contain? It contains credentials and configuration for web apps, which I don’t want to store in my code repositories. For the fluxnote project I’m developing, it contains a script to set my environment variables to mirror what I require on Heroku:
export GITHUB_CLIENT_ID=7f2264d71eb1dfbc2611 export GITHUB_CLIENT_SECRET=copied_and_pasted_from_github export SESSION_SECRET=a_long_hard_to_guess_session_secret export GITHUB_USERNAME=benatkin export COUCH_URL=https://therystillonleamoldescle:hahahahaha@bat.cloudant.com/fluxnote/
(Side note: Cloudant has clever auto-generated usernames. The username and GitHub Client ID are real; the secrets and password are not.)
If I run source ~/apps/fluxnote/config
, the environment variables from the above script are loaded into my shell. Then I can run npm start
to start my server. (After I add my Procfile I’ll also be able to run it with foreman start
.)
I like it, because I have my credentials in one place, that I know not to give to anybody (and that would be hard to steal because I use full drive encryption).