update views and add routes to app.js

This commit is contained in:
Michael Q Larson
2014-11-02 09:07:40 -08:00
parent e39dc056f9
commit de29af1e8a
50 changed files with 351 additions and 163 deletions

60
app.js
View File

@ -119,18 +119,46 @@ app.use(express.static(path.join(__dirname, 'public'), { maxAge: week }));
*/ */
app.get('/', homeController.index); app.get('/', homeController.index);
app.get('challenges/a-one-minute-introduction-to-free-code-camp', challengesController.aOneMinuteIntroToFreeCodeCamp);
app.get('/challenges/enter-the-free-code-camp-chat-room', challengesController.enterTheFreeCodeCampChatRoom);
app.get('/challenges/install-github-atom-text-editor', challengesController.installGithubAtomTextEditor);
app.get('/challenges/create-and-deploy-a-website', challengesController.createAndDeployAWebsite);
app.get('/challenges/start-a-pair-programming-session', challengesController.startAPairProgrammingSession);
app.get('/challenges/add-dynamic-content-to-your-website', challengesController.addDynamicContentToYourWebsite);
app.get('/challenges/codecademy-html-and-css-track', challengesController.codecademyHtmlAndCssTrack) app.get('/challenges/codecademy-html-and-css-track', challengesController.codecademyHtmlAndCssTrack)
app.get('/challenges/code-school-discover-devtools-course', challengesController.codeSchoolDiscoverDevtoolsCourse)
app.get('/challenges/code-school-try-jquery-course', challengesController.codeSchoolTryJqueryCourse)
app.get('/challenges/codecademy-javascript-track', challengesController.codecademyJavascriptTrack)
app.get('/challenges/harvard-introduction-to-computer-science-cs50-course', challengesController.harvardIntroductionToComputerScienceCs50Course)
app.get('/challenges/code-school-try-git-course', challengesController.codeSchoolTryGitCourse)
app.get('/challenges/code-school-real-time-with-node-js-course', challengesController.codeSchoolRealTimeWithNodeJsCourse)
app.get('/challenges/code-school-shaping-up-with-angular-js-course', challengesController.codeSchoolShapingUpWithAngularJsCourse)
app.get('/challenges/create-and-deploy-a-website', challengesController.createAndDeployAWebsite)
app.get('/challenges/add-dynamic-content-to-your-website', challengesController.addDynamicContentToYourWebsite)
app.get('/challenges/experiment-with-html-and-css-in-codepen', challengesController.experimentWithHtmlAndCssInCodepen) app.get('/challenges/experiment-with-html-and-css-in-codepen', challengesController.experimentWithHtmlAndCssInCodepen)
app.get('/challenges/start-a-pair-programming-session', challengesController.startAPairProgrammingSession) app.get('/challenges/code-school-try-jquery-course', challengesController.codeSchoolTryJqueryCourse)
app.get('/challenges/complete-jquery-exercises', challengesController.completeJqueryExercises);
app.get('/challenges/code-school-discover-devtools-course', challengesController.codeSchoolDiscoverDevtoolsCourse)
app.get('/challenges/customize-bootstrap-with-bootswatch', challengesController.customizeBootstrapWithBootswatch);
app.get('/challenges/inject-life-with-css-transformations', challengesController.injectLifeWithCssTransformations);
app.get('/challenges/codecademy-javascript-track', challengesController.codecademyJavascriptTrack)
app.get('/challenges/get-help-the-hacker-way-with-rsap', challengesController.getHelpTheHackerWayWithRsap);
app.get('/challenges/easy-algorthim-scripting-challenges-on-coderbyte', challengesController.easyAlgorithmScriptingChallengesOnCoderbyte);
app.get('/challenges/harvard-introduction-to-computer-science-cs50-course', challengesController.harvardIntroductionToComputerScienceCs50Course)
app.get('/challenges/medium-algorthim-scripting-challenges-on-coderbyte', challengesController.mediumAlgorithmScriptingChallengesOnCoderbyte);
app.get('/challenges/stanfords-relational-databases-mini-course', challengesController.stanfordsRelationalDatabasesMiniCourse);
app.get('/challenges/stanfords-json-mini-course', challengesController.stanfordsJsonMiniCourse);
app.get('/challenges/build-a-text-based-adventure', challengesController.buildATextBasedAdventure);
app.get('/challenges/hard-algorthim-scripting-challenges-on-coderbyte', challengesController.hardAlgorithmScriptingChallengesOnCoderbyte);
app.get('/challenges/stanfords-sql-mini-course', challengesController.stanfordsSqlMiniCourse);
app.get('/challenges/build-an-interview-question-machine', challengesController.buildAnInterviewQuestionMachine);
app.get('/challenges/code-school-try-git-course', challengesController.codeSchoolTryGitCourse)
app.get('/challenges/install-node-js', challengesController.installNodeJs);
app.get('/challenges/clone-a-github-repo', challengesController.cloneAGithubRepo);
app.get('/challenges/deploy-an-app-to-heroku', challengesController.deployAnAppToHeroku);
app.get('/challenges/code-school-real-time-with-node-js-course', challengesController.codeSchoolRealTimeWithNodeJsCourse)
app.get('/challenges/try-mongodb', challengesController.tryMongoDb);
app.get('/challenges/explore-your-network-with-the-linkedin-api', challengesController.exploreYourNetworkWithTheLinkedInApi);
app.get('/challenges/build-your-first-api', challengesController.buildYourFirstApi);
app.get('/challenges/aggregate-data-with-chron-jobs-and-screen-scraping', challengesController.aggregateDataWithChronJobsAndScreenScraping);
app.get('/challenges/code-school-shaping-up-with-angular-js-course', challengesController.codeSchoolShapingUpWithAngularJsCourse);
app.get('/challenges/reverse-engineer-snapchat', challengesController.reverseEngineerSnapchat);
app.get('/challenges/reverse-engineer-reddit', challengesController.reverseEngineerReddit);
app.get('/challenges/reverse-engineer-pintrest', challengesController.reverseEngineerPintrest);
app.get('/challenges/help-a-nonprofit-team-project', challengesController.helpANonprofitTeamProject);
app.get('/challenges/help-a-nonprofit-solo-project', challengesController.helpANonprofitSoloProject);
app.get('/challenges/crack-the-coding-interview', challengesController.crackTheCodingInterview);
app.get('/login', userController.getLogin); app.get('/login', userController.getLogin);
app.post('/login', userController.postLogin); app.post('/login', userController.postLogin);
app.get('/logout', userController.logout); app.get('/logout', userController.logout);
@ -180,27 +208,27 @@ app.get('/api/yahoo', apiController.getYahoo);
*/ */
app.get('/auth/instagram', passport.authenticate('instagram')); app.get('/auth/instagram', passport.authenticate('instagram'));
app.get('/auth/instagram/callback', passport.authenticate('instagram', { successRedirect: '/curriculum',failureRedirect: '/login' }), function(req, res) { app.get('/auth/instagram/callback', passport.authenticate('instagram', { successRedirect: '/challenges/a-one-minute-introduction-to-free-code-camp',failureRedirect: '/login' }), function(req, res) {
res.redirect(req.session.returnTo || '/'); res.redirect(req.session.returnTo || '/');
}); });
app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email', 'user_location'] })); app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email', 'user_location'] }));
app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/curriculum',failureRedirect: '/login' }), function(req, res) { app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/challenges/a-one-minute-introduction-to-free-code-camp',failureRedirect: '/login' }), function(req, res) {
res.redirect(req.session.returnTo || '/'); res.redirect(req.session.returnTo || '/');
}); });
app.get('/auth/github', passport.authenticate('github')); app.get('/auth/github', passport.authenticate('github'));
app.get('/auth/github/callback', passport.authenticate('github', { successRedirect: '/curriculum',failureRedirect: '/login' }), function(req, res) { app.get('/auth/github/callback', passport.authenticate('github', { successRedirect: '/challenges/a-one-minute-introduction-to-free-code-camp',failureRedirect: '/login' }), function(req, res) {
res.redirect(req.session.returnTo || '/'); res.redirect(req.session.returnTo || '/');
}); });
app.get('/auth/google', passport.authenticate('google', { scope: 'profile email' })); app.get('/auth/google', passport.authenticate('google', { scope: 'profile email' }));
app.get('/auth/google/callback', passport.authenticate('google', { successRedirect: '/curriculum',failureRedirect: '/login' }), function(req, res) { app.get('/auth/google/callback', passport.authenticate('google', { successRedirect: '/challenges/a-one-minute-introduction-to-free-code-camp',failureRedirect: '/login' }), function(req, res) {
res.redirect(req.session.returnTo || '/'); res.redirect(req.session.returnTo || '/');
}); });
app.get('/auth/twitter', passport.authenticate('twitter')); app.get('/auth/twitter', passport.authenticate('twitter'));
app.get('/auth/twitter/callback', passport.authenticate('twitter', { successRedirect: '/curriculum',failureRedirect: '/login' }), function(req, res) { app.get('/auth/twitter/callback', passport.authenticate('twitter', { successRedirect: '/challenges/a-one-minute-introduction-to-free-code-camp',failureRedirect: '/login' }), function(req, res) {
res.redirect(req.session.returnTo || '/'); res.redirect(req.session.returnTo || '/');
}); });
app.get('/auth/linkedin', passport.authenticate('linkedin', { state: 'SOME STATE' })); app.get('/auth/linkedin', passport.authenticate('linkedin', { state: 'SOME STATE' }));
app.get('/auth/linkedin/callback', passport.authenticate('linkedin', { successRedirect: '/curriculum',failureRedirect: '/login' }), function(req, res) { app.get('/auth/linkedin/callback', passport.authenticate('linkedin', { successRedirect: '/challenges/a-one-minute-introduction-to-free-code-camp',failureRedirect: '/login' }), function(req, res) {
res.redirect(req.session.returnTo || '/'); res.redirect(req.session.returnTo || '/');
}); });

