diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5949807740..b5fe971fce 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -24,7 +24,7 @@ - [ ] Tested changes locally. -- [ ] Closes currently open issue (e.g. `Closes #XXXX`): Closes +- [ ] Closes currently open issue (replace XXXX with an issue no): Closes #XXXX #### Description diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a008477288..8af4c5b33c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ If you've found a bug that is not on the board, [follow these steps](#found-a-bu ## Contribution Guidelines -1. Fork the project: [How To Fork And Maintain a Local Instance of Free Code Camp](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/How-To-Fork-And-Maintain-a-Local-Instance-of-Free-Code-Camp) +1. Fork the project: [How To Fork And Maintain a Local Instance of Free Code Camp](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/FreeCodeCamp-Fork-Local) 2. Create a branch specific to the issue or feature you are working on. Push your work to that branch. ([Need help with branching?](https://github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches)) 3. Name the branch something like `fix/xxx` or `feature/xxx` where `xxx` is a short description of the changes or feature you are attempting to add. For example `fix/email-login` would be a branch where I fix something specific to email login. 4. [Set up Linting](#linting-setup) to run as you make changes. @@ -104,7 +104,7 @@ You should have [ESLint running in your editor](http://eslint.org/docs/user-guid ## Found a bug? Do not file an issue until you have followed these steps: -1. Read [Help I've Found a Bug](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Help-I've-Found-a-Bug) wiki page and follow the instructions there. +1. Read [Help I've Found a Bug](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/FreeCodeCamp-Report-Bugs) wiki page and follow the instructions there. 2. Asked for confirmation in the appropriate [Help Room](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Help-Rooms) 3. Please *do not* open an issue without a 3rd party confirmation of your problem. diff --git a/README.md b/README.md index e4b3439ca8..ca3d1b8f4c 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Found a bug? Do not file an issue until you have followed these steps: -1. Read [Help I've Found a Bug](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Help-I've-Found-a-Bug) wiki page and follow the instructions there. +1. Read [Help I've Found a Bug](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/FreeCodeCamp-Report-Bugs) wiki page and follow the instructions there. 2. Ask for confirmation in the appropriate [Help Room](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Help-Rooms). 3. Please *do not* open an issue without a 3rd party confirmation of your problem. diff --git a/client/commonFramework/bindings.js b/client/commonFramework/bindings.js index 18b98fb29e..1a6178c55d 100644 --- a/client/commonFramework/bindings.js +++ b/client/commonFramework/bindings.js @@ -179,7 +179,7 @@ window.common = (function(global) { $('#help-ive-found-a-bug-wiki-article').on('click', function() { window.open( 'https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/' + - "Help-I've-Found-a-Bug", + 'FreeCodeCamp-Report-Bugs', '_blank' ); }); diff --git a/common/app/components/Nav/links.json b/common/app/components/Nav/links.json index b0771b91a6..9354485070 100644 --- a/common/app/components/Nav/links.json +++ b/common/app/components/Nav/links.json @@ -9,6 +9,10 @@ "content": "Wiki", "link": "/wiki", "target": "_blank" +},{ + "content": "Forum", + "link": "//forum.freecodecamp.com/", + "target": "_blank" },{ "content": "About", "link": "/about" diff --git a/package.json b/package.json index 305060c8b3..39634a5855 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "babel-core": "^6.3.26", "babel-eslint": "^6.0.0", "babel-loader": "^6.2.1", - "babel-plugin-add-module-exports": "^0.1.2", + "babel-plugin-add-module-exports": "^0.2.1", "babel-preset-es2015": "^6.3.13", "babel-preset-react": "^6.3.13", "babel-preset-stage-0": "^6.3.13", @@ -41,7 +41,7 @@ "cheerio": "~0.20.0", "classnames": "^2.1.2", "compression": "^1.6.0", - "connect-mongo": "~1.1.0", + "connect-mongo": "~1.2.0", "cookie-parser": "^1.4.0", "csurf": "^1.8.3", "debug": "^2.2.0", @@ -51,7 +51,7 @@ "errorhandler": "^1.4.2", "es6-map": "~0.1.1", "eslint": "^2.2.0", - "eslint-plugin-react": "^4.1.0", + "eslint-plugin-react": "^5.1.1", "express": "^4.13.3", "express-flash": "~0.0.2", "express-session": "^1.12.1", @@ -83,7 +83,7 @@ "loopback": "^2.22.0", "loopback-boot": "^2.13.0", "loopback-component-passport": "^2.0.0", - "loopback-connector-mongodb": "1.13.0", + "loopback-connector-mongodb": "1.15.2", "merge-stream": "^1.0.0", "method-override": "^2.3.0", "moment": "^2.10.2", @@ -106,7 +106,7 @@ "passport-twitter": "^1.0.3", "pmx": "~0.5.5", "react": "^15.0.2", - "react-bootstrap": "~0.28.1", + "react-bootstrap": "~0.29.4", "react-dom": "^15.0.2", "react-motion": "~0.4.2", "react-pure-render": "^1.0.2", @@ -137,7 +137,7 @@ "devDependencies": { "browser-sync": "^2.9.12", "gulp-sourcemaps": "^1.6.0", - "gulp-tape": "0.0.7", + "gulp-tape": "0.0.9", "jsonlint": "^1.6.2", "loopback-component-explorer": "^2.1.1", "loopback-testing": "^1.1.0", diff --git a/sample.env b/sample.env index 352d994ff5..776ce78955 100644 --- a/sample.env +++ b/sample.env @@ -15,16 +15,11 @@ LINKEDIN_SECRET=stuff MANDRILL_PASSWORD=stuff MANDRILL_USER=stuff -TRELLO_KEY=stuff -TRELLO_SECRET=stuff - TWITTER_KEY=stuff TWITTER_SECRET=stuff TWITTER_TOKEN=stuff TWITTER_TOKEN_SECRET=stuff -BLOGGER_KEY=stuff - SESSION_SECRET=secretstuff COOKIE_SECRET='this is a secret' diff --git a/seed/challenges/00-getting-started/getting-started.json b/seed/challenges/00-getting-started/getting-started.json index 1946577f6f..80f6e0e245 100644 --- a/seed/challenges/00-getting-started/getting-started.json +++ b/seed/challenges/00-getting-started/getting-started.json @@ -661,7 +661,7 @@ "//i.imgur.com/fTFMjwf.gif", "A gif showing how you can click the link below, find your city on the list of Campsites, then click on the Facebook link for your city and join your city's Facebook group.", "Find your city on this list and click it. This will take you to your city's Campsite's Facebook group. Click the \"Join group\" button to apply to join your city's Facebook group. Someone from the campsite should approve you shortly. If your city isn't on this list, scroll to the top of the wiki article for instructions for how you can create your city's Campsite.", - "https://github.com/FreeCodeCamp/freecodecamp/wiki/List-of-Free-Code-Camp-city-based-Campsites" + "https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/LocalGroups-List" ] ], "challengeSeed": [], diff --git a/seed/challenges/01-front-end-development-certification/advanced-ziplines.json b/seed/challenges/01-front-end-development-certification/advanced-ziplines.json index 90e3e27fb3..b9ad0dccef 100644 --- a/seed/challenges/01-front-end-development-certification/advanced-ziplines.json +++ b/seed/challenges/01-front-end-development-certification/advanced-ziplines.json @@ -16,7 +16,7 @@ "User Story: I can keep chaining mathematical operations together until I hit the equal button, and the calculator will tell me the correct output.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "Drnp29SJY8w" @@ -50,7 +50,7 @@ "User Story: I can customize the length of each pomodoro.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "lgj3nfzV0xM" @@ -98,7 +98,7 @@ "User Story: I can choose whether I want to play as X or O.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "Ia69O1ZNGEg" @@ -138,7 +138,7 @@ "Hint: Here are mp3s you can use for each button: https://s3.amazonaws.com/freecodecamp/simonSound1.mp3, https://s3.amazonaws.com/freecodecamp/simonSound2.mp3, https://s3.amazonaws.com/freecodecamp/simonSound3.mp3, https://s3.amazonaws.com/freecodecamp/simonSound4.mp3.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "tAPut8a47bA" diff --git a/seed/challenges/01-front-end-development-certification/basic-javascript.json b/seed/challenges/01-front-end-development-certification/basic-javascript.json index 4edf9b445e..2c7000056f 100644 --- a/seed/challenges/01-front-end-development-certification/basic-javascript.json +++ b/seed/challenges/01-front-end-development-certification/basic-javascript.json @@ -1352,7 +1352,7 @@ ], "tests": [ "assert(firstLetterOfLastName === 'L', 'message: The firstLetterOfLastName variable should have the value of L.');", - "assert(code.match(/firstLetterOfLastName\\s*=\\s*lastName\\s*\\[\\s*\\d+\\s*\\]/), 'message: You should use bracket notation.');" + "assert(code.match(/firstLetterOfLastName\\s*?=\\s*?lastName\\[.*?\\]/), 'message: You should use bracket notation.');" ], "type": "waypoint", "challengeType": 1, @@ -1442,7 +1442,7 @@ ], "tests": [ "assert(thirdLetterOfLastName === 'v', 'message: The thirdLetterOfLastName variable should have the value of v.');", - "assert(code.match(/thirdLetterOfLastName\\s*=\\s*lastName\\s*\\[\\s*\\d+\\s*\\]/), 'message: You should use bracket notation.');" + "assert(code.match(/thirdLetterOfLastName\\s*?=\\s*?lastName\\[.*?\\]/), 'message: You should use bracket notation.');" ], "type": "waypoint", "challengeType": 1, @@ -1796,7 +1796,7 @@ "title": "Manipulate Arrays With push()", "description": [ "An easy way to append data to the end of an array is via the push() function.", - ".push() takes one or more parameter and \"pushes\" it onto the end of the array.", + ".push() takes one or more parameters and \"pushes\" them onto the end of the array.", "
var arr = [1,2,3];
arr.push(4);
// arr is now [1,2,3,4]
", "

