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.
element has a closing tag.')",
+ "assert($('h3').hasClass('text-primary'), 'Your
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
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(/
div class=\"col-xs-6\"
elements within your div class=\"row\"
element.')",
+ "assert(editor.match(/<\\/div>/g) && editor.match(/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(/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(/",
+ "Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should follow her on Twitter.
", + "These global shortcuts work everywhere on a Mac:
", + "", + "
The shortcuts:
", + "", + "
Here are the technologies we used here:
", + "", + "
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.
", + "You'll use Screenhero to pair program starting with http://freecodecamp.com/challenges/pair-program-on-bonfires
", + "Build it yourself for free with no code
", + "https://www.blackbaud.com/fundraising-crm/etapestry-donor-management
", + " ", + "http://www.regpacks.com/volunteer-management
", + " ", + " ", + "https://www.ezofficeinventory.com/industries/non-profits
", + " ", + "http://www.unleashedsoftware.com
", + "http://www.efrontlearning.net/
", + " ", + " ", + "", + "
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.
", + "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": [ "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.
", - "Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should follow her on Twitter.
", - "Please follow these steps to get started:
", - "", - "
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!
", - "These global shortcuts work everywhere on a Mac:
", - "", - "
The shortcuts:
", - "", - "
Here are the technologies we used here:
", - "", - "
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.
", - "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.
", - "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.
", - "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:
", - "", - "
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.
", - "Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:
", - "", - "
This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.
", - "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:
", - "", - "
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!
", - "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:
", - "", - "
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.
", - "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.
", - "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.
", - "You'll use Screenhero to pair program starting with http://freecodecamp.com/challenges/pair-program-on-bonfires
", - "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 @@ "", - "
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.
", - "Build it yourself for free with no code
", - "https://www.blackbaud.com/fundraising-crm/etapestry-donor-management
", - " ", - "http://www.regpacks.com/volunteer-management
", - " ", - " ", - "https://www.ezofficeinventory.com/industries/non-profits
", - " ", - "http://www.unleashedsoftware.com
", - "http://www.efrontlearning.net/
", - " ", - " ", - "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:
", - "", - "
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.
", - "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.
", - "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": [ "All campers who have already completed these challenges are retroactively eligible for the certificate!
", "Please follow these steps to get started:
", + "", + "
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!
", + "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.
", + "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.
", + "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:
", + "", + "
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.
", + "Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:
", + "", + "
This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.
", + "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:
", + "", + "
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!
", + "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:
", + "", + "
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.
", + "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.
", + "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.
", + "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:
", + "", + "
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.
", + "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.
", + "