split field guides into separate categories

This commit is contained in:
Berkeley Martinez 2015-07-11 19:51:08 -07:00
parent bfd51b66b6
commit 8b0b5dd6ce
7 changed files with 553 additions and 337 deletions

View File

@ -15,6 +15,9 @@
"description": {
"type": "array",
"unique": false
},
"category": {
"type": "string"
}
},
"validations": [],

310
seed/field-guides/FYI.json Normal file
View File

@ -0,0 +1,310 @@
[
{
"id": "bd7158d9c436eddfaeb5bd3f",
"name": "Can I jump around in this guide?",
"dashedName": "can-i-jump-around-in-this-guide",
"category": "FYI",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>This guide was designed as a reference for you. You shouldn't try to read it all today.</h3>",
" <p class='large-p'>Feel free to come back any time and jump around, reading any articles that seem interesting to you at the time.</p>",
" <p class='large-p'>If you're currently doing our \"Browse our Field Guide\" Waypoint, go ahead and mark that challenge complete and move on to your next Waypoint.</p>",
"</div>"
]
},
{
"id": "bd7159d9c436eddfaeb5bdef",
"name": "Can I Calculate the True Cost of a Bootcamp with a Coding Bootcamp Cost Calculator?",
"dashedName": "can-i-calculate-the-true-cost-of-a-bootcamp-with-a-coding-bootcamp-cost-calculator",
"category": "FYI",
"description": [
"<script src=\"/js/calculator.js\"></script>",
"<div class=\"row\">",
" <div class=\"col-xs-12 col-sm-10 col-md-8 col-lg-6 col-sm-offset-1 col-md-offset-2 col-lg-offset-3\">",
" <h1 class=\"text-center\">Coding Bootcamp Cost Calculator</h1>",
" <h3 id=\"chosen\" class=\"text-center text-primary\">Coming from _______, and making $_______, your true costs will be:</h3>",
" <div id=\"city-buttons\">",
" <div class=\"spacer\"></div>",
" <h2 class=\"text-center\">Where do you live?</h2>",
" <div class=\"spacer\"></div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"atlanta\" class=\"btn btn-primary btn-block btn-lg\">Atlanta</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"austin\" class=\"btn btn-primary btn-block btn-lg\">Austin</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"brisbane\" class=\"btn btn-primary btn-block btn-lg\">Brisbane</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"boulder\" class=\"btn btn-primary btn-block btn-lg\">Boulder</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"chicago\" class=\"btn btn-primary btn-block btn-lg\">Chicago</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"denver\" class=\"btn btn-primary btn-block btn-lg\">Denver</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"hong-kong\" class=\"btn btn-primary btn-block btn-lg\">Hong Kong</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"london\" class=\"btn btn-primary btn-block btn-lg\">London</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"los-angeles\" class=\"btn btn-primary btn-block btn-lg\">Los Angeles</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"manchester\" class=\"btn btn-primary btn-block btn-lg\">Manchester</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"melbourne\" class=\"btn btn-primary btn-block btn-lg\">Melbourne</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"new-york-city\" class=\"btn btn-primary btn-block btn-lg\">New York City</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"portland\" class=\"btn btn-primary btn-block btn-lg\">Portland</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"raleigh-durham\" class=\"btn btn-primary btn-block btn-lg\">Raleigh-Durham</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"san-francisco\" class=\"btn btn-primary btn-block btn-lg\">San Fransisco</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"seattle\" class=\"btn btn-primary btn-block btn-lg\">Seattle</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"singapore\" class=\"btn btn-primary btn-block btn-lg\">Singapore</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"toronto\" class=\"btn btn-primary btn-block btn-lg\">Toronto</button>",
" </div>",
" <div class=\"col-xs-12 btn-nav\">",
" <button id=\"other\" class=\"btn btn-primary btn-block btn-lg\">Other</button>",
" <div class=\"spacer\"></div>",
" </div>",
" </div>",
" <div id=\"income\" class=\"initially-hidden\">",
" <div class=\"spacer\"></div>",
" <h2 class=\"text-center\">How much money did you make last year (in USD)?</h2>",
" <div class=\"spacer\"></div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"0\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$0</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"20000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$20,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"30000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$30,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"40000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$40,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"50000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$50,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"60000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$60,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"70000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$70,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"80000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$80,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"90000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$90,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"100000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$100,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"120000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$120,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"140000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$140,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"160000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$160,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"180000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$180,000</button>",
" </div>",
" <div class=\"col-xs-12 col-sm-12 col-md-4 btn-nav\">",
" <button id=\"200000\" href=\"#\" class=\"btn btn-primary btn-block btn-lg\">$200,000</button>",
" <div class=\"spacer\"></div>",
" </div>",
" </div>",
" <div id=\"chart\" class=\"initially-hidden\">",
" <div class=\"d3-centered\">",
" <svg class=\"chart\"></svg>",
" </div>",
" </div>",
" <div id=\"explanation\" class=\"initially-hidden\">",
" <div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <div class=\"text-center\">",
" <button id=\"transform\" class=\"btn btn-primary btn-lg\">Transform</button>",
" <div class=\"button-spacer\"></div><a href=\"/json/bootcamps.json\">View Data Source JSON</a><span>&nbsp; &bullet; &nbsp;</span><a href=\"/coding-bootcamp-cost-calculator\">Recalculate</a>",
" </div>",
" <h3>Notes:</h3>",
" <ol>",
" <li class=\"large-li\">For cash-up-front bootcamps, we assumed an APR of 6% and a term of 3 years.</li>",
" <li class=\"large-li\">For wage-garnishing bootcamps, we assume 18% of first year wages at their advertised starting annual salary of around $100,000.</li>",
" <li class=\"large-li\">We assume a cost of living of $500 for cities like San Francisco and New York City, and $400 per week for everywhere else.</li>",
" <li class=\"large-li\">The most substantial cost for most people is lost wages. A 40-hour-per-week job at the US Federal minimum wage would pay at least $15,000 per year. You can read more about economic cost<a href=\"https://en.wikipedia.org/wiki/Economic_cost\" target=\"_blank\"> here</a>.</li>",
" <li class=\"large-li\">Free Code Camp. We don't charge tuition or garnish wages. We're fully online so you don't have to move. We're self-paced so you don't have to quit your job. Thus, your true cost of attending Free Code Camp will be $0.</li>",
" </ol>",
" <div class=\"spacer\"></div>",
" <div class=\"row\">",
" <div class=\"col-xs-12 col-sm-4 col-md-3\"><img src=\"https://www.evernote.com/l/AHRIBndcq-5GwZVnSy1_D7lskpH4OcJcUKUB/image.png\" class=\"img-responsive testimonial-image\"/></div>",
" <div class=\"col-xs-12 col-sm-8 col-md-9\">",
" <h3>Built by Suzanne Atkinson</h3>",
" <p class=\"large-p\">Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should &thinsp;<a href=\"https://twitter.com/intent/user?screen_name=SteelCityCoach\" target=\"_blank\">follow her on Twitter</a>.</p>",
" </div>",
" </div>",
" <div class=\"spacer\"></div>",
" </div>",
" </div>",
" </div>",
"</div>"
]
},
{
"id": "bd7158d9c442eddfaeb5bdef",
"name": "How do I best use the Global Control Shortcuts for Mac?",
"dashedName": "how-do-i-best-use-the-global-control-shortcuts-for-mac",
"category": "FYI",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>These Global Control Shortcuts for Mac will save you hours by speeding up your typing.</h3><br>",
" <div class=\"embed-responsive embed-responsive-16by9\"><iframe src=\"//player.vimeo.com/video/107073108\" class=\"embed-responsive-item\"></iframe></div>",
" <p class='large-p'>These global shortcuts work everywhere on a Mac:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>Control + F = Forward</li>",
" <li class='large-li'>Control + B = Backward</li>",
" <li class='large-li'>Control + N = Next Line</li>",
" <li class='large-li'>Control + P = Previous Line</li>",
" <li class='large-li'>Control + H = Backspace</li>",
" <li class='large-li'>Control + D = Delete</li>",
" <li class='large-li'>Control + A = Beginning of Line</li>",
" <li class='large-li'>Control + E = End of Line</li>",
" <li class='large-li'>Control + K = Kill line</li>",
" </ul>",
" </p>",
"</div>"
]
},
{
"id": "bd7158d9c445eddfaeb5bdef",
"name": "How can I get to Inbox Zero with Gmail shortcuts?",
"dashedName": "how-can-i-get-to-inbox-zero-with-gmail-shortcuts",
"category": "FYI",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>These Gmail Shortcuts will save you hours and help you get to Inbox Zero.</h3><br/>",
" <div class=\"embed-responsive embed-responsive-16by9\">",
" <iframe src=\"//player.vimeo.com/video/115194016\" class=\"embed-responsive-item\"></iframe>",
" </div>",
" <p class='large-p'>The shortcuts:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>j - move down</li>",
" <li class='large-li'>k - move up</li>",
" <li class='large-li'>o - open</li>",
" <li class='large-li'>r - reply</li>",
" <li class='large-li'>a - reply all</li>",
" <li class='large-li'>f - forward</li>",
" <li class='large-li'>c - compose</li>",
" <li class='large-li'>x - select</li>",
" <li class='large-li'>e - archive</li>",
" <li class='large-li'>! - mark spam</li>",
" <li class='large-li'>z - undo</li>",
" </ul>",
" </p>",
"</div>"
]
},
{
"id": "bd7158d9c445eddfaeb5bdff",
"name": "How can I deploy a website without writing any code at all?",
"dashedName": "how-can-i-deploy-a-website-without-writing-any-code-at-all",
"category": "FYI",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>It's possible to build dynamic, mobile-responsive websites without writing any code at all, in just a few minutes.</h3><br/>",
" <div class=\"embed-responsive embed-responsive-16by9\">",
" <iframe src=\"//player.vimeo.com/video/115194017\" class=\"embed-responsive-item\"></iframe>",
" </div>",
" <p class='large-p'>Here are the technologies we used here:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'><a href='http://www.atom.io/'>atom.io</a> - a free code editor</li>",
" <li class='large-li'><a href='http://www.startbootstrap.com/'>startbootstrap.com</a> - a collection of free responsive (Bootstrap) templates</li>",
" <li class='large-li'><a href='http://www.powr.io/'>powr.io</a> - a collection of free JavaScript plugins</li>",
" <li class='large-li'><a href='http://www.bitballoon.com/'>bitballoon.com</a> - a tool for drag and drop website deployment</li>",
" </ul>",
" </p>",
" <p class='large-p'>You will quickly reach the limits of what you can do without actually coding, but it's nice to be able to rapidly build working prototype websites like this.</p>",
"</div>"
]
},
{
"id": "bd7158d9c447eddfaeb5bdef",
"name": "How do I install Screenhero?",
"dashedName": "how-do-i-install-screenhero",
"category": "FYI",
"description": [
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
" <h3><a href=\"http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLnppcD9zb3VyY2U9d2ViIn0=\">Download for Mac</a></h3>",
" <h3><a href=\"http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjoxLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLXNldHVwLmV4ZSJ9\"> Download for Windows</a></h3>",
" <p class='large-p'>You'll use Screenhero to pair program starting with <a href='/challenges/pair-program-on-bonfires'>http://freecodecamp.com/challenges/pair-program-on-bonfires</a></p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfaeb5dd3b",
"name": "What other resources does Free Code Camp recommend to nonprofits?",
"dashedName": "what-other-resources-does-free-code-camp-recommend-to-nonprofits",
"category": "FYI",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h2>Here are some excellent resources for nonprofits.</h2>",
" <h3>Please note that Free Code Camp is not partnered with, nor do we receive a referral fee from, any of the following providers. We simply want to help guide you towards a solution for your organization.</h3>",
" <h3>Skills-based Volunteer Organizations:</h3>",
" <p class='large-p'><a href='http://www.volunteermatch.com'>http://www.volunteermatch.com</a></p>",
" <p class='large-p'><a href='http://www.catchafire.org'>http://www.catchafire.org</a></p>",
" <h3>Building a website:</h3>",
" <p class='large-p'><a href='http://www.wix.com/'>http://www.wix.com/</p>",
" <p class='large-p'><a href='https://wordpress.com/'>https://wordpress.com/</p>",
" <p class='large-p'><a href='http://www.freecodecamp.com/field-guide/how-can-i-deploy-a-website-without-writing-any-code-at-all'>Build it yourself for free with no code</a></p>",
" <h3>Donor and Volunteer Management Systems</h3>",
" <p class='large-p'><a href='https://www.thedatabank.com/'>https://www.thedatabank.com/</a></p>",
" <p class='large-p'><a href='http://www.donorsnap.com/'>http://www.donorsnap.com/</a></p>",
" <p class='large-p'><a href='http://www.donorperfect.com/'>http://www.donorperfect.com/</a></p>",
" <p class='large-p'><a href='https://www.blackbaud.com/fundraising-crm/etapestry-donor-management'>https://www.blackbaud.com/fundraising-crm/etapestry-donor-management</a></p>",
" <p class='large-p'><a href='http://www.z2systems.com/'>http://www.z2systems.com</a></p>",
" <p class='large-p'><a href='http://www.regpacks.com/volunteer-management/'</a>http://www.regpacks.com/volunteer-management</a></p>",
" <p class='large-p'><a href='http://sumac.com/'>http://sumac.com</a></p>",
" <p class='large-p'><a href='http://www.volgistics.com'>http://www.volgistics.com</a></p>",
" <h3>Inventory Management Systems</h3>",
" <p class='large-p'><a href='https://www.ezofficeinventory.com/industries/non-profits'>https://www.ezofficeinventory.com/industries/non-profits</a></p>",
" <p class='large-p'><a href='https://www.ordoro.com'>https://www.ordoro.com</a></p>",
" <p class='large-p'><a href='http://www.unleashedsoftware.com'>http://www.unleashedsoftware.com</a></p>",
" <h3>E-Learning platforms</h3>",
" <p class='large-p'><a href='http://www.dokeos.com/'>http://www.dokeos.com</a></p>",
" <p class='large-p'><a href='http://www.efrontlearning.net/'>http://www.efrontlearning.net/</a></p>",
" <p class='large-p'><a href='https://moodle.org/'>https://moodle.org/</a></p>",
" <p class='large-p'><a href='https://sakaiproject.org/'>https://sakaiproject.org/</a></p>",
" <h3>Community Management</h3>",
" <p class='large-p'><a href='https://civicrm.org/'>https://civicrm.org/</a></p>",
" <p class='large-p'><a href='http://tcmgr.com/'>http://tcmgr.com/</a></p>",
" <h3>Electronic Forms</h3>",
" <p class='large-p'><a href='http://www.google.com/forms'>http://www.google.com/forms</a></p>",
" <p class='large-p'><a href='http://www.typeform.com'>http://www.typeform.com</a></p>",
"</div>"
]
}
]

