Merge remote-tracking branch 'upstream/master'
This commit is contained in:
17
README.md
17
README.md
@ -69,6 +69,15 @@ gulp
|
||||
|
||||
```
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
We welcome pull requests from Free Code Camp "campers" (our students) and seasoned JavaScript developers alike! Follow these steps to contribute:
|
||||
|
||||
1. Check our [public Waffle Board](https://waffle.io/freecodecamp/freecodecamp).
|
||||
2. Pick an issue that nobody has claimed and start working on it. If your issue isn't on the board, open an issue. If you think you can fix it yourself, start working on it. Feel free to ask for help in our [Slack](http://freecode.slack.com).
|
||||
3. Once your code is ready, submit a pull request. Please note that the code you submit should conform to [AirBnB's Style Guide](https://github.com/airbnb/javascript). We'll do a quick code review and give you feedback, and iterate from there.
|
||||
|
||||
Project Structure
|
||||
-----------------
|
||||
|
||||
@ -151,14 +160,6 @@ Changelog
|
||||
- Installed Helmet to maximize security of application
|
||||
- Added .env and removed all trace of API keys from git history
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
We welcome pull requests from Free Code Camp "campers" (our students) and seasoned JavaScript developers alike!
|
||||
1) Check our [public Waffle Board](https://waffle.io/freecodecamp/freecodecamp)
|
||||
2) If your issue or feature isn't on the board, open an issue and if you think you can fix it yourself, start working on it.
|
||||
3) Once your code is ready, submit the pull request. We'll do a quick code review and give you feedback, and iterate from there.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
|
@ -605,21 +605,6 @@
|
||||
"expect(pairwise([], 100)).to.equal(0);"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "a3f503de51cf954ede28891d",
|
||||
"name": "Symmetric Difference",
|
||||
"difficulty": "2.20",
|
||||
"description": [
|
||||
"Create a function that takes two or more arrays and returns an array of the symmetric difference of the provided arrays.",
|
||||
"The mathematical term symmetric difference refers to the elements in two sets that are in either the first or second set, but not in both."
|
||||
],
|
||||
"challengeSeed": "function sym(arr) {\n return arr;\r\n}\n\nsym([1, 2, 3], [5, 2, 1, 4]);",
|
||||
"tests": [
|
||||
"assert.deepEqual(sym([1, 2, 5], [2, 3, 5], [3, 4, 5]), [1, 4, 5], 'should return the symmetric difference of the given arrays');",
|
||||
"assert.deepEqual(sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]), [1, 4, 5], 'should return an array of unique values');",
|
||||
"assert.deepEqual(sym([1, 1]), [1], 'should return an array of unique values');"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "a10d2431ad0c6a099a4b8b52",
|
||||
"name": "Everything Be True",
|
||||
@ -735,10 +720,25 @@
|
||||
],
|
||||
"challengeSeed": "function telephoneCheck(str) {\n // Good luck!\n return true;\n}\n\n\n\ntelephoneCheck(\"555-555-5555\");"
|
||||
},
|
||||
{
|
||||
"_id": "a3f503de51cf954ede28891d",
|
||||
"name": "Symmetric Difference",
|
||||
"difficulty": "4.02",
|
||||
"description": [
|
||||
"Create a function that takes two or more arrays and returns an array of the symmetric difference of the provided arrays.",
|
||||
"The mathematical term symmetric difference refers to the elements in two sets that are in either the first or second set, but not in both."
|
||||
],
|
||||
"challengeSeed": "function sym(args) {\n return arr;\r\n}\n\nsym([1, 2, 3], [5, 2, 1, 4]);",
|
||||
"tests": [
|
||||
"assert.deepEqual(sym([1, 2, 5], [2, 3, 5], [3, 4, 5]), [1, 4, 5], 'should return the symmetric difference of the given arrays');",
|
||||
"assert.deepEqual(sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]), [1, 4, 5], 'should return an array of unique values');",
|
||||
"assert.deepEqual(sym([1, 1]), [1], 'should return an array of unique values');"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "aa2e6f85cab2ab736c9a9b24",
|
||||
"name": "Cash Register",
|
||||
"difficulty": "4.02",
|
||||
"difficulty": "4.03",
|
||||
"description": [
|
||||
"Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument.", "cid is a 2d array listing available currency.", "Return the string \"Insufficient Funds\" if cash-in-drawer is less than the change due. Return the string \"Closed\" if cash-in-drawer is equal to the change due.", "Otherwise, return change in coin and bills, sorted in highest to lowest order."
|
||||
],
|
||||
@ -756,7 +756,7 @@
|
||||
{
|
||||
"_id": "a56138aff60341a09ed6c480",
|
||||
"name": "Inventory Update",
|
||||
"difficulty": "4.03",
|
||||
"difficulty": "4.04",
|
||||
"description": [
|
||||
"Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order."
|
||||
],
|
||||
@ -773,7 +773,7 @@
|
||||
{
|
||||
"_id": "a7bf700cd123b9a54eef01d5",
|
||||
"name": "No repeats please",
|
||||
"difficulty": "4.04",
|
||||
"difficulty": "4.05",
|
||||
"description": [
|
||||
"Return the number of total permutations of the provided string that don't have repeated consecutive letters.",
|
||||
"For example, 'aab' should return 2 because it has 6 total permutations, but only 2 of them don't have the same letter (in this case 'a') repeating."
|
||||
@ -792,7 +792,7 @@
|
||||
{
|
||||
"_id": "a19f0fbe1872186acd434d5a",
|
||||
"name": "Friendly Date Ranges",
|
||||
"difficulty": "4.05",
|
||||
"difficulty": "4.06",
|
||||
"description": [
|
||||
"Implement a way of converting two dates into a more friendly date range that could be presented to a user.",
|
||||
"It must not show any redundant information in the date range.",
|
||||
|
@ -3,36 +3,16 @@
|
||||
"_id": "bd7124d8c441eddfaeb5bdef",
|
||||
"name": "Learn how Free Code Camp Works",
|
||||
"difficulty": 0.01,
|
||||
"challengeSeed": "114486344",
|
||||
"challengeSeed": "125407438",
|
||||
"description": [
|
||||
"Watch this 1-minute video, or simply read this summary:",
|
||||
"Welcome to Free Code Camp. We're a community of busy people learning to code.",
|
||||
"We built this community because learning to code is hard. But anyone who can stay motivated can learn to code. And the best way to stay motivated is to code with friends.",
|
||||
"To maximize accessibility, all our challenges are self-paced, browser-based, and free.",
|
||||
"All of us start with the same 100 hours of interactive coding challenges. These cover Computer Science and databases. They also cover in-demand JavaScript tools like jQuery, Node.js and MongoDB.",
|
||||
"Once we have a basic understanding of web development, we'll spend another 900 hours putting that theory into practice. We'll build full stack solutions for nonprofits.",
|
||||
"By the end of this process, we'll be good at coding. We'll have a portfolio of apps with happy users to prove it. We'll also have an alumni network of fellow coders and nonprofits ready to serve as references.",
|
||||
"If you make it through Free Code Camp, you will be able to get a coding job. There are far more job openings out there than there are qualified coders to fill them.",
|
||||
"Also, for every pure coding job, there are at least 5 additional jobs that require some coding skills. So even if you decide not to pursue coding as a career, you'll still walk away with a valuable job skill.",
|
||||
"There are 3 keys to succeeding in our community: do the challenges, make friends, and find a routine.",
|
||||
"Now it's time to join our chatroom. Click the \"I've completed this challenge\" button to move on to your next challenge."
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7125d8c441eddfaeb5bdff",
|
||||
"name": "Preview our Challenge Map",
|
||||
"difficulty": 0.02,
|
||||
"challengeSeed": "114627322",
|
||||
"description": [
|
||||
"Before you start learning how to code, we'd like to introduce you to a few things.",
|
||||
"In the next 15 minutes, we'll introduce you to our challenges, chat rooms, field guide, portfolios and news site. Then we'll teach you how to get help if you get stuck somewhere.",
|
||||
"First let's look at our Challenge Map. Click on the \"Map\" button in the upper right hand corner. This map shows all the challenges that will teach you how to code.",
|
||||
"You should complete all these challenges in order.",
|
||||
"Once you finish these Waypoint challenges, you'll move on to Bonfires (algorithm practice), then Ziplines (front end development practice) and finally Basejumps (full stack development practice). After that, you'll start building projects for nonprofits.",
|
||||
"All of these challenges can be completed in a single one- or two-hour sitting.",
|
||||
"This challenge map is just for your reference. When you return to FreeCodeCamp.com, we'll automatically redirect you to the next challenge that you should be doing."
|
||||
"Welcome to Free Code Camp. We're a community of busy people learning to code by building projects for nonprofits.",
|
||||
"We built this community because learning to code is hard. But anyone who can stay motivated can learn to code. And to stay motivated, you just need to: <ol><li>make friends with people who code</li><li>code a little every day</li><ol>",
|
||||
"All our challenges are <ol><li>free</li><li>self-paced</li><li>browser-based</li></ol>",
|
||||
"We'll spend <ol><li>200 hours learning tools like HTML, CSS, JavaScript, Node.js and databases</li><li>600 hours building practice projects</li><li>800 hours building full stack solutions for nonprofits</li></ol>",
|
||||
"By the end, we'll <ol><li>be good at coding</li><li>have a portfolio of apps with happy users to prove it</li><li>have references from friends and nonprofit managers</li></ol>",
|
||||
"Once you make it through Free Code Camp, you will be able to get a coding job. There are far more job openings out there than there are qualified coders to fill them.",
|
||||
"Now it's time to join our chat room. Click the \"I've completed this challenge\" button to move on to your next challenge."
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
@ -40,7 +20,7 @@
|
||||
{
|
||||
"_id": "bd7125d8c441eddfaeb5bd0f",
|
||||
"name": "Join Our Chat Room",
|
||||
"difficulty": 0.03,
|
||||
"difficulty": 0.02,
|
||||
"challengeSeed": "124555254",
|
||||
"description": [
|
||||
"Now we're going to join the Free Code Camp chat room. You can come here any time of day to hang out, ask questions, or find another camper to pair program with.",
|
||||
@ -56,11 +36,26 @@
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7125d8c441eddfaeb5bdff",
|
||||
"name": "Preview our Challenge Map",
|
||||
"difficulty": 0.03,
|
||||
"challengeSeed": "125407437",
|
||||
"description": [
|
||||
"Before you start learning how to code, we'd like to introduce you to a few things.",
|
||||
"Let's look at our Challenge Map. Click on the \"Map\" button in the upper right hand corner. This map shows all the challenges that will teach you how to code.",
|
||||
"You should complete all these challenges in order.",
|
||||
"Once you finish these Waypoint challenges, you'll move on to Bonfires (algorithm practice), then Ziplines (front end development practice) and finally Basejumps (full stack development practice). After that, you'll start building projects for nonprofits.",
|
||||
"This challenge map is just for your reference. When you return to FreeCodeCamp.com, we'll automatically redirect you to the next challenge that you should be doing."
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7125d8c441eddfaeb5bd1f",
|
||||
"name": "Browse our Field Guide",
|
||||
"difficulty": 0.04,
|
||||
"challengeSeed": "114627322",
|
||||
"challengeSeed": "125407435",
|
||||
"description": [
|
||||
"Free Code Camp has an up-to-date field guide that will answer your many questions.",
|
||||
"Click the \"Field Guide\" button in the upper right hand corner.",
|
||||
@ -75,7 +70,7 @@
|
||||
"_id": "bd7125d8c441eddfaeb5bd2f",
|
||||
"name": "Customize your Porfolio Page",
|
||||
"difficulty": 0.05,
|
||||
"challengeSeed": "114627322",
|
||||
"challengeSeed": "125407433",
|
||||
"description": [
|
||||
"You and all your fellow campers have portfolio pages.",
|
||||
"To see your portfolio page, click your picture in the upper right hand corner.",
|
||||
@ -111,14 +106,15 @@
|
||||
"_id": "bd7137d8c441eddfaeb5bdef",
|
||||
"name": "Get Help the Hacker Way with RSAP",
|
||||
"difficulty": 0.07,
|
||||
"challengeSeed": "111500801",
|
||||
"challengeSeed": "125407432",
|
||||
"description": [
|
||||
"Let's cover one last thing before you start working through our lessons: how to get help.",
|
||||
"Any time you get stuck or don't know what to do next, follow this simple algorithm (procedure): RSAP (Read, Search, Ask, Post).",
|
||||
"First, R - Read the documentation or error message. A key skill that good coders have is the ability to interpret and then follow instructions.",
|
||||
"Next, S - Search Google. Good Google queries take a lot of practice. When you search Google, you usually want to include the language or framework you're using. You also want to limit the results to a recent period.",
|
||||
"Then, if you still haven't found an answer to your question, A - Ask your friends. If you have trouble, you can ask your fellow campers. We have a special chat room specifically for getting help with tools you learn through these Free Code Camp Challenges. Go to <a href='https://gitter.im/FreeCodeCamp/Help' target='_blank'>https://gitter.im/FreeCodeCamp/Help</a>. Keep this chat open while you work on the remaining challenges.",
|
||||
"Finally, P - Post on Stack Overflow. Before you attempt to do this, re-read Stack Overflow's guide to asking a good question: <a href='http://stackoverflow.com/help/how-to-ask'>http://stackoverflow.com/help/how-to-ask</a>.",
|
||||
"Then, if you still haven't found an answer to your question, A - Ask your friends. If you have trouble, you can ask your fellow campers. We have a special chat room specifically for getting help with tools you learn through these Free Code Camp Challenges. Go to <a href='https://freecode.slack.com/messages/help/' target='_blank'>https://freecode.slack.com/messages/help/</a>. Keep this chat open while you work on the remaining challenges.",
|
||||
"Finally, P - Post on Stack Overflow. Before you attempt to do this, read Stack Overflow's guide to asking good questions: <a href='http://stackoverflow.com/help/how-to-ask'>http://stackoverflow.com/help/how-to-ask</a>.",
|
||||
"Here's our detailed field guide on getting help: <a href='/field-guide/how-do-i-get-help-when-i-get-stuck' target='_blank'>http://freecodecamp.com/field-guide/how-do-i-get-help-when-i-get-stuck</a>.",
|
||||
"Now you have a clear algorithm to follow when you need help! Let's start coding! Move on to your next challenge."
|
||||
],
|
||||
"challengeType": 2,
|
||||
@ -130,7 +126,12 @@
|
||||
"difficulty": 0.08,
|
||||
"challengeSeed": "114627406",
|
||||
"description": [
|
||||
"Go to <a href='http://www.codecademy.com/en/skills/make-a-website/topics/html-elements' target='_blank'>http://www.codecademy.com/en/skills/make-a-website/topics/html-elements</a> and complete the section."
|
||||
"Now it's time for us to start our actual coding lessons. We've curated a series of free, self-paced, browser-based lessons from providers like Stanford University, Codecademy,and MongoDB.",
|
||||
"These lessons will cover a lot of ground quickly, and will hold your hand throughout the process. Don't try to memorize everything - you'll spend more than a thousand hours practicing these later, and you can always look things up. Just keep moving.",
|
||||
"If you've learned HTML and CSS before, these next few Waypoints will be a valuable review. If you haven't learned HTML or CSS before, you're in for a treat!",
|
||||
"This Codecademy will quickly cover HTML, CSS and even Responsive Design with Bootstrap.",
|
||||
"Go to <a href='http://www.codecademy.com/en/skills/make-a-website/topics/html-elements' target='_blank'>http://www.codecademy.com/en/skills/make-a-website/topics/html-elements</a> and complete the section.",
|
||||
"Once you're done, mark this Waypoint complete and move on the next Waypoint."
|
||||
|
||||
],
|
||||
"challengeType": 2,
|
||||
@ -142,18 +143,19 @@
|
||||
"difficulty": 0.09,
|
||||
"challengeSeed": "114578441",
|
||||
"description": [
|
||||
"Now let's learn about styling text with CSS.",
|
||||
"Go to <a href='http://www.codecademy.com/skills/make-a-website/topics/css-properties-text' target='_blank'>http://www.codecademy.com/skills/make-a-website/topics/css-properties-text</a> and complete the section."
|
||||
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd8129d8c441eddfaeb5bdef",
|
||||
"_id": "bd8129d8c441ecdfaeb5bdef",
|
||||
"name": "Space Out with CSS",
|
||||
"difficulty": 0.10,
|
||||
"challengeSeed": "114578438",
|
||||
"description": [
|
||||
"There are several ways to control spacing between elements using CSS. Let's learn about padding, margins, and more.",
|
||||
"Go to <a href='http://www.codecademy.com/skills/make-a-website/topics/css-properties-box' target='_blank'>http://www.codecademy.com/skills/make-a-website/topics/css-properties-box</a> and complete the section."
|
||||
],
|
||||
"challengeType": 2,
|
||||
@ -165,6 +167,7 @@
|
||||
"difficulty": 0.11,
|
||||
"challengeSeed": "114578438",
|
||||
"description": [
|
||||
"Now let's apply the HTML and CSS we've learned toward making a proper layout.",
|
||||
"Go to <a href='http://www.codecademy.com/skills/make-a-website/topics/css-properties-layout' target='_blank'>http://www.codecademy.com/skills/make-a-website/topics/css-properties-layout</a> and complete the section."
|
||||
],
|
||||
"challengeType": 2,
|
||||
@ -176,6 +179,8 @@
|
||||
"difficulty": 0.12,
|
||||
"challengeSeed": "114578438",
|
||||
"description": [
|
||||
"Responsive Design is the practice of building web applications that look good on any screen size - whether it's a phone or a big screen TV.",
|
||||
"Bootstrap is a CSS library that was created by Twitter. It's by far the most popular responsive design framework. It's websites like Newsweek, Free Code Camp, and, of course, Twitter.",
|
||||
"Go to <a href='http://www.codecademy.com/skills/make-a-website/topics/bootstrap-components' target='_blank'>http://www.codecademy.com/skills/make-a-website/topics/bootstrap-components</a> and complete the section."
|
||||
],
|
||||
"challengeType": 2,
|
||||
@ -202,7 +207,6 @@
|
||||
"difficulty": 0.14,
|
||||
"challengeSeed": "114591805",
|
||||
"description": [
|
||||
"Now let's learn more about DOM traversal - that is, moving from one HTML element to the next.",
|
||||
"Go to <a href='http://www.codecademy.com/courses/web-beginner-en-GfjC6/0/1' target='_blank'>http://www.codecademy.com/courses/web-beginner-en-GfjC6/0/1</a> and complete the second section."
|
||||
],
|
||||
"challengeType": 2,
|
||||
@ -462,6 +466,7 @@
|
||||
"difficulty": 0.34,
|
||||
"challengeSeed": "114684726",
|
||||
"description": [
|
||||
"Complete Unit 1 of <a href='http://www.codecademy.com/learn/learn-angularjs'>http://www.codecademy.com/learn/learn-angularjs</a>"
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
@ -472,40 +477,40 @@
|
||||
"difficulty": 0.35,
|
||||
"challengeSeed": "114684727",
|
||||
"description": [
|
||||
|
||||
"Complete Unit 2 of <a href='http://www.codecademy.com/learn/learn-angularjs'>http://www.codecademy.com/learn/learn-angularjs</a>"
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7156d8c441eddfaeb5bdef",
|
||||
"name": "Power Forms with Angular.js",
|
||||
"name": "Create Angular.js Services",
|
||||
"difficulty": 0.36,
|
||||
"challengeSeed": "114684729",
|
||||
"description": [
|
||||
|
||||
"Complete Unit 3 of <a href='http://www.codecademy.com/learn/learn-angularjs'>http://www.codecademy.com/learn/learn-angularjs</a>"
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7157d8c441eddfaeb5bdef",
|
||||
"name": "Customize Angular.js Directives",
|
||||
"name": "Structure Angular.js Routes",
|
||||
"difficulty": 0.37,
|
||||
"challengeSeed": "114685062",
|
||||
"description": [
|
||||
|
||||
"Complete Unit 4 of <a href='http://www.codecademy.com/learn/learn-angularjs'>http://www.codecademy.com/learn/learn-angularjs</a>"
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d8c441eddfaeb5bdef",
|
||||
"name": "Create Angular.js Services",
|
||||
"name": "Build a Geolocation Angular App",
|
||||
"difficulty": 0.38,
|
||||
"challengeSeed": "114685060",
|
||||
"description": [
|
||||
|
||||
"Complete Unit 5 of <a href='http://www.codecademy.com/learn/learn-angularjs'>http://www.codecademy.com/learn/learn-angularjs</a>"
|
||||
],
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
@ -637,6 +642,26 @@
|
||||
"challengeType": 2,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d8c442eddfbeb5bd1f",
|
||||
"name": "Get Set for Ziplines",
|
||||
"difficulty": 1.00,
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"Now you're ready to start our Zipline challenges. These front-end development challenges will give you many opportunities to apply the HTML, CSS, jQuery and JavaScript you've learned to build static (database-less) applications.",
|
||||
"We'll build these challenges using CodePen, a popular tool for creating, sharing, and discovering static web applications.",
|
||||
"Go to CodePen and create an account.",
|
||||
"Click your user image in the top right corner, then click the \"New pen\" button that drops down.",
|
||||
"Drag the windows around and press the buttons in the lower-right hand corner to change the orientation to suit your preference.",
|
||||
"Click the gear next to CSS. Then in the \"External CSS File or Another Pen\" text field, type \"bootstrap\" and scroll down until you see the latest version of Bootstrap. Click it.",
|
||||
"Verify that bootstrap is active by adding the following code to your HTML: <code><h1 class='text-primary'>Hello CodePen!</h1></code>. The text's color should be Bootstrap blue.",
|
||||
"Click the gear next the JavaScript. Click the \"Latest version of...\" select box and choose jQuery.",
|
||||
"Now add the following code to your JavaScript: <code>$(document).ready(function() { $('.text-primary').text('Hi CodePen!') });</code>. Click the \"Save\" button at the top. Your \"Hello CodePen!\" should change to \"Hi CodePen!\". This means that jQuery is working.",
|
||||
"Now you're ready for your first Zipline. 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."
|
||||
],
|
||||
"challengeType": 3,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d8c442eddfaeb5bd1f",
|
||||
"name": "Zipline: Use the Twitch.tv JSON API",
|
||||
@ -686,7 +711,7 @@
|
||||
"difficulty": 1.03,
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"<span class='text-info'>Objective:</span> Build a <a href='http://codepen.io' target='_blank'>CodePen.io</a> that successfully reverse-engineers this: <a href='http://codepen.io/AdventureBear/full/aOobMg' target='_blank'>http://codepen.io/AdventureBear/full/aOobMg</a>.",
|
||||
"<span class='text-info'>Objective:</span> Build a <a href='http://codepen.io' target='_blank'>CodePen.io</a> that successfully reverse-engineers this: <a href='http://codepen.io/AdventureBear/full/yNBJRj' target='_blank'>http://codepen.io/AdventureBear/full/yNBJRj</a>.",
|
||||
"<span class='text-info'>Rule #1:</span> Don't look at the example project's code. Figure it out for yourself.",
|
||||
"<span class='text-info'>Rule #2:</span> You may use whichever libraries or APIs you need.",
|
||||
"<span class='text-info'>Rule #3:</span> Reverse engineer the example project's functionality, and also feel free to personalize it.",
|
||||
@ -787,13 +812,13 @@
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d8c443eddfaeb5bdef",
|
||||
"name": "Basejump: Build a Voting App",
|
||||
"difficulty": 2.01,
|
||||
"_id": "bd7158d8c443eddfaeb5bcef",
|
||||
"name": "Get Set for Basejumps",
|
||||
"difficulty": 2.00,
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"<span class='text-info'>Objective:</span> Build a full stack JavaScript app that successfully reverse-engineers this: <a href='http://voteplex.herokuapp.com/' target='_blank'>http://voteplex.herokuapp.com/</a> and deploy it to Heroku.",
|
||||
"We'll build this Basejump on Cloud 9, a powerful online code editor with a full Ubuntu Linux workspace, all running in the cloud.",
|
||||
"<span class='text-info'>Objective:</span> Get the MEAN stack running on Cloud 9, push your code to GitHub, and deploy it to Heroku.",
|
||||
"We'll build our Basejumps on Cloud 9, a powerful online code editor with a full Ubuntu Linux workspace, all running in the cloud.",
|
||||
"If you don't already have Cloud 9 account, create one now at <a href='http://c9.io'>http://c9.io</a>.",
|
||||
"Now let's get your development environment ready for a new Angular-Fullstack application provided by Yeoman.",
|
||||
"Open up <a href='http://c9.io'>http://c9.io</a> and sign in to your account.",
|
||||
@ -838,7 +863,22 @@
|
||||
"Set the config flag for your Heroku environment and add MongoLab for your MongoDB instance by running the following command: <code>cd ~/workspace/dist && heroku config:set NODE_ENV=production && heroku addons:add mongolab</code>.",
|
||||
"As you build your app, you should frequently commit changes to your codebase. You can do this by running <code>git commit -am \"your commit message\"</code>. 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 <code>git push origin master</code>, and to Heroku by running <code>grunt --force && grunt buildcontrol:heroku</code>.",
|
||||
"Now that you've configured your environment, here are the specific User Stories you should implement for this Basejump:",
|
||||
"Now you're ready to move on to your first Basejump. 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."
|
||||
],
|
||||
"challengeType": 4,
|
||||
"tests": []
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d8c443eddfaeb5bdef",
|
||||
"name": "Basejump: Build a Voting App",
|
||||
"difficulty": 2.01,
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"<span class='text-info'>Objective:</span> Build a full stack JavaScript app that successfully reverse-engineers this: <a href='http://voteplex.herokuapp.com/' target='_blank'>http://voteplex.herokuapp.com/</a> 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 <a href='/challenges/get-set-for-basejumps'>http://freecodecamp.com/challenges/get-set-for-basejumps</a>.",
|
||||
"As you build your app, you should frequently commit changes to your codebase. You can do this by running <code>git commit -am \"your commit message\"</code>. 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 <code>git push origin master</code>, and to Heroku by running <code>grunt --force && grunt buildcontrol:heroku</code>.",
|
||||
"Here are the specific User Stories you should implement for this Basejump:",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I can keep my polls and come back later to access them.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, can share my polls with my friends.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I can see the aggregate results of my polls.",
|
||||
@ -860,52 +900,10 @@
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"<span class='text-info'>Objective:</span> Build a full stack JavaScript app that successfully reverse-engineers this: <a href='http://sociallife.herokuapp.com/' target='_blank'>http://sociallife.herokuapp.com/</a> and deploy it to Heroku.",
|
||||
"We'll build this Basejump on Cloud 9, a powerful online code editor with a full Ubuntu Linux workspace, all running in the cloud.",
|
||||
"If you don't already have Cloud 9 account, create one now at <a href='http://c9.io'>http://c9.io</a>.",
|
||||
"Now let's get your development environment ready for a new Angular-Fullstack application provided by Yeoman.",
|
||||
"Open up <a href='http://c9.io'>http://c9.io</a> and sign in to your account.",
|
||||
"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.",
|
||||
"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.",
|
||||
"<code>rm -rf * && npm install -g yo grunt grunt-cli generator-angular-fullstack && yo angular-fullstack</code>",
|
||||
"Yeoman will prompt you to answer some questions. Answer them like this:",
|
||||
"What would you like to write scripts with? JavaScript",
|
||||
"What would you like to write markup with? HTML",
|
||||
"What would you like to write stylesheets with? CSS",
|
||||
"What Angular router would you like to use? ngRoute",
|
||||
"Would you like to include Bootstrap? Yes",
|
||||
"Would you like to include UI Bootstrap? Yes",
|
||||
"Would you like to use MongoDB with Mongoose for data modeling? Yes",
|
||||
"Would you scaffold out an authentication boilerplate? Yes",
|
||||
"Would you like to include additional oAuth strategies? Twitter",
|
||||
"Would you like to use socket.io? No",
|
||||
"May bower anonymously report usage statistics to improve the tool over time? (Y/n) Y",
|
||||
"You may get an error similar to <code> ERR! EEXIST, open ‘/home/ubuntu/.npm</code>. This is caused when Cloud9 runs out of memory and kills an install. If you get this, simply re-run this process with the command <code>yo angular-fullstack</code>. You will then be asked a few questions regarding the re-install. Answer them as follows:",
|
||||
"Existing .yo-rc configuration found, would you like to use it? (Y/n) Y",
|
||||
"Overwrite client/favicon.ico? (Ynaxdh) Y",
|
||||
"To finish the installation run the commands: <code>bower install && npm install</code>",
|
||||
"To start MongoDB, run the following commands in your terminal: <code>mkdir data && echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest \"$@\"' > mongod && chmod a+x mongod && ./mongod</code>",
|
||||
"You will want to open up a new terminal to work from by clicking on the + icon and select New Terminal",
|
||||
"Start the application by running the following command in your new terminal window: <code>grunt serve</code>",
|
||||
"Wait for the following message to appear: <code>xdg-open: no method available for opening 'http://localhost:8080' </code>. Now you can open the internal Cloud9 browser. To launch the browser select Preview in the toolbar then select the dropdown option Preview Running Application.",
|
||||
"Turn the folder in which your application is running into a Git repository by running the following commands: <code>git init && git add . && git commit -am 'initial commit'</code>.",
|
||||
"Create a new Github repository by signing in to <a href='http://github.com'>http://github.com</a> and clicking on the + button next to your username in the upper-right hand side of your screen, then selecting \"New Repository\"",
|
||||
"Enter a project name, then click the \"Create Repository\" button.",
|
||||
"Find the \"...or push an existing repository from the command line\" section and click the Copy to Clipboard button beside it.",
|
||||
"Paste the commands from your clipboard into the Cloud9 terminal prompt. This will push your changes to your repository on Cloud 9 up to Github.",
|
||||
"Check back on your Github profile to verify the changes were successfully pushed up to Github.",
|
||||
"Now let's push your code to Heroku. If you don't already have a Heroku account, create one at <a href=http://heroku.com>http://heroku.com</a>. You shouldn't be charged for anything, but you will need to add your credit card information to your Heroku before you will be able to use Heroku's free MongoLab add on.",
|
||||
"Before you publish to Heroku, you should free up as much memory as possible on Cloud9. In each of the Cloud9 terminal prompt tabs where MongoDB and Grunt are running, press the <code>control + c</code> hotkey to shut down these processes.",
|
||||
"Run the following command in a Cloud9 terminal prompt tab: <code>npm install grunt-contrib-imagemin --save-dev && npm install --save-dev && heroku login</code>. At this point, the terminal will prompt you to log in to Heroku from the command line.",
|
||||
"Now run <code>yo angular-fullstack:heroku</code>. You can choose a name for your Heroku project, or Heroku will create a random one for you. You can choose whether you want to deploy to servers the US or the EU.",
|
||||
"Set the config flag for your Heroku environment and add MongoLab for your MongoDB instance by running the following command: <code>cd ~/workspace/dist && heroku config:set NODE_ENV=production && heroku addons:add mongolab</code>.",
|
||||
"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 <a href='/challenges/get-set-for-basejumps'>http://freecodecamp.com/challenges/get-set-for-basejumps</a>.",
|
||||
"As you build your app, you should frequently commit changes to your codebase. You can do this by running <code>git commit -am \"your commit message\"</code>. 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 <code>git push origin master</code>, and to Heroku by running <code>grunt --force && grunt buildcontrol:heroku</code>.",
|
||||
"Now that you've configured your environment, here are the specific User Stories you should implement for this Basejump:",
|
||||
"Here are the specific User Stories you should implement for this Basejump:",
|
||||
"<span class='text-info'>User Story:</span> As an unauthenticated user, I can view all bars in my area.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I can add myself to a bar to indicate I am going there tonight.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I can remove myself from a bar if I no longer want to go there.",
|
||||
@ -923,52 +921,10 @@
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"<span class='text-info'>Objective:</span> Build a full stack JavaScript app that successfully reverse-engineers this: <a href='http://stockjump.herokuapp.com/' target='_blank'>http://stockjump.herokuapp.com/</a> and deploy it to Heroku.",
|
||||
"We'll build this Basejump on Cloud 9, a powerful online code editor with a full Ubuntu Linux workspace, all running in the cloud.",
|
||||
"If you don't already have Cloud 9 account, create one now at <a href='http://c9.io'>http://c9.io</a>.",
|
||||
"Now let's get your development environment ready for a new Angular-Fullstack application provided by Yeoman.",
|
||||
"Open up <a href='http://c9.io'>http://c9.io</a> and sign in to your account.",
|
||||
"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.",
|
||||
"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.",
|
||||
"<code>rm -rf * && npm install -g yo grunt grunt-cli generator-angular-fullstack && yo angular-fullstack</code>",
|
||||
"Yeoman will prompt you to answer some questions. Answer them like this:",
|
||||
"What would you like to write scripts with? JavaScript",
|
||||
"What would you like to write markup with? HTML",
|
||||
"What would you like to write stylesheets with? CSS",
|
||||
"What Angular router would you like to use? ngRoute",
|
||||
"Would you like to include Bootstrap? Yes",
|
||||
"Would you like to include UI Bootstrap? Yes",
|
||||
"Would you like to use MongoDB with Mongoose for data modeling? Yes",
|
||||
"Would you scaffold out an authentication boilerplate? Yes",
|
||||
"Would you like to include additional oAuth strategies? Twitter",
|
||||
"Would you like to use socket.io? No",
|
||||
"May bower anonymously report usage statistics to improve the tool over time? (Y/n) Y",
|
||||
"You may get an error similar to <code> ERR! EEXIST, open ‘/home/ubuntu/.npm</code>. This is caused when Cloud9 runs out of memory and kills an install. If you get this, simply re-run this process with the command <code>yo angular-fullstack</code>. You will then be asked a few questions regarding the re-install. Answer them as follows:",
|
||||
"Existing .yo-rc configuration found, would you like to use it? (Y/n) Y",
|
||||
"Overwrite client/favicon.ico? (Ynaxdh) Y",
|
||||
"To finish the installation run the commands: <code>bower install && npm install</code>",
|
||||
"To start MongoDB, run the following commands in your terminal: <code>mkdir data && echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest \"$@\"' > mongod && chmod a+x mongod && ./mongod</code>",
|
||||
"You will want to open up a new terminal to work from by clicking on the + icon and select New Terminal",
|
||||
"Start the application by running the following command in your new terminal window: <code>grunt serve</code>",
|
||||
"Wait for the following message to appear: <code>xdg-open: no method available for opening 'http://localhost:8080' </code>. Now you can open the internal Cloud9 browser. To launch the browser select Preview in the toolbar then select the dropdown option Preview Running Application.",
|
||||
"Turn the folder in which your application is running into a Git repository by running the following commands: <code>git init && git add . && git commit -am 'initial commit'</code>.",
|
||||
"Create a new Github repository by signing in to <a href='http://github.com'>http://github.com</a> and clicking on the + button next to your username in the upper-right hand side of your screen, then selecting \"New Repository\"",
|
||||
"Enter a project name, then click the \"Create Repository\" button.",
|
||||
"Find the \"...or push an existing repository from the command line\" section and click the Copy to Clipboard button beside it.",
|
||||
"Paste the commands from your clipboard into the Cloud9 terminal prompt. This will push your changes to your repository on Cloud 9 up to Github.",
|
||||
"Check back on your Github profile to verify the changes were successfully pushed up to Github.",
|
||||
"Now let's push your code to Heroku. If you don't already have a Heroku account, create one at <a href=http://heroku.com>http://heroku.com</a>. You shouldn't be charged for anything, but you will need to add your credit card information to your Heroku before you will be able to use Heroku's free MongoLab add on.",
|
||||
"Before you publish to Heroku, you should free up as much memory as possible on Cloud9. In each of the Cloud9 terminal prompt tabs where MongoDB and Grunt are running, press the <code>control + c</code> hotkey to shut down these processes.",
|
||||
"Run the following command in a Cloud9 terminal prompt tab: <code>npm install grunt-contrib-imagemin --save-dev && npm install --save-dev && heroku login</code>. At this point, the terminal will prompt you to log in to Heroku from the command line.",
|
||||
"Now run <code>yo angular-fullstack:heroku</code>. You can choose a name for your Heroku project, or Heroku will create a random one for you. You can choose whether you want to deploy to servers the US or the EU.",
|
||||
"Set the config flag for your Heroku environment and add MongoLab for your MongoDB instance by running the following command: <code>cd ~/workspace/dist && heroku config:set NODE_ENV=production && heroku addons:add mongolab</code>.",
|
||||
"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 <a href='/challenges/get-set-for-basejumps'>http://freecodecamp.com/challenges/get-set-for-basejumps</a>.",
|
||||
"As you build your app, you should frequently commit changes to your codebase. You can do this by running <code>git commit -am \"your commit message\"</code>. 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 <code>git push origin master</code>, and to Heroku by running <code>grunt --force && grunt buildcontrol:heroku</code>.",
|
||||
"Now that you've configured your environment, here are the specific User Stories you should implement for this Basejump:",
|
||||
"Here are the specific User Stories you should implement for this Basejump:",
|
||||
"<span class='text-info'>User Story:</span> As a user, I can view a graph displaying the recent trend line for all added stocks.",
|
||||
"<span class='text-info'>User Story:</span> As a user, I can add new stocks by their symbol name.",
|
||||
"<span class='text-info'>User Story:</span> As a user, I can remove stocks.",
|
||||
@ -986,52 +942,10 @@
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"<span class='text-info'>Objective:</span> Build a full stack JavaScript app that successfully reverse-engineers this: <a href='http://bookoutpost.herokuapp.com/' target='_blank'>http://bookoutpost.herokuapp.com/</a> and deploy it to Heroku.",
|
||||
"We'll build this Basejump on Cloud 9, a powerful online code editor with a full Ubuntu Linux workspace, all running in the cloud.",
|
||||
"If you don't already have Cloud 9 account, create one now at <a href='http://c9.io'>http://c9.io</a>.",
|
||||
"Now let's get your development environment ready for a new Angular-Fullstack application provided by Yeoman.",
|
||||
"Open up <a href='http://c9.io'>http://c9.io</a> and sign in to your account.",
|
||||
"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.",
|
||||
"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.",
|
||||
"<code>rm -rf * && npm install -g yo grunt grunt-cli generator-angular-fullstack && yo angular-fullstack</code>",
|
||||
"Yeoman will prompt you to answer some questions. Answer them like this:",
|
||||
"What would you like to write scripts with? JavaScript",
|
||||
"What would you like to write markup with? HTML",
|
||||
"What would you like to write stylesheets with? CSS",
|
||||
"What Angular router would you like to use? ngRoute",
|
||||
"Would you like to include Bootstrap? Yes",
|
||||
"Would you like to include UI Bootstrap? Yes",
|
||||
"Would you like to use MongoDB with Mongoose for data modeling? Yes",
|
||||
"Would you scaffold out an authentication boilerplate? Yes",
|
||||
"Would you like to include additional oAuth strategies? Twitter",
|
||||
"Would you like to use socket.io? No",
|
||||
"May bower anonymously report usage statistics to improve the tool over time? (Y/n) Y",
|
||||
"You may get an error similar to <code> ERR! EEXIST, open ‘/home/ubuntu/.npm</code>. This is caused when Cloud9 runs out of memory and kills an install. If you get this, simply re-run this process with the command <code>yo angular-fullstack</code>. You will then be asked a few questions regarding the re-install. Answer them as follows:",
|
||||
"Existing .yo-rc configuration found, would you like to use it? (Y/n) Y",
|
||||
"Overwrite client/favicon.ico? (Ynaxdh) Y",
|
||||
"To finish the installation run the commands: <code>bower install && npm install</code>",
|
||||
"To start MongoDB, run the following commands in your terminal: <code>mkdir data && echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest \"$@\"' > mongod && chmod a+x mongod && ./mongod</code>",
|
||||
"You will want to open up a new terminal to work from by clicking on the + icon and select New Terminal",
|
||||
"Start the application by running the following command in your new terminal window: <code>grunt serve</code>",
|
||||
"Wait for the following message to appear: <code>xdg-open: no method available for opening 'http://localhost:8080' </code>. Now you can open the internal Cloud9 browser. To launch the browser select Preview in the toolbar then select the dropdown option Preview Running Application.",
|
||||
"Turn the folder in which your application is running into a Git repository by running the following commands: <code>git init && git add . && git commit -am 'initial commit'</code>.",
|
||||
"Create a new Github repository by signing in to <a href='http://github.com'>http://github.com</a> and clicking on the + button next to your username in the upper-right hand side of your screen, then selecting \"New Repository\"",
|
||||
"Enter a project name, then click the \"Create Repository\" button.",
|
||||
"Find the \"...or push an existing repository from the command line\" section and click the Copy to Clipboard button beside it.",
|
||||
"Paste the commands from your clipboard into the Cloud9 terminal prompt. This will push your changes to your repository on Cloud 9 up to Github.",
|
||||
"Check back on your Github profile to verify the changes were successfully pushed up to Github.",
|
||||
"Now let's push your code to Heroku. If you don't already have a Heroku account, create one at <a href=http://heroku.com>http://heroku.com</a>. You shouldn't be charged for anything, but you will need to add your credit card information to your Heroku before you will be able to use Heroku's free MongoLab add on.",
|
||||
"Before you publish to Heroku, you should free up as much memory as possible on Cloud9. In each of the Cloud9 terminal prompt tabs where MongoDB and Grunt are running, press the <code>control + c</code> hotkey to shut down these processes.",
|
||||
"Run the following command in a Cloud9 terminal prompt tab: <code>npm install grunt-contrib-imagemin --save-dev && npm install --save-dev && heroku login</code>. At this point, the terminal will prompt you to log in to Heroku from the command line.",
|
||||
"Now run <code>yo angular-fullstack:heroku</code>. You can choose a name for your Heroku project, or Heroku will create a random one for you. You can choose whether you want to deploy to servers the US or the EU.",
|
||||
"Set the config flag for your Heroku environment and add MongoLab for your MongoDB instance by running the following command: <code>cd ~/workspace/dist && heroku config:set NODE_ENV=production && heroku addons:add mongolab</code>.",
|
||||
"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 <a href='/challenges/get-set-for-basejumps'>http://freecodecamp.com/challenges/get-set-for-basejumps</a>.",
|
||||
"As you build your app, you should frequently commit changes to your codebase. You can do this by running <code>git commit -am \"your commit message\"</code>. 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 <code>git push origin master</code>, and to Heroku by running <code>grunt --force && grunt buildcontrol:heroku</code>.",
|
||||
"Now that you've configured your environment, here are the specific User Stories you should implement for this Basejump:",
|
||||
"Here are the specific User Stories you should implement for this Basejump:",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I can view all books posted by every user.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I can add a new book.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I can update my settings to store my full name, city, and state.",
|
||||
@ -1049,52 +963,10 @@
|
||||
"challengeSeed": "123488494",
|
||||
"description": [
|
||||
"<span class='text-info'>Objective:</span> Build a full stack JavaScript app that successfully reverse-engineers this: <a href='http://linkterest.herokuapp.com/' target='_blank'>http://linkterest.herokuapp.com/</a> and deploy it to Heroku.",
|
||||
"We'll build this Basejump on Cloud 9, a powerful online code editor with a full Ubuntu Linux workspace, all running in the cloud.",
|
||||
"If you don't already have Cloud 9 account, create one now at <a href='http://c9.io'>http://c9.io</a>.",
|
||||
"Now let's get your development environment ready for a new Angular-Fullstack application provided by Yeoman.",
|
||||
"Open up <a href='http://c9.io'>http://c9.io</a> and sign in to your account.",
|
||||
"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.",
|
||||
"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.",
|
||||
"<code>rm -rf * && npm install -g yo grunt grunt-cli generator-angular-fullstack && yo angular-fullstack</code>",
|
||||
"Yeoman will prompt you to answer some questions. Answer them like this:",
|
||||
"What would you like to write scripts with? JavaScript",
|
||||
"What would you like to write markup with? HTML",
|
||||
"What would you like to write stylesheets with? CSS",
|
||||
"What Angular router would you like to use? ngRoute",
|
||||
"Would you like to include Bootstrap? Yes",
|
||||
"Would you like to include UI Bootstrap? Yes",
|
||||
"Would you like to use MongoDB with Mongoose for data modeling? Yes",
|
||||
"Would you scaffold out an authentication boilerplate? Yes",
|
||||
"Would you like to include additional oAuth strategies? Twitter",
|
||||
"Would you like to use socket.io? No",
|
||||
"May bower anonymously report usage statistics to improve the tool over time? (Y/n) Y",
|
||||
"You may get an error similar to <code> ERR! EEXIST, open ‘/home/ubuntu/.npm</code>. This is caused when Cloud9 runs out of memory and kills an install. If you get this, simply re-run this process with the command <code>yo angular-fullstack</code>. You will then be asked a few questions regarding the re-install. Answer them as follows:",
|
||||
"Existing .yo-rc configuration found, would you like to use it? (Y/n) Y",
|
||||
"Overwrite client/favicon.ico? (Ynaxdh) Y",
|
||||
"To finish the installation run the commands: <code>bower install && npm install</code>",
|
||||
"To start MongoDB, run the following commands in your terminal: <code>mkdir data && echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest \"$@\"' > mongod && chmod a+x mongod && ./mongod</code>",
|
||||
"You will want to open up a new terminal to work from by clicking on the + icon and select New Terminal",
|
||||
"Start the application by running the following command in your new terminal window: <code>grunt serve</code>",
|
||||
"Wait for the following message to appear: <code>xdg-open: no method available for opening 'http://localhost:8080' </code>. Now you can open the internal Cloud9 browser. To launch the browser select Preview in the toolbar then select the dropdown option Preview Running Application.",
|
||||
"Turn the folder in which your application is running into a Git repository by running the following commands: <code>git init && git add . && git commit -am 'initial commit'</code>.",
|
||||
"Create a new Github repository by signing in to <a href='http://github.com'>http://github.com</a> and clicking on the + button next to your username in the upper-right hand side of your screen, then selecting \"New Repository\"",
|
||||
"Enter a project name, then click the \"Create Repository\" button.",
|
||||
"Find the \"...or push an existing repository from the command line\" section and click the Copy to Clipboard button beside it.",
|
||||
"Paste the commands from your clipboard into the Cloud9 terminal prompt. This will push your changes to your repository on Cloud 9 up to Github.",
|
||||
"Check back on your Github profile to verify the changes were successfully pushed up to Github.",
|
||||
"Now let's push your code to Heroku. If you don't already have a Heroku account, create one at <a href=http://heroku.com>http://heroku.com</a>. You shouldn't be charged for anything, but you will need to add your credit card information to your Heroku before you will be able to use Heroku's free MongoLab add on.",
|
||||
"Before you publish to Heroku, you should free up as much memory as possible on Cloud9. In each of the Cloud9 terminal prompt tabs where MongoDB and Grunt are running, press the <code>control + c</code> hotkey to shut down these processes.",
|
||||
"Run the following command in a Cloud9 terminal prompt tab: <code>npm install grunt-contrib-imagemin --save-dev && npm install --save-dev && heroku login</code>. At this point, the terminal will prompt you to log in to Heroku from the command line.",
|
||||
"Now run <code>yo angular-fullstack:heroku</code>. You can choose a name for your Heroku project, or Heroku will create a random one for you. You can choose whether you want to deploy to servers the US or the EU.",
|
||||
"Set the config flag for your Heroku environment and add MongoLab for your MongoDB instance by running the following command: <code>cd ~/workspace/dist && heroku config:set NODE_ENV=production && heroku addons:add mongolab</code>.",
|
||||
"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 <a href='/challenges/get-set-for-basejumps'>http://freecodecamp.com/challenges/get-set-for-basejumps</a>.",
|
||||
"As you build your app, you should frequently commit changes to your codebase. You can do this by running <code>git commit -am \"your commit message\"</code>. 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 <code>git push origin master</code>, and to Heroku by running <code>grunt --force && grunt buildcontrol:heroku</code>.",
|
||||
"Now that you've configured your environment, here are the specific User Stories you should implement for this Basejump:",
|
||||
"Here are the specific User Stories you should implement for this Basejump:",
|
||||
"<span class='text-info'>User Story:</span> As an unauthenticated user, I should be able to login with Twitter.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I should be able to link to images.",
|
||||
"<span class='text-info'>User Story:</span> As an authenticated user, I should be able to delete images that I've linked to.",
|
||||
|
@ -15,7 +15,7 @@
|
||||
"name": "What is Free Code Camp?",
|
||||
"description": [
|
||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||
"<h2 class='text-left'>We're a community of busy adults who learn to code by building projects for nonprofits.</h2>",
|
||||
"<h2 class='text-left'>We're a community of busy people who learn to code by building projects for nonprofits.</h2>",
|
||||
"<h3 class='text-left'>We help our campers (students):</h3>",
|
||||
"<h3>",
|
||||
" <ol>",
|
||||
@ -36,8 +36,8 @@
|
||||
"<h3 class='text-left'>Most people who successfully learn to code:</h3>",
|
||||
"<h3>",
|
||||
" <ol>",
|
||||
" <li>Code every day</li>",
|
||||
" <li>Have lots of friends who code</li>",
|
||||
" <li>Make friends with people who code</li>",
|
||||
" <li>Code a little every day</li>",
|
||||
" </ol>",
|
||||
"</h3>",
|
||||
"<h3>We give you the structure and the community you need so you can successfully learn to code.</h3>",
|
||||
@ -46,6 +46,21 @@
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c441eddfaeb5bd2f",
|
||||
"name": "What are the advantages of Free Code Camp?",
|
||||
"description": [
|
||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||
"<h3>",
|
||||
" <ul>",
|
||||
" <li>• Free</li>",
|
||||
" <li>• Self-paced</li>",
|
||||
" <li>• Browser-based</li>",
|
||||
" </ol>",
|
||||
"</h3>",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c441eddfaeb5bd3f",
|
||||
"name": "How does Free Code Camp work?",
|
||||
"description": [
|
||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||
@ -65,22 +80,6 @@
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c441eddfaeb5bd3f",
|
||||
"name": "What are the advantages of Free Code Camp?",
|
||||
"description": [
|
||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||
"<h3>",
|
||||
" <ul>",
|
||||
" <li>• We're free</li>",
|
||||
" <li>• We're self-paced</li>",
|
||||
" <li>• We're browser-based</li>",
|
||||
" <li>• You'll code the entire time</li>",
|
||||
" </ol>",
|
||||
"</h3>",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c441eddfaeb5bd4f",
|
||||
"name": "Will I really be able to get a job after Free Code Camp?",
|
||||
@ -139,7 +138,7 @@
|
||||
"name": "How long does Free Code Camp take?",
|
||||
"description": [
|
||||
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
||||
" <p class=\"landing-p\">It takes about 1,000 hours of coding to develop the skills you'll need to get an entry level software engineering job. Most coding bootcamps try to jam all this into 12 weeks of intensive study. Free Code Camp is fully online, and there will always be other people at your skill level that you can pair program with, so you can learn at your own pace. Here are some example coding schedules:</p>",
|
||||
" <p class=\"landing-p\">It takes about 1,600 hours of coding to develop the skills you'll need to get an entry level software engineering job. Most coding bootcamps try to jam all this into 3 or 4 months of intensive study. Free Code Camp is fully online, and there will always be other people at your skill level that you can pair program with, so you can learn at your own pace. Here are some example coding schedules:</p>",
|
||||
" <table class=\"table\">",
|
||||
" <thead>",
|
||||
" <th>Time budgeted</th>",
|
||||
@ -149,22 +148,22 @@
|
||||
" <tr class=\"info\">",
|
||||
" <td>Weekends</td>",
|
||||
" <td class=\"hidden-xs\">10 hours/week</td>",
|
||||
" <td>100 weeks (2 years)</td>",
|
||||
" <td>160 weeks (36 months)</td>",
|
||||
" </tr>",
|
||||
" <tr class=\"success\">",
|
||||
" <td>Nights and Weekends</td>",
|
||||
" <td class=\"hidden-xs\">20 hours/week</td>",
|
||||
" <td>50 weeks (1 year)</td>",
|
||||
" <td>80 weeks (18 months)</td>",
|
||||
" </tr>",
|
||||
" <tr class=\"warning\">",
|
||||
" <td>Full time</td>",
|
||||
" <td class=\"hidden-xs\">40 hours/week</td>",
|
||||
" <td>25 weeks (6 months)</td>",
|
||||
" <td>40 weeks (9 months)</td>",
|
||||
" </tr>",
|
||||
" <tr class=\"danger\">",
|
||||
" <td>Traditional Bootcamp Pacing</td>",
|
||||
" <td class=\"hidden-xs\">80 hours/week</td>",
|
||||
" <td>12 weeks (3 months)</td>",
|
||||
" <td>20 weeks (5 months)</td>",
|
||||
" </tr>",
|
||||
" </table>",
|
||||
"<br>",
|
||||
@ -214,6 +213,28 @@
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c436eddfaeb5bd2f",
|
||||
"name": "How do I get help when I get stuck?",
|
||||
"description": [
|
||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||
"<h3>When you get stuck, remember: RSAP.</h3>",
|
||||
"<h3>",
|
||||
" <ol>",
|
||||
" <li><span class='text-info'>Read</span> the documentation or error</li>",
|
||||
" <li><span class='text-info'>Search</span> Google</li>",
|
||||
" <li><span class='text-info'>Ask</span> your friends for help</li>",
|
||||
" <li><span class='text-info'>Post</span> on Stack Overflow</li>",
|
||||
" </ol>",
|
||||
"</h3>",
|
||||
"<h3>This is the most time-efficient way to handle being stuck, and it's the most respectful of other people's time, too.</h3>",
|
||||
"<h3>Most of the time, you'll solve your problem after just one or two steps of this algorithm.</h3>",
|
||||
"<h3>We have a special chat room just for getting help: <a href='https://freecode.slack.com/messages/help/' target='_blank'>https://freecode.slack.com/messages/help/</a></h3>",
|
||||
"<h3>Also, if you need to post on Stack Overflow, be sure to read their guide to asking good questions: <a href='http://stackoverflow.com/help/how-to-ask' target='_blank'>http://stackoverflow.com/help/how-to-ask</a>.</h3>",
|
||||
"<h3>Learning to code is hard. But it's a lot easier if you ask for help when you need it!</h3>",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c442eddfaeb5bdef",
|
||||
"name": "Global Control Shortcuts for Mac",
|
||||
|
Reference in New Issue
Block a user