{"_id":"base12","_rev":"56-5cee0b48e15194cb1ef101936165b7a7","name":"base12","description":"12factor.net app platform for node.js, built on express 3","dist-tags":{"latest":"0.3.5"},"versions":{"0.1.0":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.0","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"3.0.0alpha1-pre"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/hunterloftis/base12.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"45f09a17264bc31174490db6870d00b768aca07a","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.0.tgz","integrity":"sha512-Mx3YxDNc3K2X+glB1nt0tf51esS4Vp/VyB4H3vmBnrj2MJCvYj+54ARN4bxvWwqtsUCfUUG9VTozXUgNN6st7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEjkHpg/G/sVhNJbLrlSwwyXL/gpFOPkw3+taFJeMW/XAiAmZcDjrOxJB86BE0HX12Z04I+unIWnSidtOk3Om9ZabA=="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.1":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.1","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"3.0.0alpha1-pre"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/hunterloftis/base12.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"fb4ddc8b49f35befc5b3fa828ad98468cfe326fd","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.1.tgz","integrity":"sha512-yIP2o3S/oSzY3UXzobup3rjVNDRiU4nU2JloIkNUepIE7PdJRY92zjtKhjChvjdnF4RcXnhGpjE6p6pNnrMoWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1IdD5HrTsMwAwdXdLQLZQwC8H3aPnevafYWbD0NZ/8wIgXo+jez10jWintin4J7pAxTBMct2NKAdNlgygTEI0UtM="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.2":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.2","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/hunterloftis/base12.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"120359c6ec569dea467be1b623beee23f9ea8cb1","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.2.tgz","integrity":"sha512-n3HiqVaRXuqOxUQYV/5sAbIsPx2YkB4pWl9Ah0Z4kES+GsuCTR16Rua/bdvmCgiPiB579qRT0/uR6SN2ntpsqA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJ2SIBbElDmdX+0UvMj0kG9tapwKM3bsyWeU9sbJ2SEAiBqISHZy1RDX4moJBjVVetiSxhPBcGw2Rw/HPlXt8UjBw=="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.3":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.3","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/hunterloftis/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"5d8dbc1d31515ca2f8b7b493f14e61937eb696c7","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.3.tgz","integrity":"sha512-4jKrFI7pv05sq9qIphrb7WaSuaTS/DmJ1ci+I4acyvohsjbgH2cUp6HsRC8i9gVCR8Yb3oc5Sx+nT0k02cCggA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOvrHBMA40u6b+4IoLhCj2TLE3Ueho+PdDWPiXRwYNggIhAKGJu7LvQi5OjJZ6BjgSlccjnjUNxHzV3sPFviFl1515"}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.4":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.4","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/hunterloftis/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"6c491d176f66e145ee6192638e634387ed381c08","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.4.tgz","integrity":"sha512-zbam2jSh139yRQDgsmEz9J1w/Rtln/gMPb+R6pvIJ9OCwyczRMEhlVcAB8JAeRs+DelEMKDjKR+h6a8ZwS8orQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCai92gANnYDawykuJTeaI25aLdnFMxGca+Lhq5UJhUAIgStGUzmyM8uiX7rFRvMak4ZohHIcnQGRzW2hGbEj6iKo="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.5":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.5","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"8eb80fef0c16bf32c1f7e09eb6809adb5833794a","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.5.tgz","integrity":"sha512-QqYvUNFxrSjdYtUQZGUM59MTshLF/P/H/yR/xSkbeqcbtCpaIfsaq+BIhq6VTn40BmKObrC7bUSicYIU5hIVRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2iUVNYburHUFyoyWjhy0uSEkmv/rCX9LYfXQMWuSYSQIgfKgnK3XiJhyxMvZGNhSqeZfYBe2Oa4gkvBMFzTV1NEI="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.6":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.6","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"c693cfdbf46984019ba2ca4e4c4e9e55a9f16157","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.6.tgz","integrity":"sha512-qQNOXZ+3Yw6/aBmig87FoNWJhHgg0dB1T1UgDmrckOf0UtvZVMV5da5BHD4J9OinaruRkCEzdmKvab/+Ba6yKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe/Xu6lLDt0BzSdDPO4b5+p+KRFNuSf61T9fNsKMePDAIgaiZdpdTybdtIepOF+y98Tsn0ivGd73s0KAfcMnoHoGU="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.7":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.7","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git","jade":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"069ecfacba616708bf7aea92c61a60310afdb8f9","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.7.tgz","integrity":"sha512-mxcIiZ4mqXFMxot7WV4q0UDCkpeERVrtKLr5wifuTLWWmKbO3lomt+ODrkdj4CzhsR2+DmGfP2/aDrBBEZDFOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrMSbfixEASE/4vP9Z2kjeeoGKYK/DmO0olV7bUMZL7gIgdhB92joyKVh3Gxi9e2ycC5qpdazsQP0PcrAZjwBIrFg="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.1.8":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.1.8","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git","jade":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.1.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"28dfe57d5ec94a53c16f12a6bfc759f6628c5875","tarball":"https://registry.npmjs.org/base12/-/base12-0.1.8.tgz","integrity":"sha512-dYcDM0PKO2G0n9Ivu2w/vIByROvsN3xsLAzTLLGmG1PMQWzLptQKvVHGoNzz9o5A53zMuZ0q8iOEJvN3wxU5kg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkAGZIXreJ3clUKE85M56hnJpZ1AczewyEeHmThTQbawIgL2pt1N0kxeIt+Ey7KihNy51IkkMRWqI/eFtjUE3UzMY="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.0":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.0","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"4179af49c7ed167a4b453c286a7639b9de11c2cb","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.0.tgz","integrity":"sha512-11+5bP2uuRInr/65Hk9xdxtC8w4zHzBLKxE87Q4+w9tDXmpci2QMCBnR5fWoTrJJL0Om285nE53siF/MhHTTuQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8xPvE/V3cYKR+59lZP4Z7cIO+Mqyw5fAgY1H0OoqTJAiEAsR405+ysm+57zK3wgV1CLDCzbJKnamEflzVqaNoqato="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.1":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.1","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"88d047d1d767bdb472cbe12f81fb557855222bb2","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.1.tgz","integrity":"sha512-/SCGYSJcy2YjGiP0cL/V2EQGStYZcNvvuLuZG8ZoFWAo/eWtiJNvyRSlXwrsG+LAnerwt2j8U/IAxcgktNDuHw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0IH2UKh0WKhLTpUrfWzImGzn+jMmQ76Jvy6vLuX+b9AiBpqP0cIRF5RXctqc+4lP/5EMKVljhU6csZFKrAHZNyHA=="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.2":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.2","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"1fc0d18ac8af18a64e9162880874402c40f188f4","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.2.tgz","integrity":"sha512-tejJTcmbmB4DaJG0TyxECmeHvcs/VFA60kdqX96PA0Ha/tP03w431P4if1sk2xet46GGPRDut7jr/TZp+VxNmQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNyr5g/M6wJRTY48d4sI9fXWHzwPtTK43CvnTWdkZpCwIhAMwCD9XN4LlwFcxk571uXk5efl2T2myBM6wUHXxUixzK"}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.3":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.3","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"a92f5d8b10e6977ad5cb34f8aa85a8277a71a578","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.3.tgz","integrity":"sha512-yBMo7l3kut5CiAHPHz/JQpv9VAFEQgzFpgCbxQM12mYQ9WS6iKeJa5JlhoJ9L1XLWHcvhcBtN+xD2+ocLXHaDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAjE/lUJQr0OdcPG0vpQysAwkJkzt+/fYHmQhnTUsNMWAiEArNJ7fOB7KJhGHwHU9eqAizoSuyHblD0TQQtFyRwjLJU="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.4":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.4","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.1","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"1542d0599d2f8586e25829c37eda7efce5ff8165","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.4.tgz","integrity":"sha512-zU1BSj4NBE0FyX1zzkd5fEarkoevNdOEMIYhqgOgi7jRej6lR1Oq4RZYJoHiV7O7im4voVq1bjWMdpzVzobJxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGIHXOv9vREi7sjW7/XQdxA6vLF44PU9ZlYDiIoBg+5cAiBZWU+GvZcEQIVLfDsMCbWo7kxwwJk2359sM9S6/YAIdg=="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.5":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.5","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.2","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"f82f8d51344f64b541b59ed30706fa33c6d98e63","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.5.tgz","integrity":"sha512-utPp6m5xrgZoKb+jsoVA9UZpayxWyWI98uKk3/P7fZkAm/wnSukv/P+Luj25+48ddOc8RqyaHZtpgKSfeJN68Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNn6SuoWvNeY6EeEGVlNLCJYWyfxRo10XW+aFO3RUrZgIgHStGFXOzrHewV0eH9gR/9ro8PJFksJbJpxxbQgfGNYo="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.6":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.6","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.2","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"258e7042bceac66c0f30f5f98f166821cef3697e","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.6.tgz","integrity":"sha512-CmcXHaJP6TyLStZhyuO9xdTX5bUV6qcqFJbHW3yCzbA73+XYQm9qipDTd1GCB9xZZ85bXyarM+oIzzwg6pmcDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoKqOeXdAArAzQOJZ/+fRlgCVv6bFRt2IfNRC9Qim6hwIhAIxTYdCfUS7vK3c7NDLH5SX303DjabyWBNZ5Z3aO6p2z"}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.7":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.7","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.2","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"5c4f700d89f4907af3c9f2654746e6fcd9533261","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.7.tgz","integrity":"sha512-uNsnN8ERWyI6v6WCVleoxo8QlCe65zaOsBlU+3jOjLSGWVGJojSwRwlBIY3sZKm/Krui88l6JhuqxCAhq2/zbg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1lgwVcVJ6WOLjHWPOE1RXnk0fnBteiRXIaNq92kkpLAiA2bU0D5Yg8639ccyXcWN4KvopM3qbsI6Sv+STk0HYrxA=="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.8":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.8","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.2","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"8d14ebb383ebcdbee86902f29f184ccb30ff4771","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.8.tgz","integrity":"sha512-cdExIWcd4TSKDvwulYLdKTwW/Ei0kIoFo5LWKu6/3zkxdkH5pWJdii1W3+P6/JgAjt49Dgpg4IMO4H+GOcYtgQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoNb6a2I5ZT3BgXCR+XaxeMYs7kFpdhC19QW/dhcEmsgIhAIpTbeB612YFQq2MSLUfFpkJPUAmauJMQ600eraE3yl5"}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.2.9":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.2.9","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.2","express":"git://github.com/visionmedia/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.2.9","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"8737ef4767395fb02d5fff70bc1afd9a6ad1b700","tarball":"https://registry.npmjs.org/base12/-/base12-0.2.9.tgz","integrity":"sha512-ANCFWiA4rWgiz0N5xagFGIOzyPrOpjKyg6uiYBk1BBP9XroqLbIDH6mcPjM/I31SHYziXYeSvSxFqKbfvVYwlw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIETeM7+HcUeoyRraqJLnKAfso4Ft+qnyiyypDXaJaeFnAiEAlafd/AtkQLbUaxlWSkgPYXkxqXixxkc8KcjGdPb9HZs="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.3.1":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.3.1","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.3","express":"git://github.com/Skookum/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"309831447f5fcf977b76a4824adc27d96f2ba2d5","tarball":"https://registry.npmjs.org/base12/-/base12-0.3.1.tgz","integrity":"sha512-af6fgaIbkAoK+vZcSGNhpZHsVqChMuEbLr2/JJ7Mi7j0cju7oaDFd4GS+C6JZi9I9UbkJII30P/r7ZVsqQ81aw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGBbHIch3VTjdFBpLAbtHryXoT9oEbtdb5fn96fpjxHQIhAJ4t2J+71EGoXKH2aiXtTSpL4rl/9jQuZX7lIB3na4Nv"}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.3.2":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.3.2","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"}],"dependencies":{"connect":"2.0.3","express":"git://github.com/Skookum/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.3.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3fdc414fef6e85a3030ad4c5a5538d105b66e1f4","tarball":"https://registry.npmjs.org/base12/-/base12-0.3.2.tgz","integrity":"sha512-AZb2vwiDQ4W/mbTp0o92kYJ40oDf0R3nusBkxDjntzv/W8phKRfHjhFhTaFqz8RTBeO+ZF/8EbYs9dxpZxzTTQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr2h9JsmY78osuK3OEY2nsMVSgbo4UR43ITiHeV5bnHgIgJHfSCx4ky6BiJAAH39RFfep+y9YxBa/UqvCBlb5E2wE="}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.3.4":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.3.4","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"},{"name":"Raquel Velez","email":"raquel@skoomum.com"}],"dependencies":{"connect":"2.0.3","express":"git://github.com/Skookum/express.git","async":"latest","underscore":"latest","jade":"latest","commander":"latest"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"git://github.com/Skookum/base12.git"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"hunterloftis","email":"hunter@hunterloftis.com"},"_id":"base12@0.3.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"cb1302e19eeab0df5226154a135c8927d7c15dfd","tarball":"https://registry.npmjs.org/base12/-/base12-0.3.4.tgz","integrity":"sha512-ay4NFraWZqRm2KT5SJAuOPC4vtiRHH9GGdRGLrNNtFfJzvv0RE/pAbohZvoL6UvMY/2lWeN/Bvazf8+L1RXH7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCX13KBQ4MjkCHUfwitPC7c2uXfLMMpOG2+6n+S36O2wwIhANgv8csSYGZUpY41FrL+YG8uD/e3953YhaIcJPnmM1ko"}]},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"}],"directories":{}},"0.3.5":{"name":"base12","description":"12factor.net app platform for node.js, built on express 3","version":"0.3.5","author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"},{"name":"Raquel Velez","email":"raquel@skoomum.com"}],"dependencies":{"express":"3.0.1","connect":"2.6.2","async":"0.1.11","underscore":"1.4.2","jade":"0.27.6","commander":"1.1.1"},"devDependencies":{},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"repository":{"type":"git","url":"https://github.com/Skookum/base12"},"main":"index","bin":{"base12":"./bin/base12"},"scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.6.0"},"_id":"base12@0.3.5","dist":{"shasum":"712ac68f2d4ef7693e5cf652fee8320ea1a09ef3","tarball":"https://registry.npmjs.org/base12/-/base12-0.3.5.tgz","integrity":"sha512-z0SDhD9xPQY459dslBZTeo6KjpmPfeszynVb8wTZUc3g0w4eI7Qm6LdFsvvRQWuKpdkqdSlcGv1j5LkD+PJ6dQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsPXAGaQPvUlmhr+HGK3LQqDM7m2NKQ/bU1CnU0jCBfQIhALbwjF8z1fO9V/s7tYDVcNdX0yjgxfQ07qmRVc9B/6PJ"}]},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"snodgrass23","email":"snodgrass23@gmail.com"},"maintainers":[{"name":"hunterloftis","email":"hunter@hunterloftis.com"},{"name":"snodgrass23","email":"snodgrass23@gmail.com"},{"name":"dbecher","email":"dbecher@me.com"}]}},"readme":"# base12\n\n[12factor.net](http://12factor.net) web app platform for [node.js](http://node.js), built on [express 3](http://expressjs.com)\n\n```shell\n$ sudo npm install -g base12\n$ base12 new projectname && cd projectname\n$ make open\n```\n\n# Make commands\n\n#### Install all modules\n\n      $ make setup\n\n#### Run the app with one process and without file change restarts\n\n      $ make simple\n\n#### Run the app with default settings and open browser to app url\n\n      $ make open\n\n#### Run the app without default number of processes (num cpu's in machine)\n\n      $ make run\n\n#### Run the app, limiting to a single process\n\n      $ make run 1\n\n#### Run the app and cycle on file changes\n\n      $ make cycle\n\n#### Run the app and cycle on file changes, limiting to a single process\n\n      $ make cycle 1\n\n#### Run the app with single process and node profiling\n\n      $ make profile\n\n#### Run the app with single process and node profiling using `prof_lazy` option\n\n      $ make profile-lazy\n\n#### Run the app with default settings with node debugging enabled\n\n      $ make debug\n\n#### Run the app with default settings with node debugging enabled and immediately break on first line\n\n      $ make debug-brk\n\n\n# What you get\n\n**Production-ready**\n- Painlessly follow [Ryan Dahl's 'gospel'](https://twitter.com/#!/ryah/statuses/161865845692301312) for node.js apps ([12factor.net](http://12factor.net) by Adam Wiggins).\n\n**Cloud Deployments**\n- Deploy to the cloud easily with the addition of [nimbus](https://github.com/skookum/nimbus), out-of-the-box (supports joyent, amazon, linode, rackspace; TODO: heroku, nodejitsu).\n\n**Structure**\n- Always know where things go. An easy to use component driven layout with proven MVC architecture all on top of express.\n\n**Express 3**\n- Leverage the newest version of the most popular app framework for node.js.\n\n**Not Rails**\n- We believe that, if Rails is best for your project, you should use it.\nInstead, base12 embraces the node.js way: light processes, shallow inheritance, simple interfaces, and the chain-of-responsibility pattern.\n\n## Where stuff goes\n\n```\nassets                -- place to store assets for project (graphics, src files, etc.)\ncomponents            -- place to store components for small piecs of functionality in app  \n  /dashboard          -- default dashboard example component\n  /errors             -- default component for handling server errors\n  /user               -- default component for user functionality using mvc pattern (signup, signin, signout, settings)\ndoc                   -- documentation\nlib                   -- app specific and non-npm-published node.js libraries\n  /balance            -- uses cluster to create and blance multiple processes\n  /config-load        -- loads available config files\n  /flash              -- flash messaging\n  /inject             -- \n  /locals             -- add resuable local helpers to app views\n  /middleware         -- sets up express middleware (stylus, sessions, logs)\n  /mongoose           -- connects mongoose to mongodb\n  /mongoose-util      -- provides mongoose helpers (validations, plugins, etc)\n  /redis              -- provides app-wide redis connection\n  /reload             -- watches for file changes and reloads app\npublic                -- static files are hosted here\nscripts               -- scripts (eg admin, deployment, migrations)\ntest                  -- tests (mocha by default)\ntmp                   -- your app can store temporary files here\n\napp.js                -- runs your app\nconfig.default.js     -- default config (no sensative passwords or location specific options)\nconfig.local.js       -- local config (ignored by git, create to store sensative information and location specific options)\nconfig.test.js        -- config for running tests\nMakefile              -- automated task makefile\npackage.json          -- npm package.json\n```\n\n\n## Writing new components and libs\n\nAll base12 components have the same signature:\n\n```javascript\nmodule.exports = function(app) {\n  // ...\n  return my_module;\n}\n```\n\nThe component or lib is responsible for supplying the app with the needed interface hooks.  For example, a component might look like:\n\n```javascript\nmodule.exports = function(app) {\n  app.get('/dashboard', function(req, res) {\n    return res.render(require('path').join(__dirname, 'dashboard'), {\n      user: req.session.user\n    });\n  });\n};\n```\n\n\n## Updating constants and config\n\nApplication constants (values that do not change from machine to machine) are located in `config.default.js`.\n\n```js\nmodule.exports = {\n  http_port: 3000,\n  cluster: true,\n  request_timeout: 100000,\n  session_secret: \"base12secret\",\n  log_requests: false,\n  stylus_compress: 1,\n  stylus_debug: 1,\n  stylus_force: 1,\n  test: false,\n  redis_host: \"localhost\",\n  redis_port: 6379,\n  redis_pass: \"\",\n  redis_debug: false,\n  mongoose_url: \"mongodb://localhost/base12\"\n};\n```\n\nEnvironment config (values that can change from machine to machine) are located in `config.local.js`, which is not tracked by git.\nYou can create this file whenever needed and it values will override the defaults if both exist.\n\n```js\nmodule.exports = {\n  http_port: 80,\n  mongoose_url: \"mongodb://username:passsword@127.0.0.1/base12\"\n};\n```\n\n\n\n## The 12 Factors\n\n### 1. Codebase\n\n\"One codebase tracked in version control, many deploys.\"\n\nBase12 uses git-based deployments exclusively.\n\n### 2. Dependencies\n\n\"Explicitly declare and isolate dependencies.\"\n\nBase12 uses `npm install` both locally and in deploys to manage dependencies.\nManage your dependencies in `package.json`.\n\n### 3. Config\n\n\"Store config in the environment.\"\n\nBase12 uses the untracked config.local.js file to manage environment config. Once tooling is better supported on hosts, it will likely move to environment variables.\n\n### 4. Backing services\n\n\"Treat backing services as attached resources.\"\n\nBacking service configuration is stored in config.local.js on each host.\n\n### 5. Build, release, run\n\n\"Strictly separate build and run stages.\"\n\n`make build` builds a base12 app's assetes, while `make run` executes it. `make cycle` watches local files and cycles between build and run phases for rapid development.\n\n### 6. Processes\n\n\"Execute the app as one or more stateless processes.\"\n\nBase12 apps are stateless. The built-in session manager is backed by redis, and apps can be run as any number of independent processes forked from app.js.\nThe directory structure provides /tmp for temporary file manipulation, but provides no permanent file storage mechanism since that should be done through a backing service.\n\n### 7. Port binding\n\n\"Export services via port binding.\"\n\nUltimately, base12 relies on node's built-in http server to field requests. No http container or helper is needed.\n\n### 8. Concurrency\n\n\"Scale out via the process model.\"\n\nUsing deployment-specific process managers (eg, upstart), base12 keeps the master node.js process running.\nIn run.js, `base12.balance` uses cluster to spawn and monitor multiple processes on a single machine.\nNew process types can be created by writing modules with a `start()` method, and passing that process module to `base12.balance()` in run.js.\n\n### 9. Disposability\n\n\"Maximize robustness with fast startup and graceful shutdown.\"\n\nBase12 uses a crash-only design. Uncaught errors exit the process, triggering the balancer to replace it.\nStartup is nearly immediate.\n\n### 10. Dev/prod parity\n\n\"Keep development, staging, and production as similar as possible.\"\n\nWe encourage you to keep your config.local.js configurations as similar as possible across machines to maximize parity.\n\n### 11. Logs\n\n\"Treat logs as event streams.\"\n\nBase12 logs events directly to stdout and stderr.\n\n### 12. Admin processes\n\n\"Run admin/management tasks as one-off processes.\"\n\nAll admin processes are handled with scripts in the /scripts directory.\nBuilt-in scripts include provisioning and deployment, tests, dependency management, and generators.\n\n## System Requirements\n\n  * node.js >= 0.8.x\n  * npm >= 1.1.x\n  * redis\n  * mongodb (if using default user component)\n\n\n\n## License (The BSD3 License)\n\nCopyright (c) 2013, Skookum Digital Works\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n* Neither the names of \"Skookum\", \"Skookum Digital Works\", \"SDW\", nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.","maintainers":[{"email":"hunter@hunterloftis.com","name":"hunterloftis"},{"email":"snodgrass23@gmail.com","name":"snodgrass23"},{"email":"david@skookum.com","name":"dbecher"}],"time":{"modified":"2022-06-13T04:17:13.762Z","created":"2012-03-04T02:09:22.764Z","0.1.0":"2012-03-04T02:09:23.438Z","0.1.1":"2012-03-04T21:19:06.774Z","0.1.2":"2012-03-04T21:20:54.446Z","0.1.3":"2012-03-04T21:35:55.071Z","0.1.4":"2012-03-04T21:38:38.860Z","0.1.5":"2012-03-04T23:31:05.229Z","0.1.6":"2012-03-05T01:53:23.708Z","0.1.7":"2012-03-06T15:29:42.315Z","0.1.8":"2012-03-06T18:34:55.784Z","0.2.0":"2012-03-07T14:20:08.273Z","0.2.1":"2012-03-07T14:48:02.415Z","0.2.2":"2012-03-08T05:10:14.316Z","0.2.3":"2012-03-08T05:51:23.525Z","0.2.4":"2012-03-08T05:55:52.831Z","0.2.5":"2012-03-08T18:59:29.532Z","0.2.6":"2012-03-14T02:28:45.415Z","0.2.7":"2012-03-21T14:08:33.302Z","0.2.8":"2012-03-21T14:36:12.085Z","0.2.9":"2012-03-21T16:55:41.704Z","0.3.1":"2012-04-12T14:05:10.155Z","0.3.2":"2012-07-12T06:48:32.484Z","0.3.4":"2012-09-14T17:47:17.102Z","0.3.5":"2013-02-11T16:56:44.246Z"},"author":{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},"repository":{"type":"git","url":"https://github.com/Skookum/base12"},"keywords":["base12","framework","web","rest","restful","deploy","deployment","12factor","cloud"],"contributors":[{"name":"Hunter Loftis","email":"hunter@hunterloftis.com"},{"name":"Jim Snodgrass","email":"jim@skookum.com"},{"name":"David Becher","email":"david@skookum.com"},{"name":"Chris Gomez","email":"akagomez@gmail.com"},{"name":"Kenny Parnell","email":"kenny@skoomum.com"},{"name":"Raquel Velez","email":"raquel@skoomum.com"}],"readmeFilename":"readme.md"}