View File

@ -0,0 +1,22 @@
[
{
"id": "bd7158d9c436eddfaeb5bd3c",
"name": "How can I reach the Free Code Camp team to interview them for my publication?",
"dashedName": "how-can-i-reach-the-free-code-camp-team-to-interview-them-for-my-publication",
"category": "contact",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>We're happy to do a quick interview for your publication or show. Here's whom you should contact about what, and how to best reach them:</h3>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>Want to talk to about Free Code Camp's curriculum or long-term vision? Reach out to Quincy Larson. He's <a href='https://twitter.com/ossia' target='_blank'>@ossia</a> on Twitter and @quincylarson on Gitter.</li>",
" <li class='large-li'>Want to talk about Free Code Camp's open source codebase, infrastructure, or JavaScript in general? Talk to Nathan Leniz. He's <a href='https://twitter.com/terakilobyte' target='_blank'>@terakilobyte</a> on Twitter and @terakilobyte on Gitter.</li>",
" <li class='large-li'>Want to explore our efforts to empower nonprofits with code? Michael D. Johnson eats, sleeps and breathes that. He's <a href='https://twitter.com/figitalboy' target='_blank'>@figitalboy</a> on Twitter and @codenonprofit on Gitter.</li>",
" <li class='large-li'>Want to get a camper's perspective on our community? Talk with Bianca Mihai (@biancamihai on Gitter and <a href='https://twitter.com/bubuslubu' target='_blank'>@bubuslubu</a> on Twitter) or Suzanne Atkinson (@adventurebear on Gitter and <a href='https://twitter.com/SteelCityCoach' target='_blank'>@steelcitycoach</a> on Twitter).",
" </ol>",
" </p>",
" <p class='large-p'>We strive to be helpful and transparent in everything we do. We'll do what we can to help you share our community with your audience.</p>",
"</div>"
]
}
]

