diff --git a/challenges/angularjs.json b/challenges/angularjs.json new file mode 100644 index 0000000000..48207fb41f --- /dev/null +++ b/challenges/angularjs.json @@ -0,0 +1,125 @@ +{ + "name": "AngularJS", + "order": 0.015, + "challenges": [ + { + "id": "bd7154d8c441eddfaeb5bdef", + "name": "Waypoint: Get Started with Angular.js", + "dashedName": "waypoint-get-started-with-angularjs", + "difficulty": 0.34, + "challengeSeed": ["114684726"], + "description": [ + "Code School has a short, free Angular.js course. This will give us a quick tour of Angular.js's mechanics and features.", + "In this course, we'll build a virtual shop entirely in Angular.js.", + "Go to http://campus.codeschool.com/courses/shaping-up-with-angular-js/level/1/section/1/video/1 and complete the section." + ], + "challengeType": 2, + "tests": [], + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bd7155d8c441eddfaeb5bdef", + "name": "Waypoint: Apply Angular.js Directives", + "dashedName": "waypoint-apply-angularjs-directives", + "difficulty": 0.35, + "challengeSeed": ["114684727"], + "description": [ + "Directives serve as markers in your HTML. When Angular.js compiles your HTML, it will can alter the behavior of DOM elements based on the directives you've used.", + "Let's learn how these powerful directives work, and how to use them to make your web apps more dynamic", + "Go to http://campus.codeschool.com/courses/shaping-up-with-angular-js/level/2/section/1/video/1 and complete the section." + ], + "challengeType": 2, + "tests": [], + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bd7156d8c441eddfaeb5bdef", + "name": "Waypoint: Power Forms with Angular.js", + "dashedName": "waypoint-power-forms-with-angularjs", + "difficulty": 0.36, + "challengeSeed": ["114684729"], + "description": [ + "One area where Angular.js really shines is its powerful web forms.", + "Learn how to create reactive Angular.js forms, including real-time form validation.", + "Go to http://campus.codeschool.com/courses/shaping-up-with-angular-js/level/3/section/1/video/1 and complete the section." + ], + "challengeType": 2, + "tests": [], + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bd7157d8c441eddfaeb5bdef", + "name": "Waypoint: Customize Angular.js Directives", + "dashedName": "waypoint-customize-angularjs-directives", + "difficulty": 0.37, + "challengeSeed": ["114685062"], + "description": [ + "Now we'll learn how to modify existing Angular.js directives, and even build directives of your own.", + "Go to http://campus.codeschool.com/courses/shaping-up-with-angular-js/level/4/section/1/video/1 and complete the section." + ], + "challengeType": 2, + "tests": [], + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bd7158d8c441eddfaeb5bdef", + "name": "Waypoint: Create Angular.js Services", + "dashedName": "waypoint-create-angularjs-services", + "difficulty": 0.38, + "challengeSeed": ["114685060"], + "description": [ + "Services are functions that you can use and reuse throughout your Angular.js app to get things done.", + "We'll learn how to use services in this final Code School Angular.js challenge.", + "Go to http://campus.codeschool.com/courses/shaping-up-with-angular-js/level/5/section/1/video/1 and complete the section." + ], + "challengeType": 2, + "tests": [], + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + } + ] +} diff --git a/challenges/basejumps.json b/challenges/basejumps.json index 70e07e0788..717a99a47d 100644 --- a/challenges/basejumps.json +++ b/challenges/basejumps.json @@ -1,6 +1,6 @@ { "name": "Full Stack JavaScript Projects", - "order": 0.014, + "order": 0.017, "challenges": [ { "id": "bd7158d8c443eddfaeb5bcef", @@ -17,9 +17,7 @@ "Click on Create New Workspace at the top right of the c9.io page, then click on the \"Create a new workspace\" popup that appears below it the button after you click on it.", "Give your workspace a name.", "Choose Node.js in the selection area below the name field.", - "Click the Create button.", - "Wait for the workspace to finish processing and select it on the left sidebar, below the Create New Workspace button.", - "Click the \"Start Editing\" button.", + "Click the Create button. Then click into your new workspace.", "In the lower right hand corner you should see a terminal window. In this window use the following commands. You don't need to know what these mean at this point.", "Never run this command on your local machine. But in your Cloud 9 terminal window, run: rm -rf * && echo \"export NODE_PATH=$NODE_PATH:/home/ubuntu/.nvm/v0.10.35/lib/node_modules\" >> ~/.bashrc && source ~/.bashrc && npm install -g yo grunt grunt-cli generator-angular-fullstack && yo angular-fullstack", "Yeoman will prompt you to answer some questions. Answer them like this:", @@ -59,6 +57,7 @@ "Set the config flag for your Heroku environment and add MongoLab for your MongoDB instance by running the following command: cd ~/workspace/dist && heroku config:set NODE_ENV=production && heroku addons:create mongolab.", "As you build your app, you should frequently commit changes to your codebase. Make sure you're in the ~/workspace directory by running cd ~/workspace. Then you can this code to stage the changes to your changes and commit them: git commit -am \"your commit message\". Note that you should replace \"your commit message\" with a short summary of the changes you made to your code, such as \"added a records controller and corresponding routes\".", "You can push these new commits to GitHub by running git push origin master, and to Heroku by running grunt --force && grunt buildcontrol:heroku.", + "If you need further guidance on using Yeoman Angular-Fullstack Generator, check out: https://github.com/clnhll/guidetobasejumps.", "Now you're ready to move on to your first Basejump. Click the \"I've completed this challenge\" and move on." ], "challengeType": 2, @@ -69,9 +68,9 @@ "name": "Basejump: Build a Voting App", "dashedName": "basejump-build-a-voting-app", "difficulty": 2.01, - "challengeSeed": ["128451852"], + "challengeSeed": ["133315786"], "description": [ - "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://voteplex.herokuapp.com/ and deploy it to Heroku.", + "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://votingapp.herokuapp.com/ and deploy it to Heroku.", "Note that for each Basejump, you should create a new GitHub repository and a new Heroku project. If you can't remember how to do this, revisit http://freecodecamp.com/challenges/get-set-for-basejumps.", "As you build your app, you should frequently commit changes to your codebase. You can do this by running git commit -am \"your commit message\". Note that you should replace \"your commit message\" with a brief summary of the changes you made to your code.", "You can push these new commits to GitHub by running git push origin master, and to Heroku by running grunt --force && grunt buildcontrol:heroku.", @@ -84,6 +83,7 @@ "Bonus User Story: As an unauthenticated user, I can see everyone's polls, but I can't vote on anything.", "Bonus User Story: As an unauthenticated or authenticated user, I can see the results of polls in chart form. (This could be implemented using Chart.js or Google Charts.)", "Bonus User Story: As an authenticated user, if I don't like the options on a poll, I can create a new option.", + "If you need further guidance on using Yeoman Angular-Fullstack Generator, check out: https://github.com/clnhll/guidetobasejumps.", "Once you've finished implementing these user stories, click the \"I've completed this challenge\" button and enter the URLs for both your GitHub repository and your live app running on Heroku. If you pair programmed with a friend, enter his or her Free Code Camp username as well so that you both get credit for completing it.", "If you'd like immediate feedback on your project, click this button and paste in a link to your Heroku project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], @@ -105,9 +105,9 @@ "name": "Basejump: Build a Nightlife Coordination App", "dashedName": "basejump-build-a-nightlife-coordination-app", "difficulty": 2.02, - "challengeSeed": ["128451852"], + "challengeSeed": ["133315781"], "description": [ - "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://sociallife.herokuapp.com/ and deploy it to Heroku.", + "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://whatsgoinontonight.herokuapp.com/ and deploy it to Heroku.", "Note that for each Basejump, you should create a new GitHub repository and a new Heroku project. If you can't remember how to do this, revisit http://freecodecamp.com/challenges/get-set-for-basejumps.", "As you build your app, you should frequently commit changes to your codebase. You can do this by running git commit -am \"your commit message\". Note that you should replace \"your commit message\" with a brief summary of the changes you made to your code.", "You can push these new commits to GitHub by running git push origin master, and to Heroku by running grunt --force && grunt buildcontrol:heroku.", @@ -116,6 +116,8 @@ "User Story: As an authenticated user, I can add myself to a bar to indicate I am going there tonight.", "User Story: As an authenticated user, I can remove myself from a bar if I no longer want to go there.", "Bonus User Story: As an unauthenticated user, when I login I should not have to search again.", + "Hint: Try using the Yelp API to find venues in the cities your users search for.", + "If you need further guidance on using Yeoman Angular-Fullstack Generator, check out: https://github.com/clnhll/guidetobasejumps.", "Once you've finished implementing these user stories, click the \"I've completed this challenge\" button and enter the URLs for both your GitHub repository and your live app running on Heroku. If you pair programmed with a friend, enter his or her Free Code Camp username as well so that you both get credit for completing it.", "If you'd like immediate feedback on your project, click this button and paste in a link to your Heroku project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], @@ -137,9 +139,9 @@ "name": "Basejump: Chart the Stock Market", "dashedName": "basejump-chart-the-stock-market", "difficulty": 2.03, - "challengeSeed": ["128451852"], + "challengeSeed": ["133315787"], "description": [ - "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://stockjump.herokuapp.com/ and deploy it to Heroku.", + "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://stockstream.herokuapp.com/ and deploy it to Heroku.", "Note that for each Basejump, you should create a new GitHub repository and a new Heroku project. If you can't remember how to do this, revisit http://freecodecamp.com/challenges/get-set-for-basejumps.", "As you build your app, you should frequently commit changes to your codebase. You can do this by running git commit -am \"your commit message\". Note that you should replace \"your commit message\" with a brief summary of the changes you made to your code.", "You can push these new commits to GitHub by running git push origin master, and to Heroku by running grunt --force && grunt buildcontrol:heroku.", @@ -148,6 +150,7 @@ "User Story: As a user, I can add new stocks by their symbol name.", "User Story: As a user, I can remove stocks.", "Bonus User Story: As a user, I can see changes in real-time when any other user adds or removes a stock.", + "If you need further guidance on using Yeoman Angular-Fullstack Generator, check out: https://github.com/clnhll/guidetobasejumps.", "Once you've finished implementing these user stories, click the \"I've completed this challenge\" button and enter the URLs for both your GitHub repository and your live app running on Heroku. If you pair programmed with a friend, enter his or her Free Code Camp username as well so that you both get credit for completing it.", "If you'd like immediate feedback on your project, click this button and paste in a link to your Heroku project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], @@ -169,9 +172,9 @@ "name": "Basejump: Manage a Book Trading Club", "dashedName": "basejump-manage-a-book-trading-club", "difficulty": 2.04, - "challengeSeed": ["128451852"], + "challengeSeed": ["133316032"], "description": [ - "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://bookoutpost.herokuapp.com/ and deploy it to Heroku.", + "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://bookjump.herokuapp.com/ and deploy it to Heroku.", "Note that for each Basejump, you should create a new GitHub repository and a new Heroku project. If you can't remember how to do this, revisit http://freecodecamp.com/challenges/get-set-for-basejumps.", "As you build your app, you should frequently commit changes to your codebase. You can do this by running git commit -am \"your commit message\". Note that you should replace \"your commit message\" with a brief summary of the changes you made to your code.", "You can push these new commits to GitHub by running git push origin master, and to Heroku by running grunt --force && grunt buildcontrol:heroku.", @@ -180,6 +183,7 @@ "User Story: As an authenticated user, I can add a new book.", "User Story: As an authenticated user, I can update my settings to store my full name, city, and state.", "Bonus User Story: As an authenticated user, I can propose a trade and wait for the other user to accept the trade.", + "If you need further guidance on using Yeoman Angular-Fullstack Generator, check out: https://github.com/clnhll/guidetobasejumps.", "Once you've finished implementing these user stories, click the \"I've completed this challenge\" button and enter the URLs for both your GitHub repository and your live app running on Heroku. If you pair programmed with a friend, enter his or her Free Code Camp username as well so that you both get credit for completing it.", "If you'd like immediate feedback on your project, click this button and paste in a link to your Heroku project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], @@ -201,9 +205,9 @@ "name": "Basejump: Build a Pinterest Clone", "dashedName": "basejump-build-a-pinterest-clone", "difficulty": 2.05, - "challengeSeed": ["128451852"], + "challengeSeed": ["133315784"], "description": [ - "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://linkterest.herokuapp.com/ and deploy it to Heroku.", + "Objective: Build a full stack JavaScript app that successfully reverse-engineers this: http://stark-lowlands-3680.herokuapp.com/ and deploy it to Heroku.", "Note that for each Basejump, you should create a new GitHub repository and a new Heroku project. If you can't remember how to do this, revisit http://freecodecamp.com/challenges/get-set-for-basejumps.", "As you build your app, you should frequently commit changes to your codebase. You can do this by running git commit -am \"your commit message\". Note that you should replace \"your commit message\" with a brief summary of the changes you made to your code.", "You can push these new commits to GitHub by running git push origin master, and to Heroku by running grunt --force && grunt buildcontrol:heroku.", @@ -215,6 +219,7 @@ "User Story: As an unauthenticated user, I can browse other users' walls of images.", "Bonus User Story: As an authenticated user, if I upload an image that is broken, it will be replaced by a placeholder image. (can use jQuery broken image detection)", "Hint: Masonry.js is a library that allows for Pinterest-style image grids.", + "If you need further guidance on using Yeoman Angular-Fullstack Generator, check out: https://github.com/clnhll/guidetobasejumps.", "Once you've finished implementing these user stories, click the \"I've completed this challenge\" button and enter the URLs for both your GitHub repository and your live app running on Heroku. If you pair programmed with a friend, enter his or her Free Code Camp username as well so that you both get credit for completing it.", "If you'd like immediate feedback on your project, click this button and paste in a link to your Heroku project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], diff --git a/challenges/basic-javascript.json b/challenges/basic-javascript.json index 9d1345c659..b47d31002e 100644 --- a/challenges/basic-javascript.json +++ b/challenges/basic-javascript.json @@ -3,7 +3,7 @@ "order": 0.006, "challenges": [ { - "_id":"bd7123c9c441eddfaeb4bdef", + "id":"bd7123c9c441eddfaeb4bdef", "name":"Welcome To Comments", "dashedName":"waypoint-welcome-to-comments", "difficulty":"9.98", @@ -29,7 +29,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c441eddfaeb5bdef", + "id": "bd7123c9c441eddfaeb5bdef", "name": "Unconditionally Loving Booleans", "dashedName": "waypoint-unconditionally-loving-booleans", "difficulty": "9.98001", @@ -55,7 +55,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c443eddfaeb5bdef", + "id": "bd7123c9c443eddfaeb5bdef", "name": "Start Using Variables", "dashedName": "waypoint-start-using-variables", "difficulty": "9.9801", @@ -83,7 +83,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c444eddfaeb5bdef", + "id": "bd7123c9c444eddfaeb5bdef", "name": "Define Your First and Last Name", "dashedName": "waypoint-define-your-first-and-last-name", "difficulty": "9.9802", @@ -111,7 +111,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c448eddfaeb5bdef", + "id": "bd7123c9c448eddfaeb5bdef", "name": "Check the Length Property of a String Variable", "dashedName": "waypoint-check-the-length-property-of-a-string-variable", "difficulty": "9.9809", @@ -142,7 +142,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c549eddfaeb5bdef", + "id": "bd7123c9c549eddfaeb5bdef", "name": "Use Bracket Notation to Find the First Character in a String", "dashedName": "waypoint-use-bracket-notation-to-find-the-first-character-in-a-string", "difficulty": "9.9810", @@ -174,7 +174,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c450eddfaeb5bdef", + "id": "bd7123c9c450eddfaeb5bdef", "name": "Use Bracket Notation to Find the Nth Character in a String", "dashedName": "waypoint-use-bracket-notation-to-find-the-nth-character-in-a-string", "difficulty": "9.9811", @@ -205,7 +205,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c451eddfaeb5bdef", + "id": "bd7123c9c451eddfaeb5bdef", "name": "Use Bracket Notation to Find the Last Character in a String", "dashedName": "waypoint-use-bracket-notation-to-find-the-last-character-in-a-string", "difficulty": "9.9812", @@ -235,7 +235,7 @@ "challengeType": 1 }, { - "_id": "bd7123c9c452eddfaeb5bdef", + "id": "bd7123c9c452eddfaeb5bdef", "name": "Use Bracket Notation to Find the Nth to Last Character in a String", "dashedName": "waypoint-use-bracket-notation-to-find-the-nth-to-last-character-in-a-string", "difficulty": "9.9813", @@ -265,7 +265,7 @@ "challengeType": 1 }, { - "_id": "cf1111c1c11feddfaeb3bdef", + "id": "cf1111c1c11feddfaeb3bdef", "name": "Magical Maths Addition", "dashedName": "waypoint-magical-maths-addition", "difficulty": "9.98141", @@ -289,7 +289,7 @@ "challengeType": 1 }, { - "_id": "cf1111c1c11feddfaeb4bdef", + "id": "cf1111c1c11feddfaeb4bdef", "name": "Magical Maths Subtraction", "dashedName": "waypoint-magical-maths-subtraction", "difficulty": "9.98142", @@ -313,7 +313,7 @@ "challengeType": 1 }, { - "_id": "cf1111c1c11feddfaeb5bdef", + "id": "cf1111c1c11feddfaeb5bdef", "name": "Magical Maths Multiplication", "dashedName": "waypoint-magical-maths-multiplication", "difficulty": "9.98143", @@ -337,7 +337,7 @@ "challengeType": 1 }, { - "_id": "cf1111c1c11feddfaeb6bdef", + "id": "cf1111c1c11feddfaeb6bdef", "name": "Magical Maths Division", "dashedName": "waypoint-magical-maths-division", "difficulty": "9.9814", @@ -361,7 +361,7 @@ "challengeType": 1 }, { - "_id": "cf1111c1c11feddfaeb4bdef", + "id": "cf1111c1c11feddfaeb4bdef", "name": "Creating Decimals", "dashedName": "waypoint-creating-decimals", "difficulty": "9.9815", @@ -386,7 +386,7 @@ "challengeType": 1 }, { - "_id": "bd7993c9c69feddfaeb7bdef", + "id": "bd7993c9c69feddfaeb7bdef", "name": "Working With Decimals", "dashedName": "waypoint-working-with-decimals", "difficulty": "9.98151", @@ -411,7 +411,7 @@ "challengeType": 1 }, { - "_id": "bd7993c9c69feddfaeb8bdef", + "id": "bd7993c9c69feddfaeb8bdef", "name": "An Array Of new Information", "dashedName": "waypoint-an-array-of-new-information", "difficulty": "9.9816", @@ -439,7 +439,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c11feddfaeb7bdef", + "id":"cf1111c1c11feddfaeb7bdef", "name":"Nesting Arrays", "dashedName":"waypoint-nesting-arrays", "difficulty":"9.98161", @@ -460,7 +460,7 @@ "challengeType": 1 }, { - "_id":"bg9997c9c79feddfaeb9bdef", + "id":"bg9997c9c79feddfaeb9bdef", "name":"Accessing data with Indexes", "dashedName":"waypoint-accessing-data-with-indexes", "difficulty":"9.9817", @@ -492,7 +492,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c11feddfaeb8bdef", + "id":"cf1111c1c11feddfaeb8bdef", "name":"Modifying Data With Indexes", "dashedName":"waypoint-modifying-data-with-indexes", "difficulty":"9.98171", @@ -525,7 +525,7 @@ "challengeType": 1 }, { - "_id": "bg9994c9c69feddfaeb9bdef", + "id": "bg9994c9c69feddfaeb9bdef", "name": "Manipulating Arrays With pop()", "dashedName": "waypoint-manipulating-arrays-with-pop", "difficulty": "9.9818", @@ -557,7 +557,7 @@ "challengeType": 1 }, { - "_id": "bg9995c9c69feddfaeb9bdef", + "id": "bg9995c9c69feddfaeb9bdef", "name": "Manipulating Arrays With push()", "dashedName": "waypoint-manipulating-arrays-with-push", "difficulty": "9.9818", @@ -580,7 +580,7 @@ "challengeType": 1 }, { - "_id": "bg9996c9c69feddfaeb9bdef", + "id": "bg9996c9c69feddfaeb9bdef", "name": "Manipulating Arrays With shift()", "dashedName": "waypoint-manipulating-arrays-with-shift", "difficulty": "9.9817", @@ -604,7 +604,7 @@ "challengeType": 1 }, { - "_id": "bg9997c9c69feddfaeb9bdef", + "id": "bg9997c9c69feddfaeb9bdef", "name": "Manipulating Arrays With unshift()", "dashedName": "waypoint-manipulating-arrays-with-unshift", "difficulty": "9.9818", @@ -627,7 +627,7 @@ "challengeType": 1 }, { - "_id":"bg9997c9c89feddfaeb9bdef", + "id":"bg9997c9c89feddfaeb9bdef", "name":"Make it functional", "dashedName":"waypoint-make-it-functional", "difficulty":"9.9819", @@ -665,7 +665,7 @@ "challengeType": 1 }, { - "_id":"bg9998c9c99feddfaeb9bdef", + "id":"bg9998c9c99feddfaeb9bdef", "name":"I Object!", "dashedName":"waypoint-i-object", "difficulty":"9.9822", @@ -712,7 +712,7 @@ "challengeType": 1 }, { - "_id":"bg9999c9c99feddfaeb9bdef", + "id":"bg9999c9c99feddfaeb9bdef", "name":"Manipulating Objects", "dashedName":"waypoint-manipulating-objects", "difficulty":"9.9823", @@ -758,7 +758,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c11feddfaeb5bdef", + "id":"cf1111c1c11feddfaeb5bdef", "name":"Looping with for", "dashedName":"waypoint-looping-with-for", "difficulty":"9.9824", @@ -788,7 +788,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c11feddfaeb1bdef", + "id":"cf1111c1c11feddfaeb1bdef", "name":"Looping with while", "dashedName":"waypoint-looping-with-while", "difficulty":"9.9825", @@ -819,7 +819,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c11feddfaeb2bdef", + "id":"cf1111c1c11feddfaeb2bdef", "name":"Looping with do while", "dashedName":"waypoint-looping-with-do-while", "difficulty":"9.9826", @@ -850,7 +850,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c11feddfaeb9bdef", + "id":"cf1111c1c11feddfaeb9bdef", "name":"Random Numbers", "dashedName":"waypoint-random-numbers", "difficulty":"9.9827", @@ -877,7 +877,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c12feddfaeb1bdef", + "id":"cf1111c1c12feddfaeb1bdef", "name":"Random Whole Numbers", "dashedName":"waypoint-random-whole-numbers", "difficulty":"9.9828", @@ -907,7 +907,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c12feddfaeb2bdef", + "id":"cf1111c1c12feddfaeb2bdef", "name":"Random Whole Numbers In a Range", "dashedName":"waypoint-random-whole-numbers-in-a-range", "difficulty":"9.9829", @@ -936,7 +936,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c12feddfaeb3bdef", + "id":"cf1111c1c12feddfaeb3bdef", "name":"If Else Statements", "dashedName":"waypoint-if-else-statements", "difficulty":"9.983", @@ -971,7 +971,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c12feddfaeb6bdef", + "id":"cf1111c1c12feddfaeb6bdef", "name":"An Intro To RegEx", "dashedName":"waypoint-an-intro-to-regex", "difficulty":"9.984", @@ -1008,7 +1008,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c12feddfaeb7bdef", + "id":"cf1111c1c12feddfaeb7bdef", "name":"Finding Numbers", "dashedName":"waypoint-finding-numbers", "difficulty":"9.985", @@ -1040,7 +1040,7 @@ "challengeType": 1 }, { - "_id":"cf1111c1c12feddfaeb8bdef", + "id":"cf1111c1c12feddfaeb8bdef", "name":"Finding WhiteSpace", "dashedName":"waypoint-finding-whitespace", "difficulty":"9.987", diff --git a/challenges/ziplines.json b/challenges/basic-ziplines.json similarity index 58% rename from challenges/ziplines.json rename to challenges/basic-ziplines.json index 02571408c2..16053946ec 100644 --- a/challenges/ziplines.json +++ b/challenges/basic-ziplines.json @@ -1,6 +1,6 @@ { - "name": "Front End Development Projects", - "order": 0.012, + "name": "Basic Front End Development Projects", + "order": 0.006, "challenges": [ { "id": "bd7158d8c442eddfbeb5bd1f", @@ -37,21 +37,58 @@ "namePt": "", "descriptionPt": [] }, + { + "id": "bd7158d8c242eddfaeb5bd13", + "name": "Zipline: Build a Personal Portfolio Webpage", + "dashedName": "zipline-build-a-personal-portfolio-webpage", + "difficulty": 1.01, + "challengeSeed": ["133315782"], + "description": [ + "Objective: Build a CodePen.io app that successfully reverse-engineers this: http://codepen.io/ThiagoFerreir4/full/eNMxEp.", + "Rule #1: Don't look at the example project's code on CodePen. Figure it out for yourself.", + "Rule #2: You may use whichever libraries or APIs you need.", + "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", + "Here are the user stories you must enable, and optional bonus user stories:", + "User Story: As a user, I can access all of the portfolio webpage's content just by scrolling.", + "User Story: As a user, I can click different buttons that will take me to the portfolio creator's different social media pages.", + "User Story: As a user, I can see thumbnail images of different projects the portfolio creator has built (if you don't haven't built any websites before, use placeholders.)", + "Bonus User Story: As a user, I navigate to different sections of the webpage by clicking buttons in the navigation.", + "Don't worry if you don't have anything to showcase on your portfolio yet - you will build several several apps on the next few CodePen challenges, and can come back and update your portfolio later.", + "There are many great portfolio templates out there, but for this challenge, you'll need to build a portfolio page yourself. Using Bootstrap will make this much easier for you.", + "Note that CodePen.io overrides the Window.open() function, so if you want to open windows using jquery, you will need to target invisible anchor elements like this one: <a target='_blank'&rt;.", + "Remember to use RSAP if you get stuck.", + "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", + "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" + ], + "challengeType": 3, + "tests": [], + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, { "id": "bd7158d8c442eddfaeb5bd13", "name": "Zipline: Build a Random Quote Machine", "dashedName": "zipline-build-a-random-quote-machine", - "difficulty": 1.01, + "difficulty": 1.02, "challengeSeed": ["126415122"], "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/AdventureBear/full/vEoVMw.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", + "Objective: Build a CodePen.io app that successfully reverse-engineers this: http://codepen.io/AdventureBear/full/vEoVMw.", + "Rule #1: Don't look at the example project's code on CodePen. Figure it out for yourself.", "Rule #2: You may use whichever libraries or APIs you need.", "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", "Here are the user stories you must enable, and optional bonus user stories:", "User Story: As a user, I can click a button to show me a new random quote.", "Bonus User Story: As a user, I can press a button to tweet out a quote.", - "Remember to use RSAP if you get stuck. Try using jQuery's $.getJSON() to consume APIs.", + "Note that you can either put your quotes into an array and show them at random, or use an API to get quotes, such as http://forismatic.com/en/api/.", + "Remember to use RSAP if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], @@ -72,11 +109,11 @@ "id": "bd7158d8c442eddfaeb5bd10", "name": "Zipline: Show the Local Weather", "dashedName": "zipline-show-the-local-weather", - "difficulty": 1.02, + "difficulty": 1.03, "challengeSeed": ["126415127"], "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/AdventureBear/full/yNBJRj.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", + "Objective: Build a CodePen.io app that successfully reverse-engineers this: http://codepen.io/AdventureBear/full/yNBJRj.", + "Rule #1: Don't look at the example project's code on CodePen. Figure it out for yourself.", "Rule #2: You may use whichever libraries or APIs you need.", "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", "Here are the user stories you must enable, and optional bonus user stories:", @@ -84,110 +121,7 @@ "Bonus User Story: As a user, I can see an icon depending on the temperature..", "Bonus User Story: As a user, I see a different background image depending on the temperature (e.g. snowy mountain, hot desert).", "Bonus User Story: As a user, I can push a button to toggle between Fahrenheit and Celsius.", - "Remember to use RSAP if you get stuck. Try using jQuery's $.getJSON() to consume APIs.", - "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", - "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" - ], - "challengeType": 3, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd7158d8c442eddfaeb5bd1f", - "name": "Zipline: Use the Twitch.tv JSON API", - "dashedName": "zipline-use-the-twitchtv-json-api", - "difficulty": 1.03, - "challengeSeed": ["126411564"], - "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/GJKRxZ.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", - "Rule #2: You may use whichever libraries or APIs you need.", - "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", - "Here are the user stories you must enable, and optional bonus user stories:", - "User Story: As a user, I can see whether Free Code Camp is currently streaming on Twitch.tv.", - "User Story: As a user, I can click the status output and be sent directly to the Free Code Camp's Twitch.tv channel.", - "User Story: As a user, if Free Code Camp is streaming, I can see additional details about what they are streaming.", - "Bonus User Story: As a user, I can search through the streams listed.", - "Hint: Here's an example call to Twitch.tv's JSON API: https://api.twitch.tv/kraken/streams/freecodecamp.", - "Hint: The relevant documentation about this API call is here: https://github.com/justintv/Twitch-API/blob/master/v3_resources/streams.md#get-streamschannel.", - "Hint: Here's an array of the Twitch.tv usernames of people who regularly stream coding: [\"freecodecamp\", \"storbeck\", \"terakilobyte\", \"habathcx\",\"RobotCaleb\",\"comster404\",\"brunofin\",\"thomasballinger\",\"noobs2ninjas\",\"beohoff\"]", - "Remember to use RSAP if you get stuck. Try using jQuery's $.getJSON() to consume APIs.", - "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", - "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" - ], - "challengeType": 3, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd7158d8c442eddfaeb5bd18", - "name": "Zipline: Stylize Stories on Camper News", - "dashedName": "zipline-stylize-stories-on-camper-news", - "difficulty": 1.04, - "challengeSeed": ["126415129"], - "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/Wveezv.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", - "Rule #2: You may use whichever libraries or APIs you need.", - "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", - "Here are the user stories you must enable, and optional bonus user stories:", - "User Story: As a user, I can browse recent posts from Camper News.", - "User Story: As a user, I can click on a post to be taken to the story's original URL.", - "User Story: As a user, I can click a link to go directly to the post's discussion page.", - "Bonus User Story: As a user, I can see how many upvotes each story has.", - "Hint: Here's the Camper News Hot Stories API endpoint: http://www.freecodecamp.com/stories/hotStories.", - "Remember to use RSAP if you get stuck. Try using jQuery's $.getJSON() to consume APIs.", - "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", - "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" - ], - "challengeType": 3, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd7158d8c442eddfaeb5bd19", - "name": "Zipline: Wikipedia Viewer", - "dashedName": "zipline-wikipedia-viewer", - "difficulty": 1.05, - "challengeSeed": ["126415131"], - "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/MwgQea.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", - "Rule #2: You may use whichever libraries or APIs you need.", - "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", - "Here are the user stories you must enable, and optional bonus user stories:", - "User Story: As a user, I can search Wikipedia entries in a search box and see the resulting Wikipedia entries.", - "Bonus User Story:As a user, I can click a button to see a random Wikipedia entry.", - "Bonus User Story:As a user, when I type in the search box, I can see a dropdown menu with autocomplete options for matching Wikipedia entries.", - "Hint: Here's an entry on using Wikipedia's API: http://www.mediawiki.org/wiki/API:Main_page.", - "Remember to use RSAP if you get stuck. Try using jQuery's $.getJSON() to consume APIs.", + "Remember to use RSAP if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], @@ -208,11 +142,11 @@ "id": "bd7158d8c442eddfaeb5bd0f", "name": "Zipline: Build a Pomodoro Clock", "dashedName": "zipline-build-a-pomodoro-clock", - "difficulty": 1.06, + "difficulty": 1.04, "challengeSeed": ["126411567"], "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/RPbGxZ/.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", + "Objective: Build a CodePen.io app that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/RPbGxZ/.", + "Rule #1: Don't look at the example project's code on CodePen. Figure it out for yourself.", "Rule #2: You may use whichever libraries or APIs you need.", "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", "Here are the user stories you must enable, and optional bonus user stories:", @@ -237,53 +171,24 @@ "descriptionPt": [] }, { - "id": "bd7158d8c442eddfaeb5bd17", - "name": "Zipline: Build a JavaScript Calculator", - "dashedName": "zipline-build-a-javascript-calculator", - "difficulty": 1.07, - "challengeSeed": ["126411565"], + "id": "bd7158d8c442eddfaeb5bd1f", + "name": "Zipline: Use the Twitch.tv JSON API", + "dashedName": "zipline-use-the-twitchtv-json-api", + "difficulty": 1.05, + "challengeSeed": ["126411564"], "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/zxgaqw.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", + "Objective: Build a CodePen.io app that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/GJKRxZ.", + "Rule #1: Don't look at the example project's code on CodePen. Figure it out for yourself.", "Rule #2: You may use whichever libraries or APIs you need.", "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", "Here are the user stories you must enable, and optional bonus user stories:", - "User Story: As a user, I can add, subtract, multiply and divide two numbers.", - "Bonus User Story: I can clear the input field with a clear button.", - "Bonus User Story: I can keep chaining mathematical operations together until I hit the clear button, and the calculator will tell me the correct output.", - "Remember to use RSAP if you get stuck.", - "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", - "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" - ], - "challengeType": 3, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd7158d8c442eddfaeb5bd1c", - "name": "Zipline: Build a Tic Tac Toe Game", - "dashedName": "zipline-build-a-tic-tac-toe-game", - "difficulty": 1.08, - "challengeSeed": ["126415123"], - "description": [ - "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/alex-dixon/full/JogOpQ/.", - "Rule #1: Don't look at the example project's code. Figure it out for yourself.", - "Rule #2: You may use whichever libraries or APIs you need.", - "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.", - "Here are the user stories you must enable, and optional bonus user stories:", - "User Story: As a user, I can play a game of Tic Tac Toe with the computer.", - "Bonus User Story: As a user, I can never actually win against the computer - at best I can tie.", - "Bonus User Story: As a user, my game will reset as soon as it's over so I can play again.", - "Bonus User Story: As a user, I can choose whether I want to play as X or O.", + "User Story: As a user, I can see whether Free Code Camp is currently streaming on Twitch.tv.", + "User Story: As a user, I can click the status output and be sent directly to the Free Code Camp's Twitch.tv channel.", + "User Story: As a user, if Free Code Camp is streaming, I can see additional details about what they are streaming.", + "Bonus User Story: As a user, I can search through the streams listed.", + "Hint: Here's an example call to Twitch.tv's JSON API: https://api.twitch.tv/kraken/streams/freecodecamp.", + "Hint: The relevant documentation about this API call is here: https://github.com/justintv/Twitch-API/blob/master/v3_resources/streams.md#get-streamschannel.", + "Hint: Here's an array of the Twitch.tv usernames of people who regularly stream coding: [\"freecodecamp\", \"storbeck\", \"terakilobyte\", \"habathcx\",\"RobotCaleb\",\"comster404\",\"brunofin\",\"thomasballinger\",\"noobs2ninjas\",\"beohoff\"]", "Remember to use RSAP if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" diff --git a/challenges/bootstrap.json b/challenges/bootstrap.json index a52373ce99..a8b417283b 100644 --- a/challenges/bootstrap.json +++ b/challenges/bootstrap.json @@ -6,7 +6,7 @@ "id": "bad87fee1348bd9acde08812", "name": "Waypoint: Mobile Responsive Images", "dashedName": "waypoint-mobile-responsive-images", - "difficulty": 0.047, + "difficulty": 1, "description": [ "Now let's go back to our Cat Photo App. This time, we'll style it using the popular Bootstrap responsive CSS framework. First, add a new image with the src attribute of \"http://bit.ly/fcc-kittens2\", and add the \"img-responsive\" Bootstrap class to that image.", "It would be great if the image could be exactly the width of our phone's screen.", @@ -92,7 +92,7 @@ "id": "bad87fee1348bd8acde08812", "name": "Waypoint: Center Text with Bootstrap", "dashedName": "waypoint-center-text-with-bootstrap", - "difficulty": 0.048, + "difficulty": 2, "description": [ "Add Bootstrap's \"text-center\" class to your h2 element.", "Now that we're using Bootstrap, we can center our heading elements to make them look better. All we need to do is add the class text-center to our h1 and h2 elements.", @@ -174,7 +174,7 @@ "id": "bad87fee1348cd8acdf08812", "name": "Waypoint: Create a Bootstrap Button", "dashedName": "waypoint-create-a-bootstrap-button", - "difficulty": 0.049, + "difficulty": 3, "description": [ "Create a new button element below your large kitten photo. Give it the class \"btn\" and the text of \"like this photo\".", "Bootstrap has its own styles for button elements, which look much better than the plain HTML ones." @@ -257,7 +257,7 @@ "id": "bad87fee1348cd8acef08812", "name": "Waypoint: Create a Block Element Bootstrap Button", "dashedName": "waypoint-create-a-block-element-bootstrap-button", - "difficulty": 0.050, + "difficulty": 4, "description": [ "Add Bootstrap's \"btn-block\" class to your Bootstrap button.", "Normally, your button elements are only as wide as the text that they contain. By making them block elements, your button will stretch to fill your page's entire horizontal space.", @@ -344,7 +344,7 @@ "id": "bad87fee1348cd8acef08811", "name": "Waypoint: Taste the Bootstrap Button Color Rainbow", "dashedName": "waypoint-taste-the-bootstrap-button-color-rainbow", - "difficulty": 0.051, + "difficulty": 5, "description": [ "Add Bootstrap's \"btn-primary\" class to your button.", "The \"btn-primary\" class is the main color you'll use in your app. It is useful for highlighting actions you want your user to take.", @@ -429,7 +429,7 @@ "id": "bad87fee1348cd8acef08813", "name": "Waypoint: Call out Optional Actions with Button Info", "dashedName": "waypoint-call-out-optional-actions-with-button-info", - "difficulty": 0.052, + "difficulty": 6, "description": [ "Create a new block-level Bootstrap button below your \"Like\" button with the text \"Info\", and add Bootstrap's \"btn-info\" and \"btn-block\" classes to it.", "Bootstrap comes with several pre-defined colors for buttons. The \"btn-info\" class is used to call attention to optional actions that the user can take.", @@ -515,7 +515,7 @@ "id": "bad87fee1348ce8acef08814", "name": "Waypoint: Warn your Users of a Dangerous Action", "dashedName": "waypoint-warn-your-users-of-a-dangerous-action", - "difficulty": 0.053, + "difficulty": 7, "description": [ "Create a button with the text \"Delete\" and give it the class \"btn-danger\".", "Bootstrap comes with several pre-defined colors for buttons. The \"btn-danger\" class is the button color you'll use to notify users that the button performs a destructive action, such as deleting a cat photo.", @@ -602,7 +602,7 @@ "id": "bad88fee1348ce8acef08815", "name": "Waypoint: Use the Bootstrap Grid to Put Elements Side By Side", "dashedName": "waypoint-use-the-bootstrap-grid-to-put-elements-side-by-side", - "difficulty": 0.054, + "difficulty": 8, "description": [ "Put the \"Like\", \"Info\" and \"Delete\" buttons side-by-side by wrapping all three of them within one <div class=\"row\"> element, then each of them within a <div class=\"col-xs-4\"> element.", "Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a div element.", @@ -694,7 +694,7 @@ "id": "bad87fee1348bd9aedf08845", "name": "Waypoint: Ditch Custom CSS for Bootstrap", "dashedName": "waypoint-ditch-custom-css-for-bootstrap", - "difficulty": 0.055, + "difficulty": 9, "description": [ "Delete the \".red-text\", \"p\", and \".smaller-image\" CSS declarations from your style element so that the only declarations left in your style element are \"h2\" and \"thick-green-border\". Then Delete the p element that contains a dead link. Then remove the \"red-text\" class from your h2 element and replace it with the \"text-primary\" Bootstrap class. Finally, remove the \"smaller-image\" class from your first img element and replace it with the img-responsive class.", "We can clean up our code and make our Cat Photo App look more conventional by using Bootstrap's built-in styles instead of the custom styles we created earlier.", @@ -792,7 +792,7 @@ "id": "bad87fee1348bd9aede08845", "name": "Waypoint: Create a Custom Heading", "dashedName": "waypoint-create-a-custom-heading", - "difficulty": 0.056, + "difficulty": 11, "description": [ "Wrap your first image and your h2 element within a single <div class='row'> element. Wrap your h2 text within a <div class='col-xs-8'> and your image in a <div class='col-xs-4'> so that they are on the same line.", "We will make a simple heading for our Cat Photo App by putting them in the same row.", @@ -879,7 +879,7 @@ "id": "bad87fee1348bd9aedd08845", "name": "Waypoint: Add Font Awesome Icons to our Buttons", "dashedName": "waypoint-add-font-awesome-icons-to-our-buttons", - "difficulty": 0.057, + "difficulty": 12, "description": [ "Use Font Awesome to add a \"thumbs-up\" icon to your like button by giving it a i element with the classes \"fa\" and \"fa-thumbs-up\".", "Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.", @@ -963,7 +963,7 @@ "id": "bad87fee1348bd9aedc08845", "name": "Waypoint: Add Font Awesome Icons to all of our Buttons", "dashedName": "waypoint-add-font-awesome-icons-to-all-of-our-Buttons", - "difficulty": 0.058, + "difficulty": 13, "description": [ "Use Font Awesome to add a \"info-circle\" icon to your info button and a \"trash\" icon to your delete button.", "Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.", @@ -1047,7 +1047,7 @@ "id": "bad87fee1348bd9aedb08845", "name": "Waypoint: Responsively Style Radio Buttons", "dashedName": "waypoint-responsively-style-radio-buttons", - "difficulty": 0.059, + "difficulty": 14, "description": [ "Wrap all of your radio buttons within a <div class='row'> element. Then wrap each of them within a <div class='col-xs-6'> element.", "You can use Bootstrap's \"col-xs-*\" classes on form elements, too! This way, our radio buttons will be evenly spread out across the page, regardless of how wide the screen resolution is." @@ -1130,7 +1130,7 @@ "id": "bad87fee1348bd9aeda08845", "name": "Waypoint: Responsively Style Checkboxes", "dashedName": "waypoint-responsively-style-checkboxes", - "difficulty": 0.060, + "difficulty": 15, "description": [ "Wrap all your checkboxes in a <div class='row'> element. Then wrap each of them in a <div class='col-xs-4'> element.", "You can use Bootstrap's \"col-xs-*\" classes on form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is." @@ -1220,7 +1220,7 @@ "id": "bad87fee1348bd9aed908845", "name": "Waypoint: Style Text Inputs as Form Controls", "dashedName": "waypoint-style-text-inputs-as-form-controls", - "difficulty": 0.061, + "difficulty": 16, "description": [ "Give your form's text input field a class of \"form-control\". Give your form's submit button the classes \"btn btn-primary\". Also give this button the Font Awesome icon of \"fa-paper-plane\".", "You can add the \"fa-paper-plane\" Font Awesome icon by adding <i class=\"fa fa-paper-plane\"></i> within your submit button element." @@ -1319,7 +1319,7 @@ "id": "bad87fee1348bd9aec908845", "name": "Waypoint: Line up Form Elements Responsively with Bootstrap", "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", - "difficulty": 0.062, + "difficulty": 17, "description": [ "Now let's get your form input and your submission button on the same line. We'll do this the same way we have previously: by using a div element with the class \"row\", and other div elements within it using the \"col-xs-*\" class.", "Wrap both your form's text input and submit button within a div with the class \"row\". Wrap your form's text input within a div with the class of \"col-xs-7\". Wrap your form's submit button in a div with the class \"col-xs-5\".", @@ -1414,6 +1414,458 @@ "descriptionEs": [], "namePt": "", "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908846", + "name": "Waypoint: Create a Bootstrap Headline", + "dashedName": "waypoint-create-a-bootstrap-headline", + "difficulty": 18, + "description": [ + + ], + "tests": [ + "assert($('h3') && $('h3').length > 0, 'Add a h3 element to your page.')", + "assert(editor.match(/<\\/h3>/g) && editor.match(/

/g).length === editor.match(/

h3 element has a closing tag.')", + "assert($('h3').hasClass('text-primary'), 'Your h3 element should be colored by applying the class \"text-primary\"')", + "assert($('h3').hasClass('text-center'), 'Your h3 element should be centered by applying the class \"text-center\"')", + "assert.isTrue((/jquery(\\s)+playground/gi).test($('h3').text()), 'Your h3 element should have the text \"jQuery Playground\".')" + ], + "challengeSeed": [ + "", + "", + "" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9bec908846", + "name": "Waypoint: Create a Bootstrap Row", + "dashedName": "waypoint-create-a-bootstrap-row", + "difficulty": 18.5, + "description": [ + ], + "tests": [ + "assert($('div').length > 0, 'Add a div element to your page.')", + "assert($('div').hasClass('row'), 'Your div element should have the class \"row\"')", + "assert(editor.match(/<\\/div>/g) && editor.match(/
/g).length === editor.match(/
div element has a closing tag.')" + ], + "challengeSeed": [ + "

jQuery Playground

", + "", + "" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908847", + "name": "Waypoint: Split your Bootstrap Row", + "dashedName": "waypoint-split-your-bootstrap-row", + "difficulty": 19, + "description": [ + ], + "tests": [ + "assert($('div.row').children('div.col-xs-6').length > 1, 'Wrap two div class=\"col-xs-6\" elements within your div class=\"row\" element.')", + "assert(editor.match(/<\\/div>/g) && editor.match(/
/g).length === editor.match(/
div elements have closing tags.')" + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908848", + "name": "Waypoint: Create Bootstrap Wells", + "dashedName": "waypoint-create-bootstrap-wells", + "difficulty": 20, + "description": [ + ], + "tests": [ + "assert($('div').length > 4, 'Add two div elements inside your div class=\"row\"> element both with the class \"col-xs-6\"')", + "assert($('div.row').children('div.col-xs-6').length > 1, 'Wrap both of your div class=\"col-xs-6\" elements within your div class=\"row\" element.')", + "assert($('div.col-xs-6').children('div.well').length > 1, 'Wrap both of your div class=\"col-xs-6\" elements within your div class=\"row\" element.')", + "assert(editor.match(/<\\/div>/g) && editor.match(/
/g).length === editor.match(/
div elements have closing tags.')" + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "
", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908849", + "name": "Waypoint: Build a jQuery Playground in Bootstrap", + "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "difficulty": 21, + "description": [ + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908850", + "name": "Waypoint: Build a jQuery Playground in Bootstrap", + "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "difficulty": 22, + "description": [ + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908852", + "name": "Waypoint: Build a jQuery Playground in Bootstrap", + "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "difficulty": 23, + "description": [ + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908853", + "name": "Waypoint: Build a jQuery Playground in Bootstrap", + "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "difficulty": 24, + "description": [ + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908854", + "name": "Waypoint: Build a jQuery Playground in Bootstrap", + "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "difficulty": 25, + "description": [ + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
", + "
", + " ", + " ", + " ", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908855", + "name": "Waypoint: Build a jQuery Playground in Bootstrap", + "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "difficulty": 26, + "description": [ + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "

#left-well

", + "
", + " ", + " ", + " ", + "
", + "
", + "
", + "

#right-well

", + "
", + " ", + " ", + " ", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908856", + "name": "Waypoint: Build a jQuery Playground in Bootstrap", + "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "difficulty": 27, + "description": [ + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "

#left-well

", + "
", + " ", + " ", + " ", + "
", + "
", + "
", + "

#right-well

", + "
", + " ", + " ", + " ", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "bad87fee1348bd9aec908857", + "name": "Waypoint: Use Comments to Clarify Code", + "dashedName": "waypoint-use-comments-to-clarify-code", + "difficulty": 28, + "description": [ + "add " + ], + "tests": [ + + ], + "challengeSeed": [ + "

jQuery Playground

", + "
", + "
", + "

#left-well

", + "
", + " ", + " ", + " ", + "
", + "
", + "
", + "

#right-well

", + "
", + " ", + " ", + " ", + "
", + "
", + "
" + ], + "challengeType": 0, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "", + "descriptionEs": [], + "namePt": "", + "descriptionPt": [] } ] } diff --git a/challenges/computer-science.json b/challenges/computer-science.json deleted file mode 100644 index 7f2a11b91d..0000000000 --- a/challenges/computer-science.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "name": "Computer Science", - "order": 0.005, - "challenges": [ - { - "id": "bd7123d8c441eddfaeb5bdef", - "name": "Waypoint: Learn Basic Computer Science", - "dashedName": "waypoint-learn-basic-computer-science", - "difficulty": 0.90, - "challengeSeed": ["114628241"], - "description": [ - "Stanford has an excellent free online Computer Science curriculum. This interactive course uses a modified version of JavaScript. It will cover a lot of concepts quickly.", - "Note that Harvard also has an excellent introduction to computer science course called CS50, but it takes more than 100 hours to complete, and doesn't use JavaScript.", - "Despite being completely self-paced, Stanford's CS101 course is broken up into weeks. Each of the following challenges will address one of those weeks.", - "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z54/z1/ and complete the first week's course work." - ], - "challengeType": 2, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "Waypoint: Aprende Informática Básica", - "descriptionEs": [ - "Stanford tiene en internet un excelente currículo gratuito sobre Informática. Este curso interactivo utiliza una versión modificada de JavaScript. En él se cubrirán varios conceptos rápidamente.", - "Vale recalcar que Harvard también tiene un excelente curso de introducción a la informática llamado CS50, pero éste toma más de 100 horas para completar y no utiliza JavaScript.", - "A pesar de que puedes llevarlo a tu propio ritmo, el curso de Stanford CS101 está separado en semanas. Cada uno de los desafíos apuntará a cada una de esas semanas.", - "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z54/z1/ y completa la primera semana del curso." - ], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd8124d8c441eddfaeb5bdef", - "name": "Waypoint: Learn Loops", - "dashedName": "waypoint-learn-loops", - "difficulty": 0.19, - "challengeSeed": ["114597348"], - "description": [ - "Now let's tackle week 2 of Stanford's Intro to Computer Science course.", - "This will introduce us to loops, a fundamental feature of every programming language.", - "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/ and complete Week 2." - ], - "challengeType": 2, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "Waypoint: Aprende Loops", - "descriptionEs": [ - "Ahora apuntaremos a completar la semana 2 del curso de Introducción a Informática de Stanford.", - "Esto nos introducirá a los loops (bucles), una característica fundamental de todos los lenguajes de programación", - "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/ y completa la segunda semana del curso." - ], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd8125d8c441eddfaeb5bdef", - "name": "Waypoint: Learn Computer Hardware", - "dashedName": "waypoint-learn-computer-hardware", - "difficulty": 0.20, - "challengeSeed": ["114597347"], - "description": [ - "Week 3 of Stanford's Intro to Computer Science covers computer hardware and explains Moore's law of exponential growth in the price-performance of processors.", - "This challenge will also give you an understanding of how bits and bytes work.", - "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/ and complete Week 3." - ], - "challengeType": 2, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "Waypoint: Aprende sobre el Hardware de las Computadoras", - "descriptionEs": [ - "La semana 3 del curso de Introducción a Informática de Stanford cubrirá el hardware de las computadoras y explicará la ley de Moore sobre el crecimiento exponencial del precio-desempeño de los procesadores.", - "Este desafío también te dará un entendimiento más amplio sobre como funcionan los bits y bytes.", - "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/ y completa la tercera semana del curso." - ], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd8126d8c441eddfaeb5bdef", - "name": "Waypoint: Learn Computer Networking", - "dashedName": "waypoint-learn-computer-networking", - "difficulty": 0.21, - "challengeSeed": ["114604811"], - "description": [ - "Now that you've learned about computer hardware, it's time to learn about the software that runs on top of it.", - "Particularly important, you will learn about networks and TCP/IP - the protocol that powers the internet.", - "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/ and complete Week 4." - ], - "challengeType": 2, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "Waypoint: Aprende sobre Redes de Computadoras", - "descriptionEs": [ - "Ahora que ya hemos aprendido sobre hardware, es hora de aprender sobre el software que corre encima de él.", - "Es importante recalcar que aprenderás sobre como funcionan las redes y TCP/IP - el protocolo que potencia el internet.", - "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/ y completa la cuarta semana del curso." - ], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd8127d8c441eddfaeb5bdef", - "name": "Waypoint: Learn Boolean Logic", - "dashedName": "waypoint-learn-boolean-logic", - "difficulty": 0.22, - "challengeSeed": ["114604812"], - "description": [ - "Now we'll do some more table exercises and learn boolean logic.", - "We'll also learn the difference between digital data and analog data.", - "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/ and complete Week 5." - ], - "challengeType": 2, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "Waypoint: Aprende Lógica Booleana", - "descriptionEs": [ - "Ahora trabajaremos más ejercicios de tablas y aprenderemos lógica booleana.", - "También aprenderemos la diferencia entre datos digitales y datos análogos.", - "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/ y completa la quinta semana del curso." - ], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "bd8128d8c441eddfaeb5bdef", - "name": "Waypoint: Learn Computer Security", - "dashedName": "waypoint-learn-computer-security", - "difficulty": 0.23, - "challengeSeed": ["114604813"], - "description": [ - "We're almost done with Stanford's Introduction to Computer Science course!", - "We'll learn about one of the most important inventions of the 20th century - spreadsheets.", - "We'll also learn about Computer Security and some of the more common vulnerabilities software systems have.", - "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/ and complete Week 6, the final week of the course." - ], - "challengeType": 2, - "tests": [], - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "Waypoint: Aprende sobre Seguridad Informática", - "descriptionEs": [ - "¡Ya casi completamos el curso de Introducción a la Informática!", - "Aprenderemos sobre una de la más importante invención del siglo 20 - la hoja de cálculo.", - "También aprenderemos sobre la Seguridad Informática y sobre algunas de las vulnerabilidades más comúnes en los sistemas de software.", - "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/ y completa la sexta y última semana del curso." - ], - "namePt": "", - "descriptionPt": [] - } - ] -} diff --git a/challenges/functional-programming.json b/challenges/functional-programming.json index a7a60efdf9..467be534e9 100644 --- a/challenges/functional-programming.json +++ b/challenges/functional-programming.json @@ -10,9 +10,10 @@ "challengeSeed": ["129169463"], "description": [ "Functional programming holds the key to unlocking JavaScript's powerful asynchronous features.", - "Jafar Husain's 42-step interactive Functional Programming course will familiarize you with the various ways you can recombine these functions.", + "Jafar Husain's interactive Functional Programming course will familiarize you with the various ways you can recombine these functions.", "Functional programming in JavaScript involves using five key functions: \"map\", \"reduce\", \"filter\", \"concatAll\", and \"zip\".", "Click here to go to the challenge: http://jhusain.github.io/learnrx/.", + "You only need to complete the first 27 steps of this tutorial.", "This challenge will take several hours, but don't worry. Jafar's website will save your progress (using your browser's local storage) so you don't need to finish it in one sitting.", "If you've spent several minutes on one of these challenges, and still can't figure out its correct answer, you can click \"show answer\", then click \"run\" to advance to the next challenge. Be sure to read the correct answer and make sure you understand it before moving on." ], diff --git a/challenges/future-jquery-ajax-json.json b/challenges/future-jquery-ajax-json.json deleted file mode 100644 index 435381f0b8..0000000000 --- a/challenges/future-jquery-ajax-json.json +++ /dev/null @@ -1,598 +0,0 @@ -{ - "name": "jQuery, Ajax and JSON", - "dashedName": "jQuery, Ajax and JSON", - "order": 0.004, - "challenges": [{ - "id": "bad87fee1348bd9acdd08826", - "name": "Waypoint: Learn how Script Tags and Document Ready Work", - "dashedName": "Waypoint: Learn how Script Tags and Document Ready Work", - "difficulty": 0.072, - "description": [ - "We've simplified our Cat Photo App and removed our style element. Add a script element to your page and create a $(document).ready function within it.", - "Add $(document).ready(function() { to your script element, and then close it on the following line with });." - ], - "tests": [ - "assert(editor.match(/", + "
", + "
", + "

Coming from _______, and making $_______, your true costs will be:

", + "
", + "
", + "

Where do you live?

", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + "
", + "
", + "
", + "

How much money did you make last year (in USD)?

", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + " ", + "
", + "
", + "
", + "
", + "
", + " ", + "
", + "
", + "
", + "
", + "
", + " ", + "
View Data Source JSON  •  Recalculate", + "
", + "

Notes:

", + "
    ", + "
  1. For cash-up-front bootcamps, we assumed an APR of 6% and a term of 3 years.
  2. ", + "
  3. For wage-garnishing bootcamps, we assume 18% of first year wages at their advertised starting annual salary of around $100,000.
  4. ", + "
  5. We assume a cost of living of $500 for cities like San Francisco and New York City, and $400 per week for everywhere else.
  6. ", + "
  7. 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 here.
  8. ", + "
  9. 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.
  10. ", + "
", + "
", + "
", + "
", + "
", + "

Built by Suzanne Atkinson

", + "

Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should  follow her on Twitter.

", + "
", + "
", + "
", + "
", + "
", + "
", + "
" + ] + }, + { + "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": [ + "
", + "

These Global Control Shortcuts for Mac will save you hours by speeding up your typing.


", + "
", + "

These global shortcuts work everywhere on a Mac:

", + "

", + "

    ", + "
  • Control + F = Forward
  • ", + "
  • Control + B = Backward
  • ", + "
  • Control + N = Next Line
  • ", + "
  • Control + P = Previous Line
  • ", + "
  • Control + H = Backspace
  • ", + "
  • Control + D = Delete
  • ", + "
  • Control + A = Beginning of Line
  • ", + "
  • Control + E = End of Line
  • ", + "
  • Control + K = Kill line
  • ", + "
", + "

", + "
" + ] + }, + { + "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": [ + "
", + "

These Gmail Shortcuts will save you hours and help you get to Inbox Zero.


", + "
", + " ", + "
", + "

The shortcuts:

", + "

", + "

    ", + "
  • j - move down
  • ", + "
  • k - move up
  • ", + "
  • o - open
  • ", + "
  • r - reply
  • ", + "
  • a - reply all
  • ", + "
  • f - forward
  • ", + "
  • c - compose
  • ", + "
  • x - select
  • ", + "
  • e - archive
  • ", + "
  • ! - mark spam
  • ", + "
  • z - undo
  • ", + "
", + "

", + "
" + ] + }, + { + "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": [ + "
", + "

It's possible to build dynamic, mobile-responsive websites without writing any code at all, in just a few minutes.


", + "
", + " ", + "
", + "

Here are the technologies we used here:

", + "

", + "

    ", + "
  • atom.io - a free code editor
  • ", + "
  • startbootstrap.com - a collection of free responsive (Bootstrap) templates
  • ", + "
  • powr.io - a collection of free JavaScript plugins
  • ", + "
  • bitballoon.com - a tool for drag and drop website deployment
  • ", + "
", + "

", + "

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.

", + "
" + ] + }, + { + "id": "bd7158d9c447eddfaeb5bdef", + "name": "How do I install Screenhero?", + "dashedName": "how-do-i-install-screenhero", + "category": "FYI", + "description": [ + "
", + "

Download for Mac

", + "

Download for Windows

", + "

You'll use Screenhero to pair program starting with http://freecodecamp.com/challenges/pair-program-on-bonfires

", + "
" + ] + }, + { + "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": [ + "
", + "

Here are some excellent resources for nonprofits.

", + "

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.

", + "

Skills-based Volunteer Organizations:

", + "

http://www.volunteermatch.com

", + "

http://www.catchafire.org

", + "

Building a website:

", + "

http://www.wix.com/

", + "

https://wordpress.com/

", + "

Build it yourself for free with no code

", + "

Donor and Volunteer Management Systems

", + "

https://www.thedatabank.com/

", + "

http://www.donorsnap.com/

", + "

http://www.donorperfect.com/

", + "

https://www.blackbaud.com/fundraising-crm/etapestry-donor-management

", + "

http://www.z2systems.com

", + "

http://www.regpacks.com/volunteer-management

", + "

http://sumac.com

", + "

http://www.volgistics.com

", + "

Inventory Management Systems

", + "

https://www.ezofficeinventory.com/industries/non-profits

", + "

https://www.ordoro.com

", + "

http://www.unleashedsoftware.com

", + "

E-Learning platforms

", + "

http://www.dokeos.com

", + "

http://www.efrontlearning.net/

", + "

https://moodle.org/

", + "

https://sakaiproject.org/

", + "

Community Management

", + "

https://civicrm.org/

", + "

http://tcmgr.com/

", + "

Electronic Forms

", + "

http://www.google.com/forms

", + "

http://www.typeform.com

", + "
" + ] + } +] diff --git a/field-guides/contact.json b/field-guides/contact.json new file mode 100644 index 0000000000..16bbd732c6 --- /dev/null +++ b/field-guides/contact.json @@ -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": [ + "
", + "

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:

", + "

", + "

    ", + "
  1. Want to talk to about Free Code Camp's curriculum or long-term vision? Reach out to Quincy Larson. He's @ossia on Twitter and @quincylarson on Gitter.
  2. ", + "
  3. Want to talk about Free Code Camp's open source codebase, infrastructure, or JavaScript in general? Talk to Nathan Leniz. He's @terakilobyte on Twitter and @terakilobyte on Gitter.
  4. ", + "
  5. Want to explore our efforts to empower nonprofits with code? Michael D. Johnson eats, sleeps and breathes that. He's @figitalboy on Twitter and @codenonprofit on Gitter.
  6. ", + "
  7. Want to get a camper's perspective on our community? Talk with Bianca Mihai (@biancamihai on Gitter and @bubuslubu on Twitter) or Suzanne Atkinson (@adventurebear on Gitter and @steelcitycoach on Twitter).", + "
", + "

", + "

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.

", + "
" + ] + } +] diff --git a/field-guides.json b/field-guides/orientation.json similarity index 72% rename from field-guides.json rename to field-guides/orientation.json index 17d3748856..29f6fadfe1 100644 --- a/field-guides.json +++ b/field-guides/orientation.json @@ -3,6 +3,7 @@ "id": "bd7158d9c441eddfaeb5bdef", "name": "How do I use this guide?", "dashedName": "how-do-i-use-this-guide", + "category": "orientation", "description": [ "
", "

This guide strives to provide clear answers to common questions about Free Code Camp, learning to code, and getting a coding job.

", @@ -15,6 +16,7 @@ "id": "bd7158d9c441eddfaeb5bdff", "name": "What exactly is Free Code Camp?", "dashedName": "what-exactly-is-free-code-camp", + "category": "orientation", "description": [ "
", "

We're a community of busy people who learn to code by building projects for nonprofits.

", @@ -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": [ "
", "

Learning to code is hard.

", @@ -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": [ "
", "

Our main advantage is that we're accessible to busy adults who want to change careers. Specifically, we're:

", @@ -68,6 +72,7 @@ "id": "bd7158d9c441eddfaeb5bd3f", "name": "How does Free Code Camp work?", "dashedName": "how-does-free-code-camp-work", + "category": "orientation", "description": [ "
", "

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": [ "
", "

If you complete this program, you will be able to get a coding job. Many of our campers have already gotten coding jobs.

", @@ -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": [ "
", "

First, you'll learn basic web design tools like:

", @@ -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": [ "
", "

It takes about 1,600 hours of coding to develop the skills you'll need to get an entry level software engineering job.

", @@ -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": [ "
", "

Like JavaScript, Ruby and Python are high-level scripting languages that can be used for full stack web development.

", @@ -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": [ "
", "

Pair programming is where two people code together on one computer.

", @@ -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": [ "
", "

When you get stuck, remember: RSAP.

", @@ -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": [ "
", "

We have 4 official chat rooms:

", @@ -260,22 +272,11 @@ "
" ] }, - { - "id": "bd7158d9c436eddfaeb5bd3f", - "name": "Can I jump around in this guide?", - "dashedName": "can-i-jump-around-in-this-guide", - "description": [ - "
", - "

This guide was designed as a reference for you. You shouldn't try to read it all today.

", - "

Feel free to come back any time and jump around, reading any articles that seem interesting to you at the time.

", - "

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.

", - "
" - ] - }, { "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": [ "
", "

We are completely free for both students and for nonprofits.

", @@ -285,168 +286,11 @@ "
" ] }, - { - "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", - "description": [ - "", - "
", - "
", - "

Coding Bootcamp Cost Calculator

", - "

Coming from _______, and making $_______, your true costs will be:

", - "
", - "
", - "

Where do you live?

", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - "
", - "
", - "
", - "

How much money did you make last year (in USD)?

", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - " ", - "
", - "
", - "
", - "
", - "
", - " ", - "
", - "
", - "
", - "
", - "
", - " ", - "
View Data Source JSON  •  Recalculate", - "
", - "

Notes:

", - "
    ", - "
  1. For cash-up-front bootcamps, we assumed an APR of 6% and a term of 3 years.
  2. ", - "
  3. For wage-garnishing bootcamps, we assume 18% of first year wages at their advertised starting annual salary of around $100,000.
  4. ", - "
  5. We assume a cost of living of $500 for cities like San Francisco and New York City, and $400 per week for everywhere else.
  6. ", - "
  7. 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 here.
  8. ", - "
  9. 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.
  10. ", - "
", - "
", - "
", - "
", - "
", - "

Built by Suzanne Atkinson

", - "

Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should  follow her on Twitter.

", - "
", - "
", - "
", - "
", - "
", - "
", - "
" - ] - }, { "id": "bd7158d9c435eddfaeb5bdef", "name": "Does Free Code Camp have an application process?", "dashedName": "does-free-code-camp-have-an-application-process", + "category": "orientation", "description": [ "
", "

Unlike coding bootcamps, anyone can study at Free Code Camp.

", @@ -455,31 +299,11 @@ "
" ] }, - { - "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": [ - "
", - "

If you're interested in coding JavaScript live in front of dozens of people on our popular twitch.tv channel, we'd love to have you.

", - "

Please follow these steps to get started:

", - "

", - "

    ", - "
  1. Follow this tutorial to set up your computer for streaming.
  2. ", - "
  3. 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.
  4. ", - "
  5. Jason will pair with you using Screenhero to verify your computer is configured properly to stream.
  6. ", - "
", - "

", - "

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).

", - "

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.

", - "

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!

", - "
" - ] - }, { "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": [ "
", "

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.

", @@ -742,174 +566,11 @@ "
" ] }, - { - "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": [ - "
", - "

These Global Control Shortcuts for Mac will save you hours by speeding up your typing.


", - "
", - "

These global shortcuts work everywhere on a Mac:

", - "

", - "

    ", - "
  • Control + F = Forward
  • ", - "
  • Control + B = Backward
  • ", - "
  • Control + N = Next Line
  • ", - "
  • Control + P = Previous Line
  • ", - "
  • Control + H = Backspace
  • ", - "
  • Control + D = Delete
  • ", - "
  • Control + A = Beginning of Line
  • ", - "
  • Control + E = End of Line
  • ", - "
  • Control + K = Kill line
  • ", - "
", - "

", - "
" - ] - }, - { - "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": [ - "
", - "

These Gmail Shortcuts will save you hours and help you get to Inbox Zero.


", - "
", - " ", - "
", - "

The shortcuts:

", - "

", - "

    ", - "
  • j - move down
  • ", - "
  • k - move up
  • ", - "
  • o - open
  • ", - "
  • r - reply
  • ", - "
  • a - reply all
  • ", - "
  • f - forward
  • ", - "
  • c - compose
  • ", - "
  • x - select
  • ", - "
  • e - archive
  • ", - "
  • ! - mark spam
  • ", - "
  • z - undo
  • ", - "
", - "

", - "
" - ] - }, - { - "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": [ - "
", - "

It's possible to build dynamic, mobile-responsive websites without writing any code at all, in just a few minutes.


", - "
", - " ", - "
", - "

Here are the technologies we used here:

", - "

", - "

    ", - "
  • atom.io - a free code editor
  • ", - "
  • startbootstrap.com - a collection of free responsive (Bootstrap) templates
  • ", - "
  • powr.io - a collection of free JavaScript plugins
  • ", - "
  • bitballoon.com - a tool for drag and drop website deployment
  • ", - "
", - "

", - "

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.

", - "
" - ] - }, - { - "id": "bd7158d9c446eddfaeb5bdef", - "name": "How do Free Code Camp's Nonprofit Projects work?", - "dashedName": "how-do-free-code-camps-nonprofit-projects-work", - "description": [ - "
", - "

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.

", - "

Starting with the end in mind

", - "

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).

", - "

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.

", - "

Choosing your first Nonprofit Project

", - "

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.

", - "

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.

", - "

Our Nonprofit Project team will match you and your pair based on:

", - "

", - "

    ", - "
  1. Your estimated time commitment (10, 20 or 40 hours per week)
  2. ", - "
  3. Your time zone
  4. ", - "
  5. The nonprofit projects you've chosen
  6. ", - "
  7. Prior coding experience (we'd like both campers to be able to contribute equally)
  8. ", - "
", - "

", - "

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.

", - "

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.

", - "

Finalizing the Project

", - "

Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:

", - "

", - "

    ", - "
  1. 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.
  2. ", - "
  3. We'll call the stakeholder to confirm once again that he or she agrees with our  terms  and has signed our  Nonprofit Project Stakeholder Pledge.
  4. ", - "
  5. We'll set an initial meeting with representatives from Free Code Camp, the two campers, and the stakeholder.
  6. ", - "
  7. If the stakeholder and both campers shows up promptly, and seem enthusiastic and professional, we'll start the project.
  8. ", - "
", - "

", - "

This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.

", - "

Nonprofit Stakeholders

", - "

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.

", - "

Stakeholders have a deep understanding of their organizations' needs. Campers will work with them to figure out the best solutions to these needs.

", - "

When you and your pair first speak with your nonprofit stakeholder, you'll:

", - "

", - "

    ", - "
  • talk at length to better understand their needs.
  • ", - "
  • create a new Trello board and use it to prioritize what needs to be built.
  • ", - "
  • and establish deadlines based on your weekly time commitment, and how long you think each task will take.
  • ", - "
", - "

", - "

It's notoriously difficult to estimate how long building software projects will take, so feel free to ask our volunteer team for help.

", - "

You'll continue to meet with your stakeholder at least twice a month in your project's Gitter or Slack channel.

", - "

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.

", - "

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.

", - "

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!

", - "

Working with your Pair

", - "

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.

", - "

Here are our recommended ways of collaborating:

", - "

", - "

    ", - "
  • • Gitter has robust private messaging functionality. It's the main way our team communicates, and we recommend it over email.
  • ", - "
  • • 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.
  • ", - "
  • • 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.
  • ", - "
  • • Write clear and readable code, commit messages, branch names, and pull request messages.
  • ", - "
", - "

", - "

Hosting Apps

", - "

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.

", - "

If you need help convincing your stakeholder that Heroku is the ideal platform, we'll be happy to talk with them.

", - "

Maintaining Apps

", - "

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\").

", - "

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.

", - "

Pledging to finish the project

", - "

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.

", - "

To confirm that you understand the seriousness of this commitment, we require that all campers  sign this pledge  before starting on their nonprofit projects.

", - "

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.

", - "
" - ] - }, - { - "id": "bd7158d9c447eddfaeb5bdef", - "name": "How do I install Screenhero?", - "dashedName": "how-do-i-install-screenhero", - "description": [ - "
", - "

Download for Mac

", - "

Download for Windows

", - "

You'll use Screenhero to pair program starting with http://freecodecamp.com/challenges/pair-program-on-bonfires

", - "
" - ] - }, { "id": "bd7158d9c451eddfaeb5bded", "name": "What is the style guide for Bonfires?", "dashedName": "what-is-the-style-guide-for-bonfires", + "category": "orientation", "description": [ "
", "

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.

", @@ -946,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": [ "
", "

Free Code Camp is friendly place to learn to code. We're committed to keeping it that way.

", @@ -971,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": [ "
", "

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.

", @@ -1009,111 +672,11 @@ "
" ] }, - { - "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": [ - "
", - "

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:

", - "

", - "

    ", - "
  1. Want to talk to about Free Code Camp's curriculum or long-term vision? Reach out to Quincy Larson. He's @ossia on Twitter and @quincylarson on Gitter.
  2. ", - "
  3. Want to talk about Free Code Camp's open source codebase, infrastructure, or JavaScript in general? Talk to Nathan Leniz. He's @terakilobyte on Twitter and @terakilobyte on Gitter.
  4. ", - "
  5. Want to explore our efforts to empower nonprofits with code? Michael D. Johnson eats, sleeps and breathes that. He's @figitalboy on Twitter and @codenonprofit on Gitter.
  6. ", - "
  7. Want to get a camper's perspective on our community? Talk with Bianca Mihai (@biancamihai on Gitter and @bubuslubu on Twitter) or Suzanne Atkinson (@adventurebear on Gitter and @steelcitycoach on Twitter).", - "
", - "

", - "

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.

", - "
" - ] - }, - { - "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": [ - "
", - "

Here are some excellent resources for nonprofits.

", - "

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.

", - "

Skills-based Volunteer Organizations:

", - "

http://www.volunteermatch.com

", - "

http://www.catchafire.org

", - "

Building a website:

", - "

http://www.wix.com/

", - "

https://wordpress.com/

", - "

Build it yourself for free with no code

", - "

Donor and Volunteer Management Systems

", - "

https://www.thedatabank.com/

", - "

http://www.donorsnap.com/

", - "

http://www.donorperfect.com/

", - "

https://www.blackbaud.com/fundraising-crm/etapestry-donor-management

", - "

http://www.z2systems.com

", - "

http://www.regpacks.com/volunteer-management

", - "

http://sumac.com

", - "

http://www.volgistics.com

", - "

Inventory Management Systems

", - "

https://www.ezofficeinventory.com/industries/non-profits

", - "

https://www.ordoro.com

", - "

http://www.unleashedsoftware.com

", - "

E-Learning platforms

", - "

http://www.dokeos.com

", - "

http://www.efrontlearning.net/

", - "

https://moodle.org/

", - "

https://sakaiproject.org/

", - "

Community Management

", - "

https://civicrm.org/

", - "

http://tcmgr.com/

", - "

Electronic Forms

", - "

http://www.google.com/forms

", - "

http://www.typeform.com

", - "
" - ] - }, - { - "id": "bd7158d9c436eddfadb5bd3e", - "name": "How can I contribute to this guide?", - "dashedName": "how-can-i-contribute-to-this-guide", - "description": [ - "
", - "

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:

", - "

", - "

    ", - "
  1. You can message @danraley on Gitter with your question.
  2. ", - "
  3. You can also contribute to this field guide directly via GitHub pull request, by cloning Free Code Camp's main repository and modifying field-guides.json.
  4. ", - "
", - "

", - "
" - ] - }, - { - "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": [ - "
", - "

Our translation effort is driven by bilingual campers like you.

", - "

If you're able to help us, you can join our Trello board by sending @quincylarson your email address on Gitter.

", - "
" - ] - }, - { - "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": [ - "
", - "

Translation is an all-or-nothing proposal.

", - "

We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that language.

", - "

In addition to translating these initially, we'll also need to maintain the translation as the challenges are gradually updated.

", - "

If you're able to help us, you can join our Trello board by sending @quincylarson your email address on Gitter.

", - "" - ] - }, { "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": [ "
", "

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.

", @@ -1127,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": [ "
", "

We're building an on-the-go version of Free Code Camp.

", @@ -1144,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": [ "
", "

We're creating a free Front End Development Certificate.

", @@ -1162,5 +727,88 @@ "

All campers who have already completed these challenges are retroactively eligible for the certificate!

", "
" ] + }, + { + "id": "bd7156d9c436eddfadb5bd3b", + "name": "How can I watch Live Coding on the Free Code Camp Twitch.tv Channel?", + "dashedName": "how-can-i-watch-live-coding-on-the-free-code-camp-twitch-tv-channel", + "description": [ + "
", + "
", + "

Watch the live stream below or on our  Twitch.tv channel.

", + "
", + "
", + "
", + "
", + " ", + "
", + "
", + "
", + "
", + "
", + " ", + "
", + "
", + "
", + "
", + " ", + "
", + "
", + "
", + "
", + "
", + "
", + "

Check out our scheduled shows. You can add them to your calendar.

", + "
", + " ", + "
", + "
", + "

", + "
", + "
", + "

Here are some of our previous shows (you can full-screen them):

", + "
", + "
", + "
", + " ", + "
", + "

link:  http://www.youtube.com/watch/Z_43xApGB9Y

", + "
", + "
", + "
", + " ", + "
", + "

link:  http://www.youtube.com/watch/PvWHzcebjjQ

", + "
", + "
", + "
", + " ", + "
", + "

link:  http://www.youtube.com/watch/yHL6mEr-LGY

", + "
", + "
", + "
", + " ", + "
", + "

link:  http://www.youtube.com/watch/dolG-yRMcPs

", + "
", + "
", + "
", + " ", + "
", + "

link:  http://www.youtube.com/watch/YMz_vrK_KlQ

", + "
", + "
", + "
", + " ", + "
", + "

link:  http://www.youtube.com/watch/bbFVxaza8Ik

", + "
", + "
", + "
", + "
", + "
", + "
" + ] } ] diff --git a/field-guides/outreach.json b/field-guides/outreach.json new file mode 100644 index 0000000000..154c93d44c --- /dev/null +++ b/field-guides/outreach.json @@ -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": [ + "
", + "

If you're interested in coding JavaScript live in front of dozens of people on our popular twitch.tv channel, we'd love to have you.

", + "

Please follow these steps to get started:

", + "

", + "

    ", + "
  1. Follow this tutorial to set up your computer for streaming.
  2. ", + "
  3. 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.
  4. ", + "
  5. Jason will pair with you using Screenhero to verify your computer is configured properly to stream.
  6. ", + "
", + "

", + "

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).

", + "

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.

", + "

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!

", + "
" + ] + }, + { + "id": "bd7158d9c446eddfaeb5bdef", + "name": "How do Free Code Camp's Nonprofit Projects work?", + "dashedName": "how-do-free-code-camps-nonprofit-projects-work", + "category": "outreach", + "description": [ + "
", + "

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.

", + "

Starting with the end in mind

", + "

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).

", + "

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.

", + "

Choosing your first Nonprofit Project

", + "

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.

", + "

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.

", + "

Our Nonprofit Project team will match you and your pair based on:

", + "

", + "

    ", + "
  1. Your estimated time commitment (10, 20 or 40 hours per week)
  2. ", + "
  3. Your time zone
  4. ", + "
  5. The nonprofit projects you've chosen
  6. ", + "
  7. Prior coding experience (we'd like both campers to be able to contribute equally)
  8. ", + "
", + "

", + "

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.

", + "

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.

", + "

Finalizing the Project

", + "

Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:

", + "

", + "

    ", + "
  1. 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.
  2. ", + "
  3. We'll call the stakeholder to confirm once again that he or she agrees with our  terms  and has signed our  Nonprofit Project Stakeholder Pledge.
  4. ", + "
  5. We'll set an initial meeting with representatives from Free Code Camp, the two campers, and the stakeholder.
  6. ", + "
  7. If the stakeholder and both campers shows up promptly, and seem enthusiastic and professional, we'll start the project.
  8. ", + "
", + "

", + "

This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.

", + "

Nonprofit Stakeholders

", + "

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.

", + "

Stakeholders have a deep understanding of their organizations' needs. Campers will work with them to figure out the best solutions to these needs.

", + "

When you and your pair first speak with your nonprofit stakeholder, you'll:

", + "

", + "

    ", + "
  • talk at length to better understand their needs.
  • ", + "
  • create a new Trello board and use it to prioritize what needs to be built.
  • ", + "
  • and establish deadlines based on your weekly time commitment, and how long you think each task will take.
  • ", + "
", + "

", + "

It's notoriously difficult to estimate how long building software projects will take, so feel free to ask our volunteer team for help.

", + "

You'll continue to meet with your stakeholder at least twice a month in your project's Gitter or Slack channel.

", + "

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.

", + "

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.

", + "

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!

", + "

Working with your Pair

", + "

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.

", + "

Here are our recommended ways of collaborating:

", + "

", + "

    ", + "
  • • Gitter has robust private messaging functionality. It's the main way our team communicates, and we recommend it over email.
  • ", + "
  • • 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.
  • ", + "
  • • 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.
  • ", + "
  • • Write clear and readable code, commit messages, branch names, and pull request messages.
  • ", + "
", + "

", + "

Hosting Apps

", + "

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.

", + "

If you need help convincing your stakeholder that Heroku is the ideal platform, we'll be happy to talk with them.

", + "

Maintaining Apps

", + "

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\").

", + "

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.

", + "

Pledging to finish the project

", + "

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.

", + "

To confirm that you understand the seriousness of this commitment, we require that all campers  sign this pledge  before starting on their nonprofit projects.

", + "

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.

", + "
" + ] + }, + { + "id": "bd7158d9c436eddfadb5bd3e", + "name": "How can I contribute to this guide?", + "dashedName": "how-can-i-contribute-to-this-guide", + "category": "outreach", + "description": [ + "
", + "

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:

", + "

", + "

    ", + "
  1. You can message @danraley on Gitter with your question.
  2. ", + "
  3. You can also contribute to this field guide directly via GitHub pull request, by cloning Free Code Camp's main repository and modifying field-guides.json.
  4. ", + "
", + "

", + "
" + ] + }, + { + "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": [ + "
", + "

Our translation effort is driven by bilingual campers like you.", + "

If you're able to help us, you can join our Trello board by sending @quincylarson your email address on Gitter.

", + "
" + ] + }, + { + "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": [ + "
", + "

Translation is an all-or-nothing proposal.", + "

We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that language.

", + "

In addition to translating these initially, we'll also need to maintain the translation as the challenges are gradually updated.

", + "

If you're able to help us, you can join our Trello board by sending @quincylarson your email address on Gitter.

", + "
" + ] + } +] diff --git a/index.js b/index.js index 7eff9f3f2e..84c47644ea 100644 --- a/index.js +++ b/index.js @@ -1,18 +1,25 @@ /* eslint-disable no-process-exit */ +require('babel/register'); 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'); +var challangesRegex = /^(bonfire:|waypoint:|zipline:|basejump:|hike:)/i; + +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() { @@ -32,10 +39,17 @@ Challenge.destroyAll(function(err, info) { } else { console.log('Deleted ', info); } - challenges.forEach(function (file) { + challenges.forEach(function(file) { + var challenges = require('./challenges/' + file).challenges + .map(function(challenge) { + // NOTE(berks): add title for displaying in views + challenge.title = challenge.name.replace(challangesRegex, '').trim(); + return challenge; + }); + Challenge.create( - require('./challenges/' + file).challenges, - function (err) { + challenges, + function(err) { if (err) { console.log(err); } else { @@ -53,14 +67,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'); + }); }); });