Instructions

", "Push [\"dog\", 3] onto the end of the myArray variable." @@ -3971,7 +3971,7 @@ "Here is an example of using a variable to access a property:", "
var someProp = \"propName\";
var myObj = {
propName: \"Some Value\"
}
myObj[someProp]; // \"Some Value\"
", "Here is one more:", - "
var myDog = \"Hunter\";
var dogs = {
Fido: \"Mutt\",\n Hunter: \"Doberman\",\n Snoopie: \"Beagle\"
}
var breed = dogs[myDog]; // \"Hunter\"
console.log(breed)// \"Doberman\"
", + "
var myDog = \"Hunter\";
var dogs = {
Fido: \"Mutt\",\n Hunter: \"Doberman\",\n Snoopie: \"Beagle\"
}
var breed = dogs[myDog];
console.log(breed);// \"Doberman\"
", "Note that we do not use quotes around the variable name when using it to access the property because we are using the value of the variable, not the name", "

Instructions

", "Use the playerNumber variable to lookup player 16 in testObj using bracket notation." @@ -4887,7 +4887,7 @@ "title": "Profile Lookup", "description": [ "We have an array of objects representing different people in our contacts lists.", - "A lookUp function that takes firstName and a property (prop) as arguments has been pre-written for you.", + "A lookUpProfile function that takes firstName and a property (prop) as arguments has been pre-written for you.", "The function should check if firstName is an actual contact's firstName and the given property (prop) is a property of that contact.", "If both are true, then return the \"value\" of that property.", "If firstName does not correspond to any contacts then return \"No such contact\"", @@ -5031,7 +5031,7 @@ "tests": [ "assert(typeof randomWholeNum() === \"number\" && (function(){var r = randomWholeNum();return Math.floor(r) === r;})(), 'message: The result of randomWholeNum should be a whole number.');", "assert(code.match(/Math.random/g).length > 1, 'message: You should be using Math.random to generate a random number.');", - "assert(code.match(/\\(\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?\\*\\s*?10\\s*?\\)/g) || code.match(/\\(\\s*?10\\s*?\\*\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?\\)/g), 'message: You should have multiplied the result of Math.random by 10 to make it a number that is between zero and nine.');", + "assert(code.match(/\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?\\*\\s*?10\\s*?/g) || code.match(/\\s*?10\\s*?\\*\\s*?Math.random\\s*?\\(\\s*?\\)\\s*?/g), 'message: You should have multiplied the result of Math.random by 10 to make it a number that is between zero and nine.');", "assert(code.match(/Math.floor/g).length > 1, 'message: You should use Math.floor to remove the decimal part of the number.');" ], "type": "waypoint", diff --git a/seed/challenges/01-front-end-development-certification/basic-ziplines.json b/seed/challenges/01-front-end-development-certification/basic-ziplines.json index 05d03fb5a8..1e141c0d41 100644 --- a/seed/challenges/01-front-end-development-certification/basic-ziplines.json +++ b/seed/challenges/01-front-end-development-certification/basic-ziplines.json @@ -146,7 +146,7 @@ "User Story: I can click on a link that will take me to an external website with further information on the topic.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "releasedOn": "January 1, 2016", "challengeSeed": [ @@ -196,7 +196,7 @@ "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'>.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "V72o34gY4Lw" diff --git a/seed/challenges/01-front-end-development-certification/front-end-development-certificate.json b/seed/challenges/01-front-end-development-certification/front-end-development-certificate.json index 680ad572df..4284162d8e 100644 --- a/seed/challenges/01-front-end-development-certification/front-end-development-certificate.json +++ b/seed/challenges/01-front-end-development-certification/front-end-development-certificate.json @@ -14,19 +14,19 @@ "" ], [ - "//i.imgur.com/HArFfMN.jpg", + "//i.imgur.com/uLPsUko.jpg", "The definition of plagiarism: Plagiarism (noun) - copying someone else’s work and presenting it as your own without crediting them", "By clicking below, you pledge that all of your submitted code A) is code you or your pair personally wrote, or B) comes from open source libraries like jQuery, or C) has been clearly attributed to its original authors. You also give us permission to audit your challenge solutions and revoke your certificate if we discover evidence of plagiarism.", "#" ], [ - "//i.imgur.com/14F2Van.jpg", + "//i.imgur.com/UedoV2G.jpg", "An image of the text \"Front End Development Certificate requirements\"", "Let's confirm that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. Click the button below to verify this.", "#" ], [ - "//i.imgur.com/16SIhHO.jpg", + "//i.imgur.com/Q5Za9U6.jpg", "An image of the word \"Congratulations\"", "Congratulations! We've added your Front End Development Certificate to your portfolio page. Unless you choose to hide your solutions, this certificate will remain publicly visible and verifiable.", "" diff --git a/seed/challenges/01-front-end-development-certification/gear-up-for-success.json b/seed/challenges/01-front-end-development-certification/gear-up-for-success.json index e3afeccda9..6373ca8c56 100644 --- a/seed/challenges/01-front-end-development-certification/gear-up-for-success.json +++ b/seed/challenges/01-front-end-development-certification/gear-up-for-success.json @@ -44,49 +44,97 @@ "LinkedIn erkennt Free Code Camp als Universität an. Du bekommst auf unser großes Alumni Netzwerk zugriff, indem du Free Code Camp zum Ausbildungsbereich deines LinkedIn Profils hinzufügst. Setze deinen Abschlusszeitpunkt auf das nächste Jahr. In das Feld \"Abschluss\" schreibe \"Full Stack Web Development Certification\". In das Feld \"Studienfach\" schreibe \"Computer Software Engineering\". Dann klicke auf den \"Speichern\" Button.", "https://www.linkedin.com/profile/edit-education?school=Free+Code+Camp" ] - ] + ] }, { - "id": "560adc65cb82ac38a17513c2", - "title": "Join our Subreddit", + "id": "573c96eac9a6be092d7830c1", + "title": "Join our Forum", "description": [ [ - "//i.imgur.com/DYjJuCG.gif", - "A gif showing how you can create a Reddit account and join Free Code Camp's subreddit.", - "Our community has its own subreddit on Reddit. This is a convenient way to ask questions and share links with our entire community. If you don't already have a Reddit account, you can create one in a few seconds - you don't even need an email address. Then you can click the \"subscribe\" button to join our subreddit. You may also want to subscribe to some of the other subreddits listed in our sidebar.", - "https://reddit.com/r/freecodecamp" + "//i.imgur.com/y0XxmxQ.gif", + "A gif showing how you can join Free Code Camp's forum by clicking the \"sign up\" button, authenticating using GitHub, and verifying your email address.", + "Our forum is the best place for deep discussions about various programming resources: books, online courses, coding events, and more. You can also get help with these resources from your fellow campers. Click the button below to open up our forum, then click the \"Sign up\" button. Once you've created an account using GitHub, you'll need to confirm your email address. Now you're able to join discussions on our forum!", + "//forum.freecodecamp.com/" + ], + [ + "//i.imgur.com/GxCpl7x.gif", + "A gif showing how you can upload your profile picture.", + "We recommend that you also add a custom profile picture of your face. You can do this in the settings section of the forum.", + "" + ], + [ + "//i.imgur.com/Gop2PmJ.gif", + "A gif showing how you can introduce yourself on our self introduction forum thread.", + "You can make your first forum post right now by clicking the button below to go to the introduction thread. You can reply to the original post with: who you are, why you're learning to code, and how you've been learning to code so far. Then feel free to explore the various discussions and jump in with your own thoughts.", + "//forum.freecodecamp.com/t/welcome-please-introduce-yourself-here/1082" ] ], - "releasedOn": "February 10, 2016", + "releasedOn": "May 17, 2016", "challengeSeed": [], "tests": [], "type": "Waypoint", "challengeType": 7, - "titleEs": "Unete a nuestro Subreddit", + "titleEs": "Join our Forum", "descriptionEs": [ [ - "//i.imgur.com/DYjJuCG.gif", - "Un gif mostrando como puedes crear una cuenta de Reddit y unirte a Free Code Camp subreddit.", - "Nuestra comunidad tiene su propio subreddit en Reddit. Esta es una manera conveniente de hacer preguntas y compartir enlaces con toda nuestra comunidad. Si aún no dispones de una cuenta de Reddit, puedes crear una en unos segundos - ni siquiera necesitas una dirección de correo electrónico. A continuación, puedes pulsar el botón \"subscribe\" para unirte a nuestro subreddit. También puedes suscribirte a otros subreddits que estan listados en la barra lateral.", - "https://reddit.com/r/freecodecamp" + "//i.imgur.com/y0XxmxQ.gif", + "A gif showing how you can join Free Code Camp's forum by clicking the \"sign up\" button, authenticating using GitHub, and verifying your email address.", + "Our forum is the best place for deep discussions about various programming resources: books, online courses, coding events, and more. You can also get help with these resources from your fellow campers. Click the button below to open up our forum, then click the \"Sign up\" button. Once you've created an account using GitHub, you'll need to confirm your email address. Now you're able to join discussions on our forum!", + "//forum.freecodecamp.com/" + ], + [ + "//i.imgur.com/GxCpl7x.gif", + "A gif showing how you can upload your profile picture.", + "We recommend that you also add a custom profile picture of your face. You can do this in the settings section of the forum.", + "" + ], + [ + "//i.imgur.com/Gop2PmJ.gif", + "A gif showing how you can introduce yourself on our self introduction forum thread.", + "You can make your first forum post right now by clicking the button below to go to the introduction thread. You can reply to the original post with: who you are, why you're learning to code, and how you've been learning to code so far. Then feel free to explore the various discussions and jump in with your own thoughts.", + "//forum.freecodecamp.com/t/welcome-please-introduce-yourself-here/1082" ] ], - "titleFr": "Rejoignez notre Subreddit", + "titleFr": "Join our Forum", "descriptionFr": [ [ - "//i.imgur.com/DYjJuCG.gif", - "Une gif montrant la procédure de création d’un compte sur Reddit et comment rejoindre le subreddit de Free Code Camp", - "Notre communauté à son propre subreddit sur Reddit. C’est un espace où tu peux poser des questions ou partager des liens avec la communauté. Si tu n’as pas encore un compte sur Reddit, tu peux créer un dans quelque secondes – tu n’as pas besoin d’une adresse mail. Tu peux cliquer après sur le bouton \"subscribe\" pour rejoindre notre subreddit. Tu peux rejoindre d’autre subreddits listés dans la sidebar.", - "https://reddit.com/r/freecodecamp" + "//i.imgur.com/y0XxmxQ.gif", + "A gif showing how you can join Free Code Camp's forum by clicking the \"sign up\" button, authenticating using GitHub, and verifying your email address.", + "Our forum is the best place for deep discussions about various programming resources: books, online courses, coding events, and more. You can also get help with these resources from your fellow campers. Click the button below to open up our forum, then click the \"Sign up\" button. Once you've created an account using GitHub, you'll need to confirm your email address. Now you're able to join discussions on our forum!", + "//forum.freecodecamp.com/" + ], + [ + "//i.imgur.com/GxCpl7x.gif", + "A gif showing how you can upload your profile picture.", + "We recommend that you also add a custom profile picture of your face. You can do this in the settings section of the forum.", + "" + ], + [ + "//i.imgur.com/Gop2PmJ.gif", + "A gif showing how you can introduce yourself on our self introduction forum thread.", + "You can make your first forum post right now by clicking the button below to go to the introduction thread. You can reply to the original post with: who you are, why you're learning to code, and how you've been learning to code so far. Then feel free to explore the various discussions and jump in with your own thoughts.", + "//forum.freecodecamp.com/t/welcome-please-introduce-yourself-here/1082" ] ], - "titleDe": "Tritt unserem Subreddit bei", + "titleDe": "Join our Forum", "descriptionDe": [ [ - "//i.imgur.com/DYjJuCG.gif", - "Ein GIF, das dir zeigt, wie du einen Reddit Account anlegen und unserem Free Code Camp Subreddit beitreten kannst.", - "Unsere Community hat ihr eigenes Subreddit auf Reddit. Das ist eine sehr praktische Art und Weise, um Fragen zu stellen und Links mit unserer gesamten Community zu teilen. Wenn du noch keinen Reddit Account hast, kannst du einen in wenigen Sekunden erstellen - du brauchst nicht mal eine E-Mail Adresse. Dann kannst du den \"subscribe\" Button klicken, um unserem Subreddit beizutreten. Wenn du willst, kannst du auch jenen Subreddits folgen, die wir in unserer Sidebar gelistet haben.", - "https://reddit.com/r/freecodecamp" + "//i.imgur.com/y0XxmxQ.gif", + "A gif showing how you can join Free Code Camp's forum by clicking the \"sign up\" button, authenticating using GitHub, and verifying your email address.", + "Our forum is the best place for deep discussions about various programming resources: books, online courses, coding events, and more. You can also get help with these resources from your fellow campers. Click the button below to open up our forum, then click the \"Sign up\" button. Once you've created an account using GitHub, you'll need to confirm your email address. Now you're able to join discussions on our forum!", + "//forum.freecodecamp.com/" + ], + [ + "//i.imgur.com/GxCpl7x.gif", + "A gif showing how you can upload your profile picture.", + "We recommend that you also add a custom profile picture of your face. You can do this in the settings section of the forum.", + "" + ], + [ + "//i.imgur.com/Gop2PmJ.gif", + "A gif showing how you can introduce yourself on our self introduction forum thread.", + "You can make your first forum post right now by clicking the button below to go to the introduction thread. You can reply to the original post with: who you are, why you're learning to code, and how you've been learning to code so far. Then feel free to explore the various discussions and jump in with your own thoughts.", + "//forum.freecodecamp.com/t/welcome-please-introduce-yourself-here/1082" ] ] }, @@ -243,7 +291,7 @@ "Du kannst dir ein Ziel setzen und versprechen, einer gemeinnützigen Organisation eine monatliche Spende zu entrichten, bis du dieses Ziel erreicht hast. Das gibt dir externe Motivation in deinem Bestreben programmieren zu lernen - und eröffnet von Anfang an die Gelegenheit gemeinnützigen Organisationen zu helfen. Wähle dein Ziel und dann eine monatliche Spende. Wenn du auf \"verpflichten\" klickst, öffnet sich die Spendenseite der gemeinnützigen Organisation in einem neuen Tab. Dieser Schritt ist optional, du kannst deine Verpflichtung jederzeit ändern oder stoppen.", "/verpflichten" ] - ] + ] } ] -} \ No newline at end of file +} diff --git a/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json b/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json index 16285f3745..08d700480f 100644 --- a/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json +++ b/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json @@ -15,7 +15,7 @@ "User Story: I can press a button to tweet out a quote.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "a5RknIzoDrs" @@ -63,7 +63,7 @@ "We recommend using the Open Weather API. This will require creating a free API key. Normally you want to avoid exposing API keys on CodePen, but we haven't been able to find a keyless API for weather.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "GCLiJU-vvVc" @@ -115,7 +115,7 @@ "Hint #3: Use this link to experiment with Wikipedia's API.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "wJhcPwVYA1g" @@ -153,12 +153,12 @@ "User Story: I can click the status output and be sent directly to the Free Code Camp's Twitch.tv channel.", "User Story: if a Twitch user is currently streaming, I can see additional details about what they are streaming.", "User Story: I will see a placeholder notification if a streamer has closed their Twitch account (or the account never existed). You can verify this works by adding brunofin and comster404 to your array of Twitch streamers.", - "Hint: See an example call to Twitch.tv's JSONP API at https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Front-End-Project-Use-the-Twitchtv-JSON-API.", + "Hint: See an example call to Twitch.tv's JSONP API at https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Front-End-Project-Use-Twitchtv-JSON-API.", "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\",\"thomasballinger\",\"noobs2ninjas\",\"beohoff\"]", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "6WrbY1d-IHI" diff --git a/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json b/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json index ed4c4eba3a..6853ddd698 100644 --- a/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json +++ b/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json @@ -10,10 +10,10 @@ "description": [ "In this section, we'll learn how to get data from APIs. APIs - or Application Programming Interfaces - are tools that computers use to communicate with one another.", "We'll also learn how to update HTML with the data we get from these APIs using a technology called Ajax.", - "First, let's review what the $(document).ready() function does. This function makes it so all code inside of it only runs once our page loads.", - "Let's make our \"Get Message\" button change the text of the element with the class message.", - "Before we can do this, we need to implement a click event inside of our $(document).ready() function by adding this code:", - "
$(\"#getMessage\").on(\"click\", function(){

});
" + "First, let's review what the $(document).ready() function does. This function runs such that all of the code inside of it executes only once our page has finished loading.", + "So Let's start by implementing a click event handler inside of our $(document).ready() function by adding this code:", + "
$(\"#getMessage\").on(\"click\", function(){

});
", + "After completing this, proceed to the next challenge where we will make our \"Get Message\" button change the text of the element with the class message." ], "challengeSeed": [ "fccss", diff --git a/seed/challenges/02-data-visualization-certification/data-visualization-projects.json b/seed/challenges/02-data-visualization-certification/data-visualization-projects.json index e0aea41650..5b6055f77e 100644 --- a/seed/challenges/02-data-visualization-certification/data-visualization-projects.json +++ b/seed/challenges/02-data-visualization-certification/data-visualization-projects.json @@ -17,7 +17,7 @@ "Hint: Here's a dataset you can use to build this: https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "nss_5sZpjIE" @@ -54,7 +54,7 @@ "Hint: Here's a dataset you can use to build this: https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/cyclist-data.json", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "barVgJDnTMk" @@ -92,7 +92,7 @@ "Hint: Here's a dataset you can use to build this: https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/global-temperature.json", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "TVJr7ndWAYo" @@ -133,7 +133,7 @@ "Hint: Here's the Camper News Hot Stories API endpoint: https://www.freecodecamp.com/news/hot.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "etBaP3IdlIE" @@ -174,7 +174,7 @@ "Hint: Here's a dataset you can use to build this: https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/meteorite-strike-data.json", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "kSAqct10gA0" diff --git a/seed/challenges/02-data-visualization-certification/react-projects.json b/seed/challenges/02-data-visualization-certification/react-projects.json index f01505ca48..184c96e289 100644 --- a/seed/challenges/02-data-visualization-certification/react-projects.json +++ b/seed/challenges/02-data-visualization-certification/react-projects.json @@ -18,7 +18,7 @@ "Note: If you want to use the React JSX syntax, you need to enable 'Babel' as a preprocessor", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "releasedOn": "January 1, 2016", "challengeSeed": [ @@ -72,7 +72,7 @@ "Hint: To get the top 100 campers of all time: https://fcctop100.herokuapp.com/api/fccusers/top/alltime.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "releasedOn": "January 1, 2016", "challengeSeed": [ @@ -130,7 +130,7 @@ "Hint: You should prefix your local storage keys on CodePen, i.e. _username_recipes", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "releasedOn": "January 1, 2016", "challengeSeed": [ @@ -191,7 +191,7 @@ "Hint: Here's an overview of Conway's Game of Life with rules for your reference: https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "releasedOn": "January 1, 2016", "challengeSeed": [ @@ -257,7 +257,7 @@ "User Story: The game should be challenging, but theoretically winnable.", "Remember to use Read-Search-Ask if you get stuck.", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "releasedOn": "January 1, 2016", "challengeSeed": [ diff --git a/seed/challenges/03-back-end-development-certification/api-projects.json b/seed/challenges/03-back-end-development-certification/api-projects.json index d945d86e89..deedb1f931 100644 --- a/seed/challenges/03-back-end-development-certification/api-projects.json +++ b/seed/challenges/03-back-end-development-certification/api-projects.json @@ -197,7 +197,7 @@ "User Story: If it does, it returns both the Unix timestamp and the natural language form of that date.", "User Story: If it does not contain a date or Unix timestamp, it returns null for those properties.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "gj4eL6satjI" @@ -228,7 +228,7 @@ "Here's the specific user story you should implement for this project:", "User Story: I can get the IP address, language and operating system for my browser.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "0oqjSkGoHg" @@ -260,7 +260,7 @@ "User Story: When I visit that shortened URL, it will redirect me to my original link.", "Pro Tip: Checkout this wiki article for tips on integrating MongoDB on Heroku.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "B-gY9nAtPIw" @@ -293,7 +293,7 @@ "User Story: I can paginate through the responses by adding a ?offset=2 parameter to the URL.", "User Story: I can get a list of the most recently submitted search strings.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "QIpA1oP8EGQ" @@ -326,7 +326,7 @@ "User Story: When I submit something, I will receive the file size in bytes within the JSON response", "Hint: You may want to use this package: https://www.npmjs.com/package/multer", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "w_W2-VOgy9g" diff --git a/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json b/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json index 033e7d6692..c930279da6 100644 --- a/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json +++ b/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json @@ -20,7 +20,7 @@ "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.)", "User Story: As an authenticated user, if I don't like the options on a poll, I can create a new option.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "JBKnbY_fdg4" @@ -59,7 +59,7 @@ "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 use Yelp's API, be sure to mention so in your app.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "Gei7QfPmcMw" @@ -94,7 +94,7 @@ "User Story: I can remove stocks.", "User Story: I can see changes in real-time when any other user adds or removes a stock. For this you will need to use Web Sockets.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "CENs50cnRgM" @@ -128,7 +128,7 @@ "User Story: I can update my settings to store my full name, city, and state.", "User Story: I can propose a trade and wait for the other user to accept the trade.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "mzElFmbGqQI" @@ -165,7 +165,7 @@ "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.", "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.", - "You can get feedback on your project from fellow campers by sharing it in our Code Review Chatroom. You can also share it on Twitter and your city's Campsite (on Facebook)." + "You can get feedback on your project by sharing it with your friends on Facebook." ], "challengeSeed": [ "adrOtJCVP04" diff --git a/server/boot/randomAPIs.js b/server/boot/randomAPIs.js index 8de1503c69..81d70760c2 100644 --- a/server/boot/randomAPIs.js +++ b/server/boot/randomAPIs.js @@ -1,6 +1,5 @@ import request from 'request'; import constantStrings from '../utils/constantStrings.json'; -import labs from '../resources/labs.json'; import testimonials from '../resources/testimonials.json'; import secrets from '../../config/secrets'; @@ -8,8 +7,6 @@ module.exports = function(app) { const router = app.loopback.Router(); const User = app.models.User; router.get('/api/github', githubCalls); - router.get('/api/blogger', bloggerCalls); - router.get('/api/trello', trelloCalls); router.get('/chat', chat); router.get('/coding-bootcamp-cost-calculator', bootcampCalculator); router.get('/twitch', twitch); @@ -23,7 +20,6 @@ module.exports = function(app) { router.get('/unsubscribed', unsubscribed); router.get('/get-started', getStarted); router.get('/submit-cat-photo', submitCatPhoto); - router.get('/labs', showLabs); router.get('/stories', showTestimonials); router.get('/shop', showShop); router.get('/shop/cancel-stickers', cancelStickers); @@ -45,13 +41,6 @@ module.exports = function(app) { res.redirect('https://gitter.im/FreeCodeCamp/FreeCodeCamp'); } - function showLabs(req, res) { - res.render('resources/labs', { - title: 'Projects Built by Free Code Camp Software Engineers', - projects: labs - }); - } - function terms(req, res) { res.render('resources/terms-of-service', { title: 'Terms of Service' @@ -294,34 +283,4 @@ module.exports = function(app) { } ); } - - function trelloCalls(req, res, next) { - request( - 'https://trello.com/1/boards/BA3xVpz9/cards?key=' + - secrets.trello.key, - function(err, status, trello) { - if (err) { return next(err); } - trello = (status && status.statusCode === 200) ? - (JSON.parse(trello)) : - 'Can\'t connect to to Trello'; - - return res.end(JSON.stringify(trello)); - }); - } - - function bloggerCalls(req, res, next) { - request( - 'https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/' + - 'posts?key=' + - secrets.blogger.key, - function(err, status, blog) { - if (err) { return next(err); } - - blog = (status && status.statusCode === 200) ? - JSON.parse(blog) : - 'Can\'t connect to Blogger'; - return res.end(JSON.stringify(blog)); - } - ); - } }; diff --git a/server/config.development.js b/server/config.development.js index d7df882ace..5d197a8a1f 100644 --- a/server/config.development.js +++ b/server/config.development.js @@ -2,15 +2,6 @@ module.exports = { host: '127.0.0.1', sessionSecret: process.env.SESSION_SECRET, - trello: { - key: process.env.TRELLO_KEY, - secret: process.env.TRELLO_SECRET - }, - - blogger: { - key: process.env.BLOGGER_KEY - }, - github: { clientID: process.env.GITHUB_ID, clientSecret: process.env.GITHUB_SECRET diff --git a/server/config.local.js b/server/config.local.js index 9b9fc132d6..3a5a95a441 100644 --- a/server/config.local.js +++ b/server/config.local.js @@ -4,15 +4,6 @@ module.exports = { restApiRoot: globalConfig.restApi, sessionSecret: process.env.SESSION_SECRET, - trello: { - key: process.env.TRELLO_KEY, - secret: process.env.TRELLO_SECRET - }, - - blogger: { - key: process.env.BLOGGER_KEY - }, - github: { clientID: process.env.GITHUB_ID, clientSecret: process.env.GITHUB_SECRET diff --git a/server/production-start.js b/server/production-start.js index 53266e0747..75039f64b2 100644 --- a/server/production-start.js +++ b/server/production-start.js @@ -18,9 +18,9 @@ var onConnect = function() { var timeoutHandler = setTimeout(function() { var message = - 'db did not after ' + + 'db did not connect after ' + (Date.now() - startTime) + - ' ms connect crashing hard'; + ' ms --- crashing hard'; console.log(message); // purposely shutdown server diff --git a/server/resources/labs.json b/server/resources/labs.json deleted file mode 100644 index f37dff5aac..0000000000 --- a/server/resources/labs.json +++ /dev/null @@ -1,65 +0,0 @@ -[ - { - "camper": "johnstonbl01", - "name": "Clementine.js", - "url": "http://johnstonbl01.github.io/clementinejs/", - "description": "The elegant and lightweight boilerplate for full stack JavaScript.", - "image": "//i.imgur.com/ib1wOho.png" - }, - { - "camper": "adventurebear", - "name": "Coding Bootcamp Cost Calculator", - "url": "http://www.freecodecamp.com/coding-bootcamp-cost-calculator", - "description": "This d3.js-powered coding bootcamp cost calculator takes into account tuition, financing, lost wages and cost of living.", - "image": "https://qph.is.quoracdn.net/main-qimg-670d6a0c5b01f74138e777732994240f?convert_to_webp=true" - }, - { - "camper": "martoncsikos", - "name": "Skill.bar", - "url": "http://www.skill.bar", - "description": "Learn. Gain points. Visualize your skills.", - "image": "//i.imgur.com/URkqqb5.png" - }, - { - "camper": "ericdouglas", - "name": "Open Source Society", - "url": "https://github.com/open-source-society/computer-science", - "description": "A path to a free education in Computer Science.", - "image": "https://camo.githubusercontent.com/c42438055d3fee26b29e6d046fd8d06ebff3db20/687474703a2f2f692e696d6775722e636f6d2f6838786a72726a2e706e67" - }, - { - "camper": "akiralaine", - "name": "Musare", - "url": "http://musare.com/", - "description": "Musare is a modern, collaborative, open-source Music App.", - "image": "//i.imgur.com/Y4D4MPL.png" - }, - { - "camper": "bighitbiker3", - "name": "Queue That", - "url": "http://queuethat.com/", - "description": "An app that uses the SoundCloud API in order to make temporary, running playlists.", - "image": "https://www.evernote.com/l/AqSy_bYAZ0dOiJnn4CfNgo09DOSTUX1IADIB/image.png" - }, - { - "camper": "storbeck", - "name": "Free Code Camp Event Zipline: Recipe Box", - "url": "http://codepen.io/GeoffStorbeck/full/bVKyzd/", - "description": "Try to reverse engineer this Recipe Box as an optional Zipline challenge.", - "image": "//i.imgur.com/5o0bwVQ.png" - }, - { - "camper": "akiralaine", - "name": "Camper News Bot", - "url": "https://twitter.com/campernewsbot", - "description": "This twitter bot tweets out Camper News stories once they hit 5 upvotes.", - "image": "https://pbs.twimg.com/media/CLXOFLPWIAEHYPJ.png" - }, - { - "camper": "roelver", - "name": "Free Code Camp Top 100 Campers", - "url": "http://fcctop100.herokuapp.com/", - "description": "This leaderboard tracks the campers who have been most active (completing challenges, helping other campers) in the past 30 days.", - "image": "//i.imgur.com/4CrQfFi.png" - } -] \ No newline at end of file diff --git a/server/views/challenges/showBonfire.jade b/server/views/challenges/showBonfire.jade index 6bb918d579..bb7bc6b33e 100644 --- a/server/views/challenges/showBonfire.jade +++ b/server/views/challenges/showBonfire.jade @@ -75,9 +75,6 @@ block content .row if (user) #submit-challenge.animated.fadeIn.btn.btn-lg.btn-primary.btn-block Submit and go to my next challenge (ctrl + enter) - a.btn.btn-lg.btn-block.btn-twitter(target="_blank", href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/challenges/#{dashedName}&hashtags=LearnToCode, JavaScript", onclick="ga('send', 'event', 'twitter', 'share', 'challenge completion share');") - i.fa.fa-twitter   - = phrase else a#next-challenge.btn.btn-lg.btn-primary.btn-block(href="/challenges/next-challenge?id="+id) Go to my next challenge (ctrl + enter) include ../partials/challenge-modals diff --git a/server/views/challenges/showStep.jade b/server/views/challenges/showStep.jade index 732c0fb988..db48aa898e 100644 --- a/server/views/challenges/showStep.jade +++ b/server/views/challenges/showStep.jade @@ -13,7 +13,10 @@ block content p.challenge-step-description!= step[2] .spacer .challenge-button-block - if step[3] + if step[3] == '#' + a.btn.btn-block.btn-primary.challenge-step-btn-action.btn-lg(id='#{index}' href='#{step[3]}' target='_blank') Confirm + .button-spacer + else if step[3] a.btn.btn-block.btn-primary.challenge-step-btn-action.btn-lg(id='#{index}' href='#{step[3]}' target='_blank') Open link in new tab (this unlocks the next step) .button-spacer if index === 0 diff --git a/server/views/challenges/showZiplineOrBasejump.jade b/server/views/challenges/showZiplineOrBasejump.jade index 04dd8d01d7..605d0a9fa4 100644 --- a/server/views/challenges/showZiplineOrBasejump.jade +++ b/server/views/challenges/showZiplineOrBasejump.jade @@ -60,9 +60,6 @@ block content if (user) a.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) Submit and go to my next challenge - .button-spacer - a.btn.btn-lg.btn-block.btn-twitter(target="_blank", href="https://twitter.com/intent/tweet?text=Check%20out%20the%20project%20I%20just%20built%20with%20%40FreeCodeCamp:%20PASTE_YOUR_CODEPEN_URL_HERE_USING_FULL_INSTEAD_OF_PEN%20%0A%20%23LearnToCode%20%23JavaScript", onclick="ga('send', 'event', 'twitter', 'share', 'challenge completion share');") - i.fa.fa-twitter  Tweet this project else a.btn.btn-lg.btn-primary.btn-block(href='/challenges/next-challenge?id=' + id) Go to my next challenge diff --git a/server/views/partials/navbar.jade b/server/views/partials/navbar.jade index bb495e099a..2f808d5a94 100644 --- a/server/views/partials/navbar.jade +++ b/server/views/partials/navbar.jade @@ -19,6 +19,8 @@ nav.navbar.navbar-default.navbar-fixed-top.nav-height a#nav-wiki-btn(href='/wiki' onclick='if (!(event.ctrlKey || event.metaKey)) {return false;}') Wiki li.visible-xs a(href='/wiki', target='_blank') Wiki + li + a(href='//forum.freecodecamp.com', target='_blank') Forum li a(href='/about') About li diff --git a/server/views/resources/about.jade b/server/views/resources/about.jade index 86f724833d..6f23f9b1ed 100644 --- a/server/views/resources/about.jade +++ b/server/views/resources/about.jade @@ -58,11 +58,6 @@ block content i.fa.fa-youtube td a(href="//youtube.com/freecodecamp", target='_blank') Our YouTube channel - tr - td.text-center - i.fa.fa-reddit - td - a(href="//www.reddit.com/r/freecodecamp", target='_blank') Our Subreddit tr td.text-center i.fa.fa-github @@ -83,6 +78,11 @@ block content i.fa.fa-facebook td a(href="//facebook.com/freecodecamp") Our Facebook page + tr + td.text-center + i.fa.fa-reddit + td + a(href="//www.reddit.com/r/freecodecamp", target='_blank') Our Subreddit tr td.text-center i.fa.fa-lock @@ -158,7 +158,7 @@ block content

Do I have to use CodePen for the front end projects?

As long as your code is publicly viewable, and you have a live demo, you can use whatever you want.

When will you release the additional React, Sass, and D3 challenges?

-

We’ll release these in Spring 2016. In the meantime, other people have completed our React/Sass and D3 projects by referencing their official documentation.

+

We’ll release these in Summer 2016. In the meantime, other people have completed our React/Sass and D3 projects by referencing their official documentation.

How can I hire Free Code Camp alumni?

You can reach out to them through our alumni network.

How did Free Code Camp get started?

diff --git a/server/views/resources/code-of-conduct.jade b/server/views/resources/code-of-conduct.jade index 4fd01f03ad..2b3efed609 100644 --- a/server/views/resources/code-of-conduct.jade +++ b/server/views/resources/code-of-conduct.jade @@ -4,27 +4,22 @@ block content h1.text-center Code of Conduct hr p - | Free Code Camp is friendly place to learn to code. We’re committed to keeping it that way. + | Free Code Camp is a friendly place to learn to code. We’re committed to keeping it that way. p - | All campers are required to agree with the following code of conduct. We’ll enforce this code. We’re expecting cooperation from all campers in ensuring a friendly environment for everybody. - p In short: be nice to your fellow campers. - p Remember these 3 things and your fellow campers will like you: - ol - li Compliment your fellow campers when they do good work. Congratulate them when they accomplish something (like completing one of our certifications or getting a job). - li Critique the work, not the camper doing it. - li Only argue about something if it’s important to the greater discussion. + | All campers are required to agree to and follow this code of conduct. + p + | In short: Be nice. No harassment, Trolling, or Spamming. + ul + li Harassment includes sexual language and imagery, deliberate intimidation, stalking, unwelcome sexual attention, libel and any malicious hacking or social engineering. Free Code Camp should be a harassment-free experience for everyone,regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, national origin, or religion (or lack thereof). + li Trolling includes posting inflamitory comments to provoke an emotional response or disrupt discussions. + li Spamming includes posting off-topic messages to disrupt discussions or promote a product. p - | Free Code Camp should be a harassment-free experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, national origin, or religion (or lack thereof). - p - | We do not tolerate harassment of campers in any form, anywhere on Free Code Camp’s online media (Gitter, Twitch, Facebook, etc.) or during pair programming. Harassment includes sexual language and imagery, deliberate intimidation, stalking, unwelcome sexual attention, libel, and any malicious hacking or social engineering. - p - | If a camper engages in harassing behavior, our team will take any action we deem appropriate, up to and including banning them from Free Code Camp. - p - | No bots are allowed in any of the Official Chat Rooms without prior explicit permission from the FCC Core Team. - p - | We want everyone to feel safe and respected. If you are being harassed or notice that someone else is being harassed, say something! Go to our   + | If you see someone harass, troll, or spam anywhere on Free Code Camp's online media (Gitter, YouTube, Facebook, etc.), notify us in our   a(href='https://gitter.im/freecodecamp/admin' target='_blank') Admin room in Gitter - |   and explain what has happened where (preferably with a screen shot of the offending language) so we can take fast action. + |   - preferably with a screen shot of the offense. Our team will take any action we deem appropriate, up to and including banning the offender from Free Code Camp. + p + | Also, no bots are allowed in any of our Official Chat Rooms without prior written permission from the   + a(href='https://gitter.im/FreeCodeCamp/CoreTeam' target="_blank") Free Code Camp's Core Team. p | If you have questions about this code of conduct, email us at  a(href='mailto:team@freecodecamp.com') team@freecodecamp.com diff --git a/server/views/resources/labs.jade b/server/views/resources/labs.jade deleted file mode 100644 index b449bf3101..0000000000 --- a/server/views/resources/labs.jade +++ /dev/null @@ -1,17 +0,0 @@ -extends ../layout -block content - h2.text-center Projects Created by Free Code Camp Campers - hr - .row - .col-xs-12.col-sm-10.col-sm-offset-1 - for project in projects - .spacer - .row - .col-xs-12.col-sm-3 - img.img-responsive(src=project.image) - .col-xs-12.col-sm-9.negative-15 - h3 - a(href=project.url) #{project.name} - h4 by  - a(href='/' + project.camper) #{project.camper} - p= project.description \ No newline at end of file diff --git a/server/views/resources/links.jade b/server/views/resources/links.jade deleted file mode 100644 index 269382fab2..0000000000 --- a/server/views/resources/links.jade +++ /dev/null @@ -1,54 +0,0 @@ -extends ../layout -block content - table.table.link-table - tr - td.text-right - .ion-erlenmeyer-flask - td - a(href="/labs") Cool Apps Built by Campers - tr - td.text-right - .ion-chatbox - td - a(href="/stories") Stories from Campers - tr - td.text-right - .ion-speakerphone - td - a(href='//medium.freecodecamp.com', target='_blank') Medium Publication - tr - td.text-right - .ion-social-github - td - a(href="//github.com/freecodecamp", target='_blank') GitHub Repository - tr - td.text-right - .ion-social-reddit - td - a(href="//www.reddit.com/r/freecodecamp", target='_blank') Subreddit - tr - td.text-right - .ion-social-linkedin - td - a(href="//www.linkedin.com/edu/school?id=166029", target='_blank') LinkedIn University Page - tr - td.text-right - .ion-social-twitter - td - a(href="//twitter.com/freecodecamp", target='_blank') Twitter Feed - tr - td.text-right - .ion-social-facebook - td - a(href="//facebook.com/freecodecamp") Facebook Page - tr - td.text-right - .ion-social-twitch-outline - td - a(href="//twitch.tv/freecodecamp", target='_blank') Twitch.tv Channel - tr - td.text-right - .ion-locked - td - a(href="//github.com/FreeCodeCamp/freecodecamp/wiki/Free-Code-Camp's-Privacy-Policy") Privacy Policy - .spacer diff --git a/server/views/resources/shop.jade b/server/views/resources/shop.jade index 7529ad0f14..86a2bf9643 100644 --- a/server/views/resources/shop.jade +++ b/server/views/resources/shop.jade @@ -2,28 +2,6 @@ extends ../layout block content h1.text-center Shop hr - .row - .col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3.text-center - img.img-responsive.img-center(src='//i.imgur.com/GzpUBR5.jpg') - h3 Women's fitted black t-shirt - h4 Only $19.99! - p This high-quality American Apparel t-shirt will help you look like the fantastic developer you are. - .spacer - a.btn.btn-lg.signup-btn.btn-block(href='//teespring.com/free-code-camp-tshirt-black#pid=70&cid=2343&sid=front' target='_blank') Get this awesome shirt - .button-spacer - a.btn.btn-primary.btn-lg.btn-block(href='//teespring.com/black-free-code-camp-tshirt-eu#pid=375&cid=100052&sid=front' target='_blank') Get it here if you live in Europe - hr - .row - .col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3.text-center - img.img-responsive.img-center(src='//i.imgur.com/ENPVayN.jpg') - h3 Men's black t-shirt - h4 Only $19.99! - p Features Free Code Camp's classy "function call" logo. You can't have too many awesome black t-shirts! - .spacer - a.btn.btn-lg.signup-btn.btn-block(href='//teespring.com/free-code-camp-tshirt-black' target='_blank') Get this awesome shirt - .button-spacer - a.btn.btn-primary.btn-lg.btn-block(href='//teespring.com/black-free-code-camp-tshirt-eu' target='_blank') Get it here if you live in Europe - hr .row .col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3.text-center img.img-responsive.img-center(src='//i.imgur.com/MH1CvwY.jpg')