View File

@ -3,6 +3,7 @@
"id": "bd7158d9c441eddfaeb5bdef",
"name": "How do I use this guide?",
"dashedName": "how-do-i-use-this-guide",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>This guide strives to provide clear answers to common questions about Free Code Camp, learning to code, and getting a coding job.</h3>",
@ -15,6 +16,7 @@
"id": "bd7158d9c441eddfaeb5bdff",
"name": "What exactly is Free Code Camp?",
"dashedName": "what-exactly-is-free-code-camp",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>We're a community of busy people who learn to code by building projects for nonprofits.</h3>",
@ -33,6 +35,7 @@
"id": "bd7158d9c441eddfaeb5bd1f",
"name": "Why do I need Free Code Camp?",
"dashedName": "why-do-i-need-free-code-camp",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>Learning to code is hard.</h3>",
@ -51,6 +54,7 @@
"id": "bd7158d9c441eddfaeb5bd2f",
"name": "What are the main advantages of Free Code Camp?",
"dashedName": "what-are-the-main-advantages-of-free-code-camp",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>Our main advantage is that we're accessible to busy adults who want to change careers. Specifically, we're:</h3>",
@ -68,6 +72,7 @@
"id": "bd7158d9c441eddfaeb5bd3f",
"name": "How does Free Code Camp work?",
"dashedName": "how-does-free-code-camp-work",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>Our free, self-paced, browser-based program takes about 1,600 hours to complete.",
@ -90,6 +95,7 @@
"id": "bd7158d9c441eddfaeb5bd4f",
"name": "Will I really be able to get software engineering job after Free Code Camp?",
"dashedName": "will-i-really-be-able-to-get-a-software-engineering-job-after-free-code-camp",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3 class='text-left'>If you complete this program, <span class='text-info'>you will be able to get a coding job</span>. Many of our campers have already gotten coding jobs.</h3>",
@ -110,6 +116,7 @@
"id": "bd7158d9c440eddfaeb5bdef",
"name": "What will I learn, and in what sequence?",
"dashedName": "what-will-i-learn-and-in-what-sequence",
"category": "orientation",
"description": [
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
" <h3>First, you'll learn basic web design tools like:</h3>",
@ -147,6 +154,7 @@
"id": "bd7158d9c434eddfaeb5bdef",
"name": "How long does Free Code Camp take?",
"dashedName": "how-long-does-free-code-camp-take",
"category": "orientation",
"description": [
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
" <h3>It takes about 1,600 hours of coding to develop the skills you'll need to get an entry level software engineering job.</h3>",
@ -185,6 +193,7 @@
"id": "bd7158d9c438eddfaeb5bdef",
"name": "Why does Free Code Camp use JavaScript instead of Ruby or Python?",
"dashedName": "why-does-free-code-camp-use-javascript-instead-of-ruby-or-python",
"category": "orientation",
"description": [
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
" <p class='large-p'>Like JavaScript, Ruby and Python are high-level scripting languages that can be used for full stack web development.</p>",
@ -199,6 +208,7 @@
"id": "bd7158d9c437eddfaeb5bdef",
"name": "What is pair programming, and why is it special?",
"dashedName": "what-is-pair-programming-and-why-is-it-special",
"category": "orientation",
"description": [
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
" <h3>Pair programming is where two people code together on one computer.</h3>",
@ -212,6 +222,7 @@
"id": "bd7158d9c436eddfaeb5bd2f",
"name": "How do I get help when I get stuck?",
"dashedName": "how-do-i-get-help-when-i-get-stuck",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>When you get stuck, remember: RSAP.</h3>",
@ -235,6 +246,7 @@
"id": "bd7158d9c435eddfaeb5bdcf",
"name": "What are the Official Free Code Camp Chat Rooms?",
"dashedName": "what-are-the-official-free-code-camp-chat-rooms",
"category": "orientation",
"description": [
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
" <h3>We have 4 official chat rooms:</h3>",
@ -260,22 +272,11 @@
"</div>"
]
},
{
"id": "bd7158d9c436eddfaeb5bd3f",
"name": "Can I jump around in this guide?",
"dashedName": "can-i-jump-around-in-this-guide",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>This guide was designed as a reference for you. You shouldn't try to read it all today.</h3>",
" <p class='large-p'>Feel free to come back any time and jump around, reading any articles that seem interesting to you at the time.</p>",
" <p class='large-p'>If you're currently doing our \"Browse our Field Guide\" Waypoint, go ahead and mark that challenge complete and move on to your next Waypoint.</p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfaeb5bdef",
"name": "If Free Code Camp is free, how does it make money?",
"dashedName": "if-free-code-camp-is-free-how-does-it-make-money",
"category": "orientation",
"description": [
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
" <h3>We are completely free for both students and for nonprofits.</h3>",
@ -289,6 +290,7 @@
"id": "bd7158d9c435eddfaeb5bdef",
"name": "Does Free Code Camp have an application process?",
"dashedName": "does-free-code-camp-have-an-application-process",
"category": "orientation",
"description": [
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
" <h3>Unlike coding bootcamps, anyone can study at Free Code Camp.</h3>",
@ -297,31 +299,11 @@
"</div>"
]
},
{
"id": "bd7158d9c436eddfaeb5bd3b",
"name": "How can I stream my live coding sessions on Free Code Camp's Twitch.tv channel?",
"dashedName": "how-can-i-stream-my-live-coding-sessions-on-free-code-camps-twitch-tv-channel",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>If you're interested in coding JavaScript live in front of dozens of people on our popular <a href='http://twitch.tv/freecodecamp' target='_blank'>twitch.tv channel</a>, we'd love to have you.</h3>",
"<p class='large-p'>Please follow these steps to get started:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>Follow <a href='http://www.hdpvrcapture.com/wordpress/?p=5951' target='_blank'>this tutorial</a> to set up your computer for streaming.</li>",
" <li class='large-li'>Contact Jason Ruekert - he's @jsonify in Gitter. He's in charge of our Twitch.tv channel. Tell him what you'd like to stream, and when you're available to stream.</li>",
" <li class='large-li'>Jason will pair with you using Screenhero to verify your computer is configured properly to stream.</li>",
" </ol>",
" </p>",
" <p class='large-p'>Be respectful of your audience. Everything you stream should be related to coding JavaScript, and should be acceptable for children. (Yes, children do sometimes watch our Twitch stream to learn to code).</p>",
" <p class='large-p'>While you're streaming, keep the chat room open so you can respond to questions from your viewers. If someone follows Free Code Camp on Twitch, try to thank them.</p>",
" <p class='large-p'>If you do a good job, we'll invite you back to stream some more. Who knows, you might become one of our regular streamers!</p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfaeb5bd3d",
"name": "How can I find other Free Code Camp campers in my city?",
"dashedName": "how-can-i-find-other-free-code-camp-campers-in-my-city",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>Find your city below and join their Facebook group and Gitter Chat. This is a great way to hang out with other coders, share insights, and pair program.</h3>",
@ -584,174 +566,11 @@
"</div>"
]
},
{
"id": "bd7158d9c442eddfaeb5bdef",
"name": "How do I best use the Global Control Shortcuts for Mac?",
"dashedName": "how-do-i-best-use-the-global-control-shortcuts-for-mac",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>These Global Control Shortcuts for Mac will save you hours by speeding up your typing.</h3><br>",
" <div class=\"embed-responsive embed-responsive-16by9\"><iframe src=\"//player.vimeo.com/video/107073108\" class=\"embed-responsive-item\"></iframe></div>",
" <p class='large-p'>These global shortcuts work everywhere on a Mac:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>Control + F = Forward</li>",
" <li class='large-li'>Control + B = Backward</li>",
" <li class='large-li'>Control + N = Next Line</li>",
" <li class='large-li'>Control + P = Previous Line</li>",
" <li class='large-li'>Control + H = Backspace</li>",
" <li class='large-li'>Control + D = Delete</li>",
" <li class='large-li'>Control + A = Beginning of Line</li>",
" <li class='large-li'>Control + E = End of Line</li>",
" <li class='large-li'>Control + K = Kill line</li>",
" </ul>",
" </p>",
"</div>"
]
},
{
"id": "bd7158d9c445eddfaeb5bdef",
"name": "How can I get to Inbox Zero with Gmail shortcuts?",
"dashedName": "how-can-i-get-to-inbox-zero-with-gmail-shortcuts",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>These Gmail Shortcuts will save you hours and help you get to Inbox Zero.</h3><br/>",
" <div class=\"embed-responsive embed-responsive-16by9\">",
" <iframe src=\"//player.vimeo.com/video/115194016\" class=\"embed-responsive-item\"></iframe>",
" </div>",
" <p class='large-p'>The shortcuts:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>j - move down</li>",
" <li class='large-li'>k - move up</li>",
" <li class='large-li'>o - open</li>",
" <li class='large-li'>r - reply</li>",
" <li class='large-li'>a - reply all</li>",
" <li class='large-li'>f - forward</li>",
" <li class='large-li'>c - compose</li>",
" <li class='large-li'>x - select</li>",
" <li class='large-li'>e - archive</li>",
" <li class='large-li'>! - mark spam</li>",
" <li class='large-li'>z - undo</li>",
" </ul>",
" </p>",
"</div>"
]
},
{
"id": "bd7158d9c445eddfaeb5bdff",
"name": "How can I deploy a website without writing any code at all?",
"dashedName": "how-can-i-deploy-a-website-without-writing-any-code-at-all",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>It's possible to build dynamic, mobile-responsive websites without writing any code at all, in just a few minutes.</h3><br/>",
" <div class=\"embed-responsive embed-responsive-16by9\">",
" <iframe src=\"//player.vimeo.com/video/115194017\" class=\"embed-responsive-item\"></iframe>",
" </div>",
" <p class='large-p'>Here are the technologies we used here:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'><a href='http://www.atom.io/'>atom.io</a> - a free code editor</li>",
" <li class='large-li'><a href='http://www.startbootstrap.com/'>startbootstrap.com</a> - a collection of free responsive (Bootstrap) templates</li>",
" <li class='large-li'><a href='http://www.powr.io/'>powr.io</a> - a collection of free JavaScript plugins</li>",
" <li class='large-li'><a href='http://www.bitballoon.com/'>bitballoon.com</a> - a tool for drag and drop website deployment</li>",
" </ul>",
" </p>",
" <p class='large-p'>You will quickly reach the limits of what you can do without actually coding, but it's nice to be able to rapidly build working prototype websites like this.</p>",
"</div>"
]
},
{
"id": "bd7158d9c446eddfaeb5bdef",
"name": "How do Free Code Camp's Nonprofit Projects work?",
"dashedName": "how-do-free-code-camps-nonprofit-projects-work",
"description": [
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
" <p class='large-p'>Building nonprofit projects is the main way that our campers learn full stack JavaScript and agile software development. Once you complete the Free Code Camp Waypoints, Bonfires, Ziplines and Basejumps, you'll begin this process.</p>",
" <h3>Starting with the end in mind</h3>",
" <p class='large-p'>Our goal at Free Code Camp is to help you land a job as a junior software developer (or, if you prefer, a 'pivot job' that leads your current career in a more technical direction).</p>",
" <p class='large-p'>You'll continue to work on nonprofit projects until you've built a sufficiently impressive portfolio and references to start your job search. Your portfolio will ultimately have three to five nonprofit projects. We estimate that the 900 hours of nonprofit projects you're going to complete, in addition to the 100 hours of challenges you've already completed, will be enough to qualify you for your first coding job. This will produce a much broader portfolio than a traditional coding bootcamp, which generally only has one or two capstone projects.</p>",
" <h3>Choosing your first Nonprofit Project</h3>",
" <p class='large-p'>We've categorized all the nonprofit projects by estimated time investment per camper: 100 hours, 200 hours, and 300 hours. These are only rough estimates.</p>",
" <p class='large-p'>Example: if you and the camper you're paired up with (your pair) each stated you could work 20 hours per week. If the project is a 100 hour per camper project, you should be able to complete it in about 5 weeks.</p>",
" <p class='large-p'>Our Nonprofit Project team will match you and your pair based on:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>Your estimated time commitment (10, 20 or 40 hours per week)</li>",
" <li class='large-li'>Your time zone</li>",
" <li class='large-li'>The nonprofit projects you've chosen</li>",
" <li class='large-li'>Prior coding experience (we'd like both campers to be able to contribute equally)</li>",
" </ol>",
" </p>",
" <p class='large-p'>We won't take age or gender into account. This will provide you with valuable experience in meshing with diverse teams, which is a reality of the contemporary workplace.</p>",
" <p class='large-p'>You'll only work on one project at a time. Once you start a nonprofit project, we'll remove you from all other nonprofit project you've expressed interest in. There's a good chance those projects will no longer be available when you finish your current project, anyway. Don't worry, though - we get new nonprofit project requests every day, so there will be plenty more projects for you to consider after you finish your current one.</p>",
" <h3>Finalizing the Project</h3>",
" <p class='large-p'>Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>We'll wait until there are two campers who have chosen the same project and look like they're a good match for one another based on the factors mentioned above.</li>",
" <li class='large-li'>We'll call the stakeholder to confirm once again that he or she agrees with our &thinsp;<a href=\"/nonprofits\">terms &thinsp;</a>and has signed our &thinsp;<a href=\"http://goo.gl/forms/0YKkd9bpcR\">Nonprofit Project Stakeholder Pledge</a>.</li>",
" <li class='large-li'>We'll set an initial meeting with representatives from Free Code Camp, the two campers, and the stakeholder.</li>",
" <li class='large-li'>If the stakeholder and both campers shows up promptly, and seem enthusiastic and professional, we'll start the project.</li>",
" </ol>",
" </p>",
" <p class='large-p'>This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.</p>",
" <h3>Nonprofit Stakeholders</h3>",
" <p class='large-p'>Each nonprofit project was submitted by a nonprofit. A representative from this nonprofit has agreed to serve as a \"stakeholder\" - an authorative person who understands the organization and its needs for this particular project.</p>",
" <p class='large-p'>Stakeholders have a deep understanding of their organizations' needs. Campers will work with them to figure out the best solutions to these needs.</p>",
" <p class='large-p'>When you and your pair first speak with your nonprofit stakeholder, you'll:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>talk at length to better understand their needs.</li>",
" <li class='large-li'>create a new Trello board and use it to prioritize what needs to be built.</li>",
" <li class='large-li'>and establish deadlines based on your weekly time commitment, and how long you think each task will take.</li>",
" </ul>",
" </p>",
" <p class='large-p'>It's notoriously difficult to estimate how long building software projects will take, so feel free to ask our volunteer team for help.</p>",
" <p class='large-p'>You'll continue to meet with your stakeholder at least twice a month in your project's Gitter channel.</p>",
" <p class='large-p'>You should also ask questions in your project's Gitter channel as they come up throughout the week, and your stakeholder can answer them asynchronously.</p>",
" <p class='large-p'>Getting \"blocked\" on a task can take away your sense of forward momentum, so be sure to proactively seek answers to any ambiguities you encounter.</p>",
" <p class='large-p'>Ultimately, the project will be considered complete once both the stakeholder's needs have been met, and you and your pair are happy with the project. Then you can add it to your portfolio!</p>",
" <h3>Working with your Pair</h3>",
" <p class='large-p'>You and your pair will pair program (code together on the same computer virtually) about half of the time, and work independently the other half of the time.</p>",
" <p class='large-p'>Here are our recommended ways of collaborating:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>&#8226; Gitter has robust private messaging functionality. It's the main way our team communicates, and we recommend it over email.</li>",
" <li class='large-li'>&#8226; Trello is great for managing projects. Work with your stakeholder to create Trello cards, and update these cards regularly as you make progress on them.</li>",
" <li class='large-li'>&#8226; Screenhero or Team Viewer - These are the ideal way to pair program. Tools like TMUX are good, but difficult to use. We discourage you from using screen sharing tools where only one person has control of the keyboard and mouse - that isn't real pair programming.</li>",
" <li class='large-li'>&#8226; Write clear and readable code, commit messages, branch names, and pull request messages.</li>",
" </ul>",
" </p>",
" <h3>Hosting Apps</h3>",
" <p class='large-p'>Unless your stakeholder has an existing modern host (AWS, Digital Ocean), you'll need to transition them over to a new platform. We believe Heroku is the best choice for a vast majority of web projects. It's free, easy to use, and has both browser and command line interfaces. It's owned by Salesforce and used by a ton of companies, so it's accountable and unlikely to go away.</p>",
" <p class='large-p'>If you need help convincing your stakeholder that Heroku is the ideal platform, we'll be happy to talk with them.</p>",
" <h3>Maintaining Apps</h3>",
" <p class='large-p'>Once you complete a nonprofit project, your obligation to its stakeholder is finished. Your goal is to leave behind a well documented solution that can be easily maintained by a contract JavaScript developer (or even a less-technical \"super user\").</p>",
" <p class='large-p'>While you will no longer need to help with feature development, we encourage you to consider helping your stakeholder with occasional patches down the road. After all, this project will be an important piece of your portfolio, and you'll want it to remain in good shape for curious future employers.</p>",
" <h3>Pledging to finish the project</h3>",
" <p class='large-p'>Your nonprofit stakeholder, your pair, and our volunteer team are all counting on you to finish your nonprofit project. If you walk away from an unfinished nonprofit project, you'll become ineligible to ever be assigned another one.</p>",
" <p class='large-p'>To confirm that you understand the seriousness of this commitment, we require that all campers &thinsp;<a href=\"http://goo.gl/forms/ZMn96z2QqY\">sign this pledge &thinsp;</a>before starting on their nonprofit projects.</p>",
" <p class='large-p'>There will likely be times of confusion or frustration. This is normal in software development. The most important thing is that you do not give up and instead persevere through these setbacks. As Steve Jobs famously said, \"Real artists ship.\" And you are going to ship one successful nonprofit project after another until you feel ready to take the next step in your promising career.</p>",
"</div>"
]
},
{
"id": "bd7158d9c447eddfaeb5bdef",
"name": "How do I install Screenhero?",
"dashedName": "how-do-i-install-screenhero",
"description": [
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
" <h3><a href=\"http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLnppcD9zb3VyY2U9d2ViIn0=\">Download for Mac</a></h3>",
" <h3><a href=\"http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjoxLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLXNldHVwLmV4ZSJ9\"> Download for Windows</a></h3>",
" <p class='large-p'>You'll use Screenhero to pair program starting with <a href='/challenges/pair-program-on-bonfires'>http://freecodecamp.com/challenges/pair-program-on-bonfires</a></p>",
"</div>"
]
},
{
"id": "bd7158d9c451eddfaeb5bded",
"name": "What is the style guide for Bonfires?",
"dashedName": "what-is-the-style-guide-for-bonfires",
"category": "orientation",
"description": [
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
" <h3>Writing Bonfire challenges is a great way to exercise your own problem solving and testing abilities. Follow this process closely to maximize the chances of us accepting your bonfire.</h3>",
@ -788,6 +607,7 @@
"id": "bd7158d9c451eddfaeb5bdee",
"name": "What is the Free Code Camp Code of Conduct?",
"dashedName": "what-is-the-free-code-camp-code-of-conduct",
"category": "orientation",
"description": [
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
" <h3>Free Code Camp is friendly place to learn to code. We're committed to keeping it that way.</h3>",
@ -813,6 +633,7 @@
"id": "bd7158d9c451eddfaeb5bdef",
"name": "What is the Free Code Camp Privacy Policy?",
"dashedName": "what-is-the-free-code-camp-privacy-policy",
"category": "orientation",
"description": [
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
" <p class='large-p'>Free Code Camp is committed to respecting the privacy of visitors to our websites and web applications. The guidelines below explain how we protect the privacy of visitors to FreeCodeCamp.com and its features.</p>",
@ -851,111 +672,11 @@
"</div>"
]
},
{
"id": "bd7158d9c436eddfaeb5bd3c",
"name": "How can I reach the Free Code Camp team to interview them for my publication?",
"dashedName": "how-can-i-reach-the-free-code-camp-team-to-interview-them-for-my-publication",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>We're happy to do a quick interview for your publication or show. Here's whom you should contact about what, and how to best reach them:</h3>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>Want to talk to about Free Code Camp's curriculum or long-term vision? Reach out to Quincy Larson. He's <a href='https://twitter.com/ossia' target='_blank'>@ossia</a> on Twitter and @quincylarson on Gitter.</li>",
" <li class='large-li'>Want to talk about Free Code Camp's open source codebase, infrastructure, or JavaScript in general? Talk to Nathan Leniz. He's <a href='https://twitter.com/terakilobyte' target='_blank'>@terakilobyte</a> on Twitter and @terakilobyte on Gitter.</li>",
" <li class='large-li'>Want to explore our efforts to empower nonprofits with code? Michael D. Johnson eats, sleeps and breathes that. He's <a href='https://twitter.com/figitalboy' target='_blank'>@figitalboy</a> on Twitter and @codenonprofit on Gitter.</li>",
" <li class='large-li'>Want to get a camper's perspective on our community? Talk with Bianca Mihai (@biancamihai on Gitter and <a href='https://twitter.com/bubuslubu' target='_blank'>@bubuslubu</a> on Twitter) or Suzanne Atkinson (@adventurebear on Gitter and <a href='https://twitter.com/SteelCityCoach' target='_blank'>@steelcitycoach</a> on Twitter).",
" </ol>",
" </p>",
" <p class='large-p'>We strive to be helpful and transparent in everything we do. We'll do what we can to help you share our community with your audience.</p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfaeb5dd3b",
"name": "What other resources does Free Code Camp recommend to nonprofits?",
"dashedName": "what-other-resources-does-free-code-camp-recommend-to-nonprofits",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h2>Here are some excellent resources for nonprofits.</h2>",
" <h3>Please note that Free Code Camp is not partnered with, nor do we receive a referral fee from, any of the following providers. We simply want to help guide you towards a solution for your organization.</h3>",
" <h3>Skills-based Volunteer Organizations:</h3>",
" <p class='large-p'><a href='http://www.volunteermatch.com'>http://www.volunteermatch.com</a></p>",
" <p class='large-p'><a href='http://www.catchafire.org'>http://www.catchafire.org</a></p>",
" <h3>Building a website:</h3>",
" <p class='large-p'><a href='http://www.wix.com/'>http://www.wix.com/</p>",
" <p class='large-p'><a href='https://wordpress.com/'>https://wordpress.com/</p>",
" <p class='large-p'><a href='http://www.freecodecamp.com/field-guide/how-can-i-deploy-a-website-without-writing-any-code-at-all'>Build it yourself for free with no code</a></p>",
" <h3>Donor and Volunteer Management Systems</h3>",
" <p class='large-p'><a href='https://www.thedatabank.com/'>https://www.thedatabank.com/</a></p>",
" <p class='large-p'><a href='http://www.donorsnap.com/'>http://www.donorsnap.com/</a></p>",
" <p class='large-p'><a href='http://www.donorperfect.com/'>http://www.donorperfect.com/</a></p>",
" <p class='large-p'><a href='https://www.blackbaud.com/fundraising-crm/etapestry-donor-management'>https://www.blackbaud.com/fundraising-crm/etapestry-donor-management</a></p>",
" <p class='large-p'><a href='http://www.z2systems.com/'>http://www.z2systems.com</a></p>",
" <p class='large-p'><a href='http://www.regpacks.com/volunteer-management/'</a>http://www.regpacks.com/volunteer-management</a></p>",
" <p class='large-p'><a href='http://sumac.com/'>http://sumac.com</a></p>",
" <p class='large-p'><a href='http://www.volgistics.com'>http://www.volgistics.com</a></p>",
" <h3>Inventory Management Systems</h3>",
" <p class='large-p'><a href='https://www.ezofficeinventory.com/industries/non-profits'>https://www.ezofficeinventory.com/industries/non-profits</a></p>",
" <p class='large-p'><a href='https://www.ordoro.com'>https://www.ordoro.com</a></p>",
" <p class='large-p'><a href='http://www.unleashedsoftware.com'>http://www.unleashedsoftware.com</a></p>",
" <h3>E-Learning platforms</h3>",
" <p class='large-p'><a href='http://www.dokeos.com/'>http://www.dokeos.com</a></p>",
" <p class='large-p'><a href='http://www.efrontlearning.net/'>http://www.efrontlearning.net/</a></p>",
" <p class='large-p'><a href='https://moodle.org/'>https://moodle.org/</a></p>",
" <p class='large-p'><a href='https://sakaiproject.org/'>https://sakaiproject.org/</a></p>",
" <h3>Community Management</h3>",
" <p class='large-p'><a href='https://civicrm.org/'>https://civicrm.org/</a></p>",
" <p class='large-p'><a href='http://tcmgr.com/'>http://tcmgr.com/</a></p>",
" <h3>Electronic Forms</h3>",
" <p class='large-p'><a href='http://www.google.com/forms'>http://www.google.com/forms</a></p>",
" <p class='large-p'><a href='http://www.typeform.com'>http://www.typeform.com</a></p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfadb5bd3e",
"name": "How can I contribute to this guide?",
"dashedName": "how-can-i-contribute-to-this-guide",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <p class='large-p'>Contributing to our field guide is a great way to establish your history on GitHub, add to your portfolio, and help other campers. If you have a question about JavaScript or programming in general that you'd like us to add to the field guide, here are two ways to get it into the guide:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>You can message @danraley on Gitter with your question.</li>",
" <li class='large-li'>You can also contribute to this field guide directly via GitHub pull request, by cloning Free Code Camp's <a href='https://github.com/FreeCodeCamp/freecodecamp'>main repository</a> and modifying <a href='https://github.com/FreeCodeCamp/freecodecamp/blob/master/seed_data/field-guides.json'>field-guides.json</a>.</li>",
" </ol>",
" </p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfadb5bd32",
"name": "How can I help the Free Code Camp translation effort?",
"dashedName": "how-can-i-help-the-free-code-camp-translation-effort",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <p class='h2'>Our translation effort is driven by bilingual campers like you.</h2>",
" <p class='large-p'>If you're able to help us, you can join our <a href='https://trello.com/b/m7zhwXka/fcc-translation' target='_blank'>Trello board</a> by sending @quincylarson your email address on Gitter.</p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfadb5bd31",
"name": "What if I speak a language that Free Code Camp does not yet support?",
"dashedName": "what-if-i-speak-a-language-that-free-code-camp-does-not-yet-support",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <p class='h2'>Translation is an all-or-nothing proposal.</h2>",
" <p class='large-p'>We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that language.</p>",
" <p class='large-p'>In addition to translating these initially, we'll also need to maintain the translation as the challenges are gradually updated.</p>",
" <p class='large-p'>If you're able to help us, you can join our <a href='https://trello.com/b/m7zhwXka/fcc-translation' target='_blank'>Trello board</a> by sending @quincylarson your email address on Gitter.</p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfadb5bd30",
"name": "Can I do Free Code Camp completely in my native language?",
"dashedName": "can-i-do-free-code-camp-completely-in-my-native-language",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <p class='large-p'>The last 800 hours of free code camp involve building projects for nonprofits. These nonprofit projects will involve lots of meetings, correspondence, and pair programming, all of which will be conducted in English.</p>",
@ -969,6 +690,7 @@
"id": "bd7158d9c436eddfadb5bd3c",
"name": "What is the new Free Code Camp Mobile Experience?",
"dashedName": "what-is-the-new-free-code-camp-mobile-experience",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h2>We're building an on-the-go version of Free Code Camp.</h2>",
@ -986,6 +708,7 @@
"id": "bd7158d9c436eddfadb5bd3b",
"name": "What is the Free Code Camp Front End Development Certificate?",
"dashedName": "what-is-the-free-code-camp-front-end-development-certificate",
"category": "orientation",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h2>We're creating a free Front End Development Certificate.</h2>",

View File

@ -0,0 +1,143 @@
[
{
"id": "bd7158d9c436eddfaeb5bd3b",
"name": "How can I stream my live coding sessions on Free Code Camp's Twitch.tv channel?",
"dashedName": "how-can-i-stream-my-live-coding-sessions-on-free-code-camps-twitch-tv-channel",
"category": "outreach",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <h3>If you're interested in coding JavaScript live in front of dozens of people on our popular <a href='http://twitch.tv/freecodecamp' target='_blank'>twitch.tv channel</a>, we'd love to have you.</h3>",
"<p class='large-p'>Please follow these steps to get started:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>Follow <a href='http://www.hdpvrcapture.com/wordpress/?p=5951' target='_blank'>this tutorial</a> to set up your computer for streaming.</li>",
" <li class='large-li'>Contact Jason Ruekert - he's @jsonify in Gitter. He's in charge of our Twitch.tv channel. Tell him what you'd like to stream, and when you're available to stream.</li>",
" <li class='large-li'>Jason will pair with you using Screenhero to verify your computer is configured properly to stream.</li>",
" </ol>",
" </p>",
" <p class='large-p'>Be respectful of your audience. Everything you stream should be related to coding JavaScript, and should be acceptable for children. (Yes, children do sometimes watch our Twitch stream to learn to code).</p>",
" <p class='large-p'>While you're streaming, keep the chat room open so you can respond to questions from your viewers. If someone follows Free Code Camp on Twitch, try to thank them.</p>",
" <p class='large-p'>If you do a good job, we'll invite you back to stream some more. Who knows, you might become one of our regular streamers!</p>",
"</div>"
]
},
{
"id": "bd7158d9c446eddfaeb5bdef",
"name": "How do Free Code Camp's Nonprofit Projects work?",
"dashedName": "how-do-free-code-camps-nonprofit-projects-work",
"category": "outreach",
"description": [
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
" <p class='large-p'>Building nonprofit projects is the main way that our campers learn full stack JavaScript and agile software development. Once you complete the Free Code Camp Waypoints, Bonfires, Ziplines and Basejumps, you'll begin this process.</p>",
" <h3>Starting with the end in mind</h3>",
" <p class='large-p'>Our goal at Free Code Camp is to help you land a job as a junior software developer (or, if you prefer, a 'pivot job' that leads your current career in a more technical direction).</p>",
" <p class='large-p'>You'll continue to work on nonprofit projects until you've built a sufficiently impressive portfolio and references to start your job search. Your portfolio will ultimately have three to five nonprofit projects. We estimate that the 900 hours of nonprofit projects you're going to complete, in addition to the 100 hours of challenges you've already completed, will be enough to qualify you for your first coding job. This will produce a much broader portfolio than a traditional coding bootcamp, which generally only has one or two capstone projects.</p>",
" <h3>Choosing your first Nonprofit Project</h3>",
" <p class='large-p'>We've categorized all the nonprofit projects by estimated time investment per camper: 100 hours, 200 hours, and 300 hours. These are only rough estimates.</p>",
" <p class='large-p'>Example: if you and the camper you're paired up with (your pair) each stated you could work 20 hours per week. If the project is a 100 hour per camper project, you should be able to complete it in about 5 weeks.</p>",
" <p class='large-p'>Our Nonprofit Project team will match you and your pair based on:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>Your estimated time commitment (10, 20 or 40 hours per week)</li>",
" <li class='large-li'>Your time zone</li>",
" <li class='large-li'>The nonprofit projects you've chosen</li>",
" <li class='large-li'>Prior coding experience (we'd like both campers to be able to contribute equally)</li>",
" </ol>",
" </p>",
" <p class='large-p'>We won't take age or gender into account. This will provide you with valuable experience in meshing with diverse teams, which is a reality of the contemporary workplace.</p>",
" <p class='large-p'>You'll only work on one project at a time. Once you start a nonprofit project, we'll remove you from all other nonprofit project you've expressed interest in. There's a good chance those projects will no longer be available when you finish your current project, anyway. Don't worry, though - we get new nonprofit project requests every day, so there will be plenty more projects for you to consider after you finish your current one.</p>",
" <h3>Finalizing the Project</h3>",
" <p class='large-p'>Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>We'll wait until there are two campers who have chosen the same project and look like they're a good match for one another based on the factors mentioned above.</li>",
" <li class='large-li'>We'll call the stakeholder to confirm once again that he or she agrees with our &thinsp;<a href=\"freecodecamp.com/nonprofits\">terms &thinsp;</a>and has signed our &thinsp;<a href=\"http://goo.gl/forms/0YKkd9bpcR\">Nonprofit Project Stakeholder Pledge</a>.</li>",
" <li class='large-li'>We'll set an initial meeting with representatives from Free Code Camp, the two campers, and the stakeholder.</li>",
" <li class='large-li'>If the stakeholder and both campers shows up promptly, and seem enthusiastic and professional, we'll start the project.</li>",
" </ol>",
" </p>",
" <p class='large-p'>This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.</p>",
" <h3>Nonprofit Stakeholders</h3>",
" <p class='large-p'>Each nonprofit project was submitted by a nonprofit. A representative from this nonprofit has agreed to serve as a \"stakeholder\" - an authorative person who understands the organization and its needs for this particular project.</p>",
" <p class='large-p'>Stakeholders have a deep understanding of their organizations' needs. Campers will work with them to figure out the best solutions to these needs.</p>",
" <p class='large-p'>When you and your pair first speak with your nonprofit stakeholder, you'll:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>talk at length to better understand their needs.</li>",
" <li class='large-li'>create a new Trello board and use it to prioritize what needs to be built.</li>",
" <li class='large-li'>and establish deadlines based on your weekly time commitment, and how long you think each task will take.</li>",
" </ul>",
" </p>",
" <p class='large-p'>It's notoriously difficult to estimate how long building software projects will take, so feel free to ask our volunteer team for help.</p>",
" <p class='large-p'>You'll continue to meet with your stakeholder at least twice a month in your project's Gitter or Slack channel.</p>",
" <p class='large-p'>You should also ask questions in your project's Gitter or Slack channel as they come up throughout the week, and your stakeholder can answer them asynchronously.</p>",
" <p class='large-p'>Getting \"blocked\" on a task can take away your sense of forward momentum, so be sure to proactively seek answers to any ambiguities you encounter.</p>",
" <p class='large-p'>Ultimately, the project will be considered complete once both the stakeholder's needs have been met, and you and your pair are happy with the project. Then you can add it to your portfolio!</p>",
" <h3>Working with your Pair</h3>",
" <p class='large-p'>You and your pair will pair program (code together on the same computer virtually) about half of the time, and work independently the other half of the time.</p>",
" <p class='large-p'>Here are our recommended ways of collaborating:</p>",
" <p class='large-p'>",
" <ul>",
" <li class='large-li'>&#8226; Gitter has robust private messaging functionality. It's the main way our team communicates, and we recommend it over email.</li>",
" <li class='large-li'>&#8226; Trello is great for managing projects. Work with your stakeholder to create Trello cards, and update these cards regularly as you make progress on them.</li>",
" <li class='large-li'>&#8226; Screenhero or Team Viewer - These are the ideal way to pair program. Tools like TMUX are good, but difficult to use. We discourage you from using screen sharing tools where only one person has control of the keyboard and mouse - that isn't real pair programming.</li>",
" <li class='large-li'>&#8226; Write clear and readable code, commit messages, branch names, and pull request messages.</li>",
" </ul>",
" </p>",
" <h3>Hosting Apps</h3>",
" <p class='large-p'>Unless your stakeholder has an existing modern host (AWS, Digital Ocean), you'll need to transition them over to a new platform. We believe Heroku is the best choice for a vast majority of web projects. It's free, easy to use, and has both browser and command line interfaces. It's owned by Salesforce and used by a ton of companies, so it's accountable and unlikely to go away.</p>",
" <p class='large-p'>If you need help convincing your stakeholder that Heroku is the ideal platform, we'll be happy to talk with them.</p>",
" <h3>Maintaining Apps</h3>",
" <p class='large-p'>Once you complete a nonprofit project, your obligation to its stakeholder is finished. Your goal is to leave behind a well documented solution that can be easily maintained by a contract JavaScript developer (or even a less-technical \"super user\").</p>",
" <p class='large-p'>While you will no longer need to help with feature development, we encourage you to consider helping your stakeholder with occasional patches down the road. After all, this project will be an important piece of your portfolio, and you'll want it to remain in good shape for curious future employers.</p>",
" <h3>Pledging to finish the project</h3>",
" <p class='large-p'>Your nonprofit stakeholder, your pair, and our volunteer team are all counting on you to finish your nonprofit project. If you walk away from an unfinished nonprofit project, you'll become ineligible to ever be assigned another one.</p>",
" <p class='large-p'>To confirm that you understand the seriousness of this commitment, we require that all campers &thinsp;<a href=\"http://goo.gl/forms/ZMn96z2QqY\">sign this pledge &thinsp;</a>before starting on their nonprofit projects.</p>",
" <p class='large-p'>There will likely be times of confusion or frustration. This is normal in software development. The most important thing is that you do not give up and instead persevere through these setbacks. As Steve Jobs famously said, \"Real artists ship.\" And you are going to ship one successful nonprofit project after another until you feel ready to take the next step in your promising career.</p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfadb5bd3e",
"name": "How can I contribute to this guide?",
"dashedName": "how-can-i-contribute-to-this-guide",
"category": "outreach",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <p class='large-p'>Contributing to our field guide is a great way to establish your history on GitHub, add to your portfolio, and help other campers. If you have a question about JavaScript or programming in general that you'd like us to add to the field guide, here are two ways to get it into the guide:</p>",
" <p class='large-p'>",
" <ol>",
" <li class='large-li'>You can message @danraley on Gitter with your question.</li>",
" <li class='large-li'>You can also contribute to this field guide directly via GitHub pull request, by cloning Free Code Camp's <a href='https://github.com/FreeCodeCamp/freecodecamp'>main repository</a> and modifying <a href='https://github.com/FreeCodeCamp/freecodecamp/blob/master/seed_data/field-guides.json'>field-guides.json</a>.</li>",
" </ol>",
" </p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfadb5bd32",
"name": "How can I help the Free Code Camp translation effort?",
"dashedName": "how-can-i-help-the-free-code-camp-translation-effort",
"category": "outreach",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <p class='h2'>Our translation effort is driven by bilingual campers like you.</h2>",
" <p class='large-p'>If you're able to help us, you can join our <a href='https://trello.com/b/m7zhwXka/fcc-translation' target='_blank'>Trello board</a> by sending @quincylarson your email address on Gitter.</p>",
"</div>"
]
},
{
"id": "bd7158d9c436eddfadb5bd31",
"name": "What if I speak a language that Free Code Camp does not yet support?",
"dashedName": "what-if-i-speak-a-language-that-free-code-camp-does-not-yet-support",
"category": "outreach",
"description": [
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
" <p class='h2'>Translation is an all-or-nothing proposal.</h2>",
" <p class='large-p'>We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that language.</p>",
" <p class='large-p'>In addition to translating these initially, we'll also need to maintain the translation as the challenges are gradually updated.</p>",
" <p class='large-p'>If you're able to help us, you can join our <a href='https://trello.com/b/m7zhwXka/fcc-translation' target='_blank'>Trello board</a> by sending @quincylarson your email address on Gitter.</p>",
"</div>"
]
}
]

View File

@ -4,16 +4,20 @@ require('dotenv').load();
var fs = require('fs'),
path = require('path'),
app = require('../server/server'),
fieldGuides = require('./field-guides.json'),
nonprofits = require('./nonprofits.json'),
jobs = require('./jobs.json');
function getFilesFor(dir) {
return fs.readdirSync(path.join(__dirname, '/' + dir));
}
var Challenge = app.models.Challenge;
var FieldGuide = app.models.FieldGuide;
var Nonprofit = app.models.Nonprofit;
var Job = app.models.Job;
var counter = 0;
var challenges = fs.readdirSync(path.join(__dirname, '/challenges'));
var challenges = getFilesFor('challenges');
var fieldGuides = getFilesFor('field-guides');
var offerings = 3 + challenges.length;
var CompletionMonitor = function() {
@ -33,10 +37,10 @@ Challenge.destroyAll(function(err, info) {
} else {
console.log('Deleted ', info);
}
challenges.forEach(function (file) {
challenges.forEach(function(file) {
Challenge.create(
require('./challenges/' + file).challenges,
function (err) {
function(err) {
if (err) {
console.log(err);
} else {
@ -54,14 +58,16 @@ FieldGuide.destroyAll(function(err, info) {
} else {
console.log('Deleted ', info);
}
FieldGuide.create(fieldGuides, function(err, data) {
if (err) {
console.log(err);
} else {
console.log('Saved ', data);
}
CompletionMonitor();
console.log('field guides');
fieldGuides.forEach(function(file) {
FieldGuide.create(require('./field-guides/' + file), function(err, data) {
if (err) {
console.log(err);
} else {
console.log('Saved ', data);
}
CompletionMonitor();
console.log('field guides');
});
});
});

View File

@ -9,8 +9,17 @@ var path = require('path'),
MDNlinks = require('../../seed/bonfireMDNlinks'),
resources = require('./resources.json'),
nonprofits = require('../../seed/nonprofits.json'),
fieldGuides = require('../../seed/field-guides.json');
nonprofits = require('../../seed/nonprofits.json');
var fieldGuides = fs.readdirSync(
path.join(__dirname, '../../seed/field-guides')
)
.map(function(file) {
return require('../../seed/field-guides/' + file);
})
.reduce(function(allGuides, categoryGuides) {
return allGuides.concat(categoryGuides);
}, []);
/**
* Cached values
@ -38,15 +47,15 @@ Array.zip = function(left, right, combinerFunction) {
path.join(__dirname, '../../seed/challenges')
);
var keyCounter = 0;
files = files.map(function (file) {
files = files.map(function(file) {
return require(
path.join(__dirname, '../../seed/challenges/' + file)
);
});
files = files.sort(function (a, b) {
files = files.sort(function(a, b) {
return a.order - b.order;
});
files.forEach(function (file) {
files.forEach(function(file) {
localChallengeMap[keyCounter++] = file;
});
challengeMap = _.cloneDeep(localChallengeMap);
@ -66,10 +75,10 @@ module.exports = {
return ('' + name).replace(/\-/g, ' ').trim();
},
getChallengeMapForDisplay: function () {
getChallengeMapForDisplay: function() {
if (!challengeMapForDisplay) {
challengeMapForDisplay = {};
Object.keys(challengeMap).forEach(function (key) {
Object.keys(challengeMap).forEach(function(key) {
challengeMapForDisplay[key] = {
name: challengeMap[key].name,
dashedName: challengeMap[key].name.replace(/\s/g, '-'),
@ -81,11 +90,11 @@ module.exports = {
return challengeMapForDisplay;
},
getChallengeMapWithIds: function () {
getChallengeMapWithIds: function() {
if (!challengeMapWithIds) {
challengeMapWithIds = {};
Object.keys(challengeMap).forEach(function (key) {
var onlyIds = challengeMap[key].challenges.map(function (elem) {
Object.keys(challengeMap).forEach(function(key) {
var onlyIds = challengeMap[key].challenges.map(function(elem) {
return elem.id;
});
challengeMapWithIds[key] = onlyIds;
@ -94,11 +103,11 @@ module.exports = {
return challengeMapWithIds;
},
allChallengeIds: function () {
allChallengeIds: function() {
if (!allChallengeIds) {
allChallengeIds = [];
Object.keys(this.getChallengeMapWithIds()).forEach(function (key) {
Object.keys(this.getChallengeMapWithIds()).forEach(function(key) {
allChallengeIds.push(challengeMapWithIds[key]);
});
allChallengeIds = R.flatten(allChallengeIds);
@ -106,12 +115,12 @@ module.exports = {
return allChallengeIds;
},
getChallengeMapWithNames: function () {
getChallengeMapWithNames: function() {
if (!challengeMapWithNames) {
challengeMapWithNames = {};
Object.keys(challengeMap).
forEach(function (key) {
var onlyNames = challengeMap[key].challenges.map(function (elem) {
forEach(function(key) {
var onlyNames = challengeMap[key].challenges.map(function(elem) {
return elem.name;
});
challengeMapWithNames[key] = onlyNames;
@ -124,8 +133,8 @@ module.exports = {
if (!challengeMapWithDashedNames) {
challengeMapWithDashedNames = {};
Object.keys(challengeMap).
forEach(function (key) {
var onlyNames = challengeMap[key].challenges.map(function (elem) {
forEach(function(key) {
var onlyNames = challengeMap[key].challenges.map(function(elem) {
return elem.dashedName;
});
challengeMapWithDashedNames[key] = onlyNames;
@ -135,40 +144,40 @@ module.exports = {
},
randomPhrase: function () {
randomPhrase: function() {
return resources.phrases[
Math.floor(Math.random() * resources.phrases.length)
];
},
randomVerb: function () {
randomVerb: function() {
return resources.verbs[
Math.floor(Math.random() * resources.verbs.length)
];
},
randomCompliment: function () {
randomCompliment: function() {
return resources.compliments[
Math.floor(Math.random() * resources.compliments.length)
];
},
allFieldGuideIds: function () {
allFieldGuideIds: function() {
if (allFieldGuideIds) {
return allFieldGuideIds;
} else {
allFieldGuideIds = fieldGuides.map(function (elem) {
allFieldGuideIds = fieldGuides.map(function(elem) {
return elem.id;
});
return allFieldGuideIds;
}
},
allFieldGuideNamesAndIds: function () {
allFieldGuideNamesAndIds: function() {
if (allFieldGuideNames) {
return allFieldGuideNames;
} else {
allFieldGuideNames = fieldGuides.map(function (elem) {
allFieldGuideNames = fieldGuides.map(function(elem) {
return {
name: elem.name,
dashedName: elem.dashedName,
@ -179,18 +188,18 @@ module.exports = {
}
},
allNonprofitNames: function () {
allNonprofitNames: function() {
if (allNonprofitNames) {
return allNonprofitNames;
} else {
allNonprofitNames = nonprofits.map(function (elem) {
allNonprofitNames = nonprofits.map(function(elem) {
return {name: elem.name};
});
return allNonprofitNames;
}
},
whichEnvironment: function () {
whichEnvironment: function() {
return process.env.NODE_ENV;
},