View File

@ -4,26 +4,19 @@
*/ */
var Challenge = require('./../models/Challenge') var Challenge = require('./../models/Challenge')
exports.index = function(req, res) { exports.aOneMinuteIntroToFreeCodeCamp = function(req, res) {
Challenge.find(function(err, challenges){ res.render('challenges/a-one-minute-introduction-to-free-code-camp', {
res.render('challenges/index', { name: 'A one-minute introduction to Free Code Camp',
title: 'Challenges', video: "109134466",
challenges: challenges time: "5 minutes",
}); directions: ["Link up with the Free Code Camp community in our HipChat chat room."],
}); links: ["https://www.hipchat.com/invite/178107/cc2f6ea4dfac9e48b9a88b305adae48a"]
};
exports.view = function(req, res) {
Challenge.findById(req.param.id, function(err, challenge){
res.render('challenges/view', {
title: 'Challenge',
challenge: challenge
});
}); });
}; };
exports.enterTheFreeCodeCampChatRoom = function(req, res) { exports.enterTheFreeCodeCampChatRoom = function(req, res) {
res.render('challenges/enter-the-free-code-camp-chat-room', { res.render('challenges/enter-the-free-code-camp-chat-room', {
name: 'Enter the Fre Code Camp Chat Room', name: 'Enter the Free Code Camp Chat Room',
video: "109134466", video: "109134466",
time: "5 minutes", time: "5 minutes",
directions: ["Link up with the Free Code Camp community in our HipChat chat room."], directions: ["Link up with the Free Code Camp community in our HipChat chat room."],
@ -43,7 +36,7 @@ exports.installGithubAtomTextEditor = function(req, res) {
exports.createAndDeployAWebsite = function(req, res) { exports.createAndDeployAWebsite = function(req, res) {
res.render('challenges/create-and-deploy-a-website', { res.render('challenges/create-and-deploy-a-website', {
name: 'Create and Deploy a Website', name: 'Create a Website and Deploy it to the Internet',
video: "109134466", video: "109134466",
time: "5 minutes", time: "5 minutes",
directions: ["In the next 5 minutes, you'll create a website and deploy it to the internet!"], directions: ["In the next 5 minutes, you'll create a website and deploy it to the internet!"],
@ -66,7 +59,7 @@ exports.startAPairProgrammingSession = function(req, res) {
exports.addDynamicContentToYourWebsite = function(req, res) { exports.addDynamicContentToYourWebsite = function(req, res) {
res.render('challenges/add-dynamic-content-to-your-website', { res.render('challenges/add-dynamic-content-to-your-website', {
name: "Add Dynamic Content to your Website with POWr.io", name: "Add Dynamic Content to your Website",
source: "Free Code Camp", source: "Free Code Camp",
video: "109599487", video: "109599487",
time: "10 minutes", time: "10 minutes",
@ -79,7 +72,7 @@ exports.addDynamicContentToYourWebsite = function(req, res) {
exports.codecademyHtmlAndCssTrack = function(req, res) { exports.codecademyHtmlAndCssTrack = function(req, res) {
res.render('challenges/codecademy-html-and-css-track', { res.render('challenges/codecademy-html-and-css-track', {
name: "Codecademy HTML & CSS Track", name: "Codecademy's HTML & CSS Track",
links: ["http://www.codecademy.com/tracks/web"], links: ["http://www.codecademy.com/tracks/web"],
time: "7 hours", time: "7 hours",
directions: [ directions: [
@ -91,7 +84,7 @@ exports.codecademyHtmlAndCssTrack = function(req, res) {
exports.experimentWithHtmlAndCssInCodepen = function(req, res) { exports.experimentWithHtmlAndCssInCodepen = function(req, res) {
res.render('challenges/experiment-with-html-and-css-in-codepen', { res.render('challenges/experiment-with-html-and-css-in-codepen', {
name: "Create your first CodePen", name: "Experiment with HTML and CSS in CodePen",
source: "Free Code Camp", source: "Free Code Camp",
video: "109611164", video: "109611164",
time: "30 minutes", time: "30 minutes",
@ -181,9 +174,9 @@ exports.getHelpTheHackerWayWithRsap = function(req, res) {
}); });
}; };
exports.completeTheEasyAlgorithmScriptingChallengesOnCoderbyte = function(req, res) { exports.easyAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/complete-the-easy-algorthim-scripting-challenges-on-coderbyte', { res.render('challenges/easy-algorthim-scripting-challenges-on-coderbyte', {
name: "Complete the Easy Algorithm Scripting Challenges on Coderbyte", name: "Easy Algorithm Scripting Challenges on Coderbyte",
links: [""], links: [""],
time: "15 hours", time: "15 hours",
directions: [ directions: [
@ -204,9 +197,9 @@ exports.harvardIntroductionToComputerScienceCs50Course = function(req, res) {
}); });
}; };
exports.completeTheMediumAlgorithmScriptingChallengesOnCoderbyte = function(req, res) { exports.mediumAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/complete-the-medium-algorthim-scripting-challenges-on-coderbyte', { res.render('challenges/medium-algorthim-scripting-challenges-on-coderbyte', {
name: "Complete the Medium Algorithm Scripting Challenges on Coderbyte", name: "Medium Algorithm Scripting Challenges on Coderbyte",
links: [""], links: [""],
time: "15 hours", time: "15 hours",
directions: [ directions: [
@ -244,9 +237,9 @@ exports.buildATextBasedAdventure = function(req, res) {
}); });
}; };
exports.completeTheHardAlgorithmScriptingChallengesOnCoderbyte = function(req, res) { exports.hardAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/complete-the-hard-algorthim-scripting-challenges-on-coderbyte', { res.render('challenges/hard-algorthim-scripting-challenges-on-coderbyte', {
name: "Complete the Hard Algorithm Scripting Challenges on Coderbyte", name: "Hard Algorithm Scripting Challenges on Coderbyte",
links: [""], links: [""],
time: "15 hours", time: "15 hours",
directions: [ directions: [

View File

@ -1,14 +0,0 @@
/**
* GET /
* Home page.
*/
var Course = require('./../models/Course')
exports.index = function(req, res) {
Course.find(function(err, courses){
res.render('curriculum/curriculum', {
title: 'Curriculum'
});
});
};

View File

@ -4,10 +4,9 @@ var secrets = require('../config/secrets');
var challengeSchema = new mongoose.Schema({ var challengeSchema = new mongoose.Schema({
name: { type: String, unique: true }, name: { type: String, unique: true },
source: String, source: String,
solution: String, time: String,
link: String, links: Array,
image: String, video: String,
time: Number,
directions: Array directions: Array
}); });

View File

@ -1,12 +0,0 @@
var mongoose = require('mongoose');
var secrets = require('../config/secrets');
var courseSchema = new mongoose.Schema({
name: { type: String, unique: true },
link: String,
image: String,
time: Number,
directions: Array
});
var Courses = module.exports = mongoose.model('Course', courseSchema);

View File

@ -208,5 +208,5 @@ ul {
} }
.button-container { .button-container {
height: 200px; height: 120px;
} }

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -2,6 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -2,6 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -2,6 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -5,4 +5,3 @@ block content
include partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -5,4 +5,3 @@ block content
include partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -2,6 +2,6 @@ extends ../layout
block content block content
.row .row
.col-sm-12.col-md-8.col-xs-12 .col-sm-12.col-md-8.col-xs-12
include ../../challenges/partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -5,4 +5,3 @@ block content
include partials/challenge include partials/challenge
.col-sm-12.col-md-4.col-xs-12 .col-sm-12.col-md-4.col-xs-12
include ../partials/challenges include ../partials/challenges

View File

@ -0,0 +1,7 @@
extends ../layout
block content
.row
.col-sm-12.col-md-8.col-xs-12
include partials/challenge
.col-sm-12.col-md-4.col-xs-12
include ../partials/challenges

View File

@ -1,76 +1,81 @@
.panel.panel-primary .panel.panel-primary
.panel-heading Challenges .panel-heading Challenges
.panel-body .panel-body
ol
li Web Design:
ol ol
li li
a(href="/challenges/create-and-deploy-a-website") Create a website and deploy it to the internet a(href="challenges/enter-the-free-code-camp-chat-room") Enter the Free Code Camp Chat Room
li li
a(href="/challenges/start-a-pair-programming-session") Start Pair Programming session a(href="challenges/install-github-atom-text-editor") Install Github's Atom Text Editor
li li
a(href="/challenges/add-dynamic-content-to-your-website") Add dynamic content to your website a(href="/challenges/create-and-deploy-a-website") Create a Website and Deploy it to the Internet
li li
a(href="/challenges/experiment-with-html-and-css-in-codepen") Experiment with HTML and CSS in CodePen a(href="/challenges/start-a-pair-programming-session") Start Your First Pair Programming Session
li li
a.disabled(href="#") Solve a mystery using Chrome DevTools a(href="/challenges/add-dynamic-content-to-your-website") Add Dynamic Content to your Website
li
a.disabled(href="#") Augment a Form with jQuery
li
a.disabled(href="#") Customize Bootstrap with Bootswatch
li
a.disabled(href="#") Inject Life with CSS Transformations
li li
a(href="/challenges/codecademy-html-and-css-track") Codecademy's HTML & CSS track a(href="/challenges/codecademy-html-and-css-track") Codecademy's HTML & CSS track
li li
a(href="/challenges/code-school-discover-devtools-course") Code School's Discover DevTools a(href="/challenges/experiment-with-html-and-css-in-codepen") Experiment with HTML and CSS in CodePen
li li
a(href="/challenges/code-school-try-jquery-course") Code School's Try jQuery a(href="/challenges/code-school-try-jquery-course") Code School's Try jQuery
li
li JavaScript and Computer Science: a(href="challenges/complete-jquery-exercises") Complete these jQuery Exercises
ol li
a(href="/challenges/code-school-discover-devtools-course") Code School's Discover DevTools
li
a.disabled(href="challenges/customize-bootstrap-with-bootswatch") Customize Bootstrap with Bootswatch
li
a.disabled(href="challenges/inject-life-with-css-transformations") Inject Life with CSS Transformations
li li
a(href="/challenges/codecademy-javascript-track") Codecademy's JavaScript track a(href="/challenges/codecademy-javascript-track") Codecademy's JavaScript track
li
a(href="challenges/get-help-the-hacker-way-with-rsap") Get Help The Hacker Way with RSAP
li
a(href="challenges/easy-algorthim-scripting-challenges-on-coderbyte") Easy Algorithm Scripting Challenges on Coderbyte
li li
a(href="/challenges/harvard-introduction-to-computer-science-cs50-course") Harvard's CS50: Introduction to Computer Science a(href="/challenges/harvard-introduction-to-computer-science-cs50-course") Harvard's CS50: Introduction to Computer Science
li li
a(href="/challenges/linux-command-line-tutorial") Linux Command Line tutorial a(href="challenges/medium-algorthim-scripting-challenges-on-coderbyte") Medium Algorithm Scripting Challenges on Coderbyte
li li
a(href="/challenges/code-school-try-git-course") Code School's Try Git a(href="challenges/stanfords-json-mini-course") Stanford's JSON Mini-course
li li
a.disabled(href="#") Get Help The Hacker Way with RSAP a.disabled(href="challenges/build-a-text-based-adventure") Build a Text-based Adventure
li li
a.disabled(href="#") Script Algorithms on CoderByte a.disabled(href="challenges/hard-algorthim-scripting-challenges-on-coderbyte") Hard Algorithm Scripting Challenges on Coderbyte
li li
a.disabled(href="#") Build a Text-based Adventure a.disabled(href="challenges/stanfords-sql-mini-course") Stanford's SQL Mini-course
li li
a.disabled(href="#") Build an Interview Question Machine a.disabled(href="#") Build an Interview Question Machine
li Full Stack JavaScript Development:
ol
li li
a.disabled(href="#") Deploy your first Node.js app on Heroku a(href="/challenges/code-school-try-git-course") Code School's Try Git
li li
a.disabled(href="#") Explore your Network with the LinkedIn API a(href="/challenges/install-node-js") Install Node.js
li li
a.disabled(href="#") Build your first API a(href="/clone-a-github-repo") Clone a Github Repo
li li
a.disabled(href="#") Aggregate Data with Chron Jobs and Screen Scraping a.disabled(href="challenges/deploy-an-app-to-heroku") Deploy an app to Heroku
li
a.disabled(href="#") Reverse Engineer SnapChat
li
a.disabled(href="#") Reverse Engineer Reddit
li
a.disabled(href="#") Reverse Engineer Pintrest
li
a.disabled(href="#") Help a Nonprofit: Team Project
li
a.disabled(href="#") Help a Nonprofit: Solo Project
li
a.disabled(href="#") Crack the Coding Interview
li li
a(href="/challenges/code-school-real-time-with-node-js-course") Code School's Real-time web with Node.JS a(href="/challenges/code-school-real-time-with-node-js-course") Code School's Real-time web with Node.JS
li
a(href="challenges/try-mongodb") Try MongoDB
li
a.disabled(href="challenges/explore-your-network-with-the-linkedin-api") Explore your Network with the LinkedIn API
li
a.disabled(href="challenges/build-your-first-api") Build your first API
li
a.disabled(href="challenges/aggregate-data-with-chron-jobs-and-screen-scraping") Aggregate Data with Chron Jobs and Screen Scraping
li li
a(href="/challenges/code-school-shaping-up-with-angular-js-course") Code School's Shaping up with Angular.JS a(href="/challenges/code-school-shaping-up-with-angular-js-course") Code School's Shaping up with Angular.JS
li li
a(href="/challenges/m101js-mongodb-for-node-js-developers-course") MongoDB University's MongoDB for Node.js Developers a.disabled(href="challenges/reverse-engineer-snapchat") Reverse Engineer SnapChat
li
a.disabled(href="challenges/reverse-engineer-reddit") Reverse Engineer Reddit
li
a.disabled(href="challenges/reverse-engineer-pintrest") Reverse Engineer Pintrest
li
a.disabled(href="challenges/help-a-nonprofit-team-project") Help a Nonprofit: Team Project
li
a.disabled(href="challenges/help-a-nonprofit-solo-project") Help a Nonprofit: Solo Project
li
a.disabled(href="challenges/crack-the-coding-interview") Crack the Coding Interview

View File

@ -24,7 +24,7 @@
i.caret i.caret
ul.dropdown-menu ul.dropdown-menu
li li
a(href='/curriculum') a(href='/challenges/a-one-minute-introduction-to-free-code-camp')
span.ion-map span.ion-map
| My curriculum | My curriculum
li li