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]
[\"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\";", "Here is one more:", - "
var myObj = {
propName: \"Some Value\"
}
myObj[someProp]; // \"Some Value\"
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\";", "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", "
var dogs = {
Fido: \"Mutt\",\n Hunter: \"Doberman\",\n Snoopie: \"Beagle\"
}
var breed = dogs[myDog];
console.log(breed);// \"Doberman\"
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
As long as your code is publicly viewable, and you have a live demo, you can use whatever you want.
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.
You can reach out to them through our alumni network.