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('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/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/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.post('/login', userController.postLogin);
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/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 || '/');
});
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 || '/');
});
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 || '/');
});
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 || '/');
});
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 || '/');
});
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 || '/');
});

View File

@ -4,26 +4,19 @@
*/
var Challenge = require('./../models/Challenge')
exports.index = function(req, res) {
Challenge.find(function(err, challenges){
res.render('challenges/index', {
title: 'Challenges',
challenges: challenges
});
});
};
exports.view = function(req, res) {
Challenge.findById(req.param.id, function(err, challenge){
res.render('challenges/view', {
title: 'Challenge',
challenge: challenge
});
exports.aOneMinuteIntroToFreeCodeCamp = function(req, res) {
res.render('challenges/a-one-minute-introduction-to-free-code-camp', {
name: 'A one-minute introduction to Free Code Camp',
video: "109134466",
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.enterTheFreeCodeCampChatRoom = function(req, res) {
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",
time: "5 minutes",
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) {
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",
time: "5 minutes",
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) {
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",
video: "109599487",
time: "10 minutes",
@ -79,7 +72,7 @@ exports.addDynamicContentToYourWebsite = function(req, res) {
exports.codecademyHtmlAndCssTrack = function(req, res) {
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"],
time: "7 hours",
directions: [
@ -91,7 +84,7 @@ exports.codecademyHtmlAndCssTrack = function(req, res) {
exports.experimentWithHtmlAndCssInCodepen = function(req, res) {
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",
video: "109611164",
time: "30 minutes",
@ -181,9 +174,9 @@ exports.getHelpTheHackerWayWithRsap = function(req, res) {
});
};
exports.completeTheEasyAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/complete-the-easy-algorthim-scripting-challenges-on-coderbyte', {
name: "Complete the Easy Algorithm Scripting Challenges on Coderbyte",
exports.easyAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/easy-algorthim-scripting-challenges-on-coderbyte', {
name: "Easy Algorithm Scripting Challenges on Coderbyte",
links: [""],
time: "15 hours",
directions: [
@ -204,9 +197,9 @@ exports.harvardIntroductionToComputerScienceCs50Course = function(req, res) {
});
};
exports.completeTheMediumAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/complete-the-medium-algorthim-scripting-challenges-on-coderbyte', {
name: "Complete the Medium Algorithm Scripting Challenges on Coderbyte",
exports.mediumAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/medium-algorthim-scripting-challenges-on-coderbyte', {
name: "Medium Algorithm Scripting Challenges on Coderbyte",
links: [""],
time: "15 hours",
directions: [
@ -244,9 +237,9 @@ exports.buildATextBasedAdventure = function(req, res) {
});
};
exports.completeTheHardAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/complete-the-hard-algorthim-scripting-challenges-on-coderbyte', {
name: "Complete the Hard Algorithm Scripting Challenges on Coderbyte",
exports.hardAlgorithmScriptingChallengesOnCoderbyte = function(req, res) {
res.render('challenges/hard-algorthim-scripting-challenges-on-coderbyte', {
name: "Hard Algorithm Scripting Challenges on Coderbyte",
links: [""],
time: "15 hours",
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({
name: { type: String, unique: true },
source: String,
solution: String,
link: String,
image: String,
time: Number,
time: String,
links: Array,
video: String,
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 {
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
.row
.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
include ../partials/challenges
include ../partials/challenges

View File

@ -2,6 +2,6 @@ extends ../layout
block content
.row
.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
include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content
.row
.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
include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content
.row
.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
include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content
.row
.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
include ../partials/challenges

View File

@ -2,7 +2,6 @@ extends ../layout
block content
.row
.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
include ../partials/challenges

View File

@ -2,6 +2,6 @@ extends ../layout
block content
.row
.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
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
.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
.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
.row
.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
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
.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,75 +2,80 @@
.panel-heading Challenges
.panel-body
ol
li Web Design:
ol
li
a(href="/challenges/create-and-deploy-a-website") Create a website and deploy it to the internet
li
a(href="/challenges/start-a-pair-programming-session") Start Pair Programming session
li
a(href="/challenges/add-dynamic-content-to-your-website") Add dynamic content to your website
li
a(href="/challenges/experiment-with-html-and-css-in-codepen") Experiment with HTML and CSS in CodePen
li
a.disabled(href="#") Solve a mystery using Chrome DevTools
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
a(href="/challenges/codecademy-html-and-css-track") Codecademy's HTML & CSS track
li
a(href="/challenges/code-school-discover-devtools-course") Code School's Discover DevTools
li
a(href="/challenges/code-school-try-jquery-course") Code School's Try jQuery
li
a(href="challenges/enter-the-free-code-camp-chat-room") Enter the Free Code Camp Chat Room
li
a(href="challenges/install-github-atom-text-editor") Install Github's Atom Text Editor
li
a(href="/challenges/create-and-deploy-a-website") Create a Website and Deploy it to the Internet
li
a(href="/challenges/start-a-pair-programming-session") Start Your First Pair Programming Session
li
a(href="/challenges/add-dynamic-content-to-your-website") Add Dynamic Content to your Website
li
a(href="/challenges/codecademy-html-and-css-track") Codecademy's HTML & CSS track
li
a(href="/challenges/experiment-with-html-and-css-in-codepen") Experiment with HTML and CSS in CodePen
li
a(href="/challenges/code-school-try-jquery-course") Code School's Try jQuery
li
a(href="challenges/complete-jquery-exercises") Complete these jQuery Exercises
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
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
a(href="/challenges/harvard-introduction-to-computer-science-cs50-course") Harvard's CS50: Introduction to Computer Science
li
a(href="challenges/medium-algorthim-scripting-challenges-on-coderbyte") Medium Algorithm Scripting Challenges on Coderbyte
li
a(href="challenges/stanfords-json-mini-course") Stanford's JSON Mini-course
li
a.disabled(href="challenges/build-a-text-based-adventure") Build a Text-based Adventure
li
a.disabled(href="challenges/hard-algorthim-scripting-challenges-on-coderbyte") Hard Algorithm Scripting Challenges on Coderbyte
li
a.disabled(href="challenges/stanfords-sql-mini-course") Stanford's SQL Mini-course
li
a.disabled(href="#") Build an Interview Question Machine
li JavaScript and Computer Science:
ol
li
a(href="/challenges/codecademy-javascript-track") Codecademy's JavaScript track
li
a(href="/challenges/harvard-introduction-to-computer-science-cs50-course") Harvard's CS50: Introduction to Computer Science
li
a(href="/challenges/linux-command-line-tutorial") Linux Command Line tutorial
li
a(href="/challenges/code-school-try-git-course") Code School's Try Git
li
a.disabled(href="#") Get Help The Hacker Way with RSAP
li
a.disabled(href="#") Script Algorithms on CoderByte
li
a.disabled(href="#") Build a Text-based Adventure
li
a.disabled(href="#") Build an Interview Question Machine
li Full Stack JavaScript Development:
ol
li
a.disabled(href="#") Deploy your first Node.js app on Heroku
li
a.disabled(href="#") Explore your Network with the LinkedIn API
li
a.disabled(href="#") Build your first API
li
a.disabled(href="#") Aggregate Data with Chron Jobs and Screen Scraping
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
a(href="/challenges/code-school-real-time-with-node-js-course") Code School's Real-time web with Node.JS
li
a(href="/challenges/code-school-shaping-up-with-angular-js-course") Code School's Shaping up with Angular.JS
li
a(href="/challenges/m101js-mongodb-for-node-js-developers-course") MongoDB University's MongoDB for Node.js Developers
li
a(href="/challenges/code-school-try-git-course") Code School's Try Git
li
a(href="/challenges/install-node-js") Install Node.js
li
a(href="/clone-a-github-repo") Clone a Github Repo
li
a.disabled(href="challenges/deploy-an-app-to-heroku") Deploy an app to Heroku
li
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
a(href="/challenges/code-school-shaping-up-with-angular-js-course") Code School's Shaping up with Angular.JS
li
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
ul.dropdown-menu
li
a(href='/curriculum')
a(href='/challenges/a-one-minute-introduction-to-free-code-camp')
span.ion-map
| My curriculum
li