tweaked challenges

This commit is contained in:
Michael Q Larson
2014-12-14 09:01:37 -08:00
parent c7a5a51c8d
commit 1d56a2572a
5 changed files with 221 additions and 162 deletions

View File

@ -7,7 +7,7 @@ var _ = require('lodash');
exports.returnChallenge = function(req, res, next) { exports.returnChallenge = function(req, res, next) {
var challengeNumber = parseInt(req.params.challengeNumber) || 0; var challengeNumber = parseInt(req.params.challengeNumber) || 0;
if (challengeNumber > 41) { challengeNumber = 0; } if (challengeNumber > 60) { challengeNumber = 0; }
Challenge.findOne({challengeNumber: challengeNumber}, function (err, c) { Challenge.findOne({challengeNumber: challengeNumber}, function (err, c) {
if (err) { if (err) {
console.error('Challenge err: ', err); console.error('Challenge err: ', err);

View File

@ -66,7 +66,17 @@ var userSchema = new mongoose.Schema({
46: { type: Number, default: 0 }, 46: { type: Number, default: 0 },
47: { type: Number, default: 0 }, 47: { type: Number, default: 0 },
48: { type: Number, default: 0 }, 48: { type: Number, default: 0 },
49: { type: Number, default: 0 } 49: { type: Number, default: 0 },
50: { type: Number, default: 0 },
51: { type: Number, default: 0 },
52: { type: Number, default: 0 },
53: { type: Number, default: 0 },
54: { type: Number, default: 0 },
55: { type: Number, default: 0 },
56: { type: Number, default: 0 },
57: { type: Number, default: 0 },
58: { type: Number, default: 0 },
59: { type: Number, default: 0 }
}, },
profile: { profile: {
name: { type: String, default: '' }, name: { type: String, default: '' },

View File

@ -275,7 +275,6 @@ ul {
height: 100%; height: 100%;
} }
<<<<<<< HEAD
.signup-btn.btn { .signup-btn.btn {
background-color: #ffac33; background-color: #ffac33;
background-image: linear-gradient(#ffcc4d, #ffac33); background-image: linear-gradient(#ffcc4d, #ffac33);

View File

@ -1,11 +1,11 @@
[ [
{ {
"name": "A 3 Minute Introduction to Free Code Camp", "name": "Learn how Free Code Camp Works",
"time": 3, "time": 1,
"video": "114447214", "video": "114447214",
"challengeNumber": 0, "challengeNumber": 0,
"steps": [ "steps": [
"Watch this 3-minute video, or simply read this summary:", "Watch this 1-minute video, or simply read this summary:",
"Our goal is to help you become an employable software engineer.", "Our goal is to help you become an employable software engineer.",
"We're going to do this by pair programming on projects for nonprofits.", "We're going to do this by pair programming on projects for nonprofits.",
"Pair programming is where two people code together on the same computer.", "Pair programming is where two people code together on the same computer.",
@ -15,7 +15,7 @@
] ]
}, },
{ {
"name": "Join the Free Code Camp Chat Room", "name": "Join Our Chat Room",
"time": 5, "time": 5,
"video": "114447214", "video": "114447214",
"challengeNumber": 1, "challengeNumber": 1,
@ -29,7 +29,7 @@
] ]
}, },
{ {
"name": "Join the Free Code Camp Subreddit", "name": "Subscribe to Our Subreddit",
"time": 5, "time": 5,
"video": "114447214", "video": "114447214",
"challengeNumber": 2, "challengeNumber": 2,
@ -92,7 +92,7 @@
"Go to <a href='https://dash.generalassemb.ly/projects/cotbots-1' target='_blank'>https://dash.generalassemb.ly/projects/cotbots-1</a> and complete the fourth project."] "Go to <a href='https://dash.generalassemb.ly/projects/cotbots-1' target='_blank'>https://dash.generalassemb.ly/projects/cotbots-1</a> and complete the fourth project."]
}, },
{ {
"name": "Meet jQuery", "name": "Get Started with jQuery",
"time": 30, "time": 30,
"video": "114447214", "video": "114447214",
"challengeNumber": 8, "challengeNumber": 8,
@ -200,7 +200,7 @@
] ]
}, },
{ {
"name": "Inject Life with CSS Transformations", "name": "Inject Animation into CSS",
"time": 15, "time": 15,
"video": "114447214", "video": "114447214",
"challengeNumber": 17, "challengeNumber": 17,
@ -215,7 +215,7 @@
] ]
}, },
{ {
"name": "Learn Basic Computer Science Concepts from Stanford", "name": "Learn Basic Computer Science",
"time": 120, "time": 120,
"video": "114447214", "video": "114447214",
"challengeNumber": 18, "challengeNumber": 18,
@ -227,7 +227,7 @@
] ]
}, },
{ {
"name": "Learn Loops from Stanford", "name": "Learn Loops",
"time": 120, "time": 120,
"video": "114447214", "video": "114447214",
"challengeNumber": 19, "challengeNumber": 19,
@ -235,28 +235,28 @@
"Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/</a> and complete Week 2."] "Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/</a> and complete Week 2."]
}, },
{ {
"name": "Learn Computer Hardware Concepts from Stanford", "name": "Learn Computer Hardware",
"time": 120, "time": 120,
"video": "114447214", "video": "114447214",
"challengeNumber": 20, "challengeNumber": 20,
"steps": ["Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/</a> and complete Week 3."] "steps": ["Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/</a> and complete Week 3."]
}, },
{ {
"name": "Learn Computer Networking Concepts from Stanford", "name": "Learn Computer Networking",
"time": 120, "time": 120,
"video": "114447214", "video": "114447214",
"challengeNumber": 21, "challengeNumber": 21,
"steps": ["Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/</a> and complete Week 4."] "steps": ["Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/</a> and complete Week 4."]
}, },
{ {
"name": "Learn Boolean Logic from Stanford", "name": "Learn Boolean Logic",
"time": 120, "time": 120,
"video": "114447214", "video": "114447214",
"challengeNumber": 22, "challengeNumber": 22,
"steps": ["Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/</a> and complete Week 5."] "steps": ["Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/</a> and complete Week 5."]
}, },
{ {
"name": "Learn Computer Security Concepts from Stanford", "name": "Learn Computer Security",
"time": 120, "time": 120,
"video": "114447214", "video": "114447214",
"challengeNumber": 23, "challengeNumber": 23,
@ -265,7 +265,7 @@
"Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/</a> and complete Week 6, the final week of the course."] "Go to <a href='https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/' target='_blank'>https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/</a> and complete Week 6, the final week of the course."]
}, },
{ {
"name": "Build a Choose Your Own Adventure Game", "name": "Build an Adventure Game",
"time": 60, "time": 60,
"video": "114447214", "video": "114447214",
"challengeNumber": 24, "challengeNumber": 24,
@ -340,7 +340,7 @@
"Go to <a href='http://www.codecademy.com/courses/objects-ii/0/1' target='_blank'>http://www.codecademy.com/courses/objects-ii/0/1</a> and complete this final section."] "Go to <a href='http://www.codecademy.com/courses/objects-ii/0/1' target='_blank'>http://www.codecademy.com/courses/objects-ii/0/1</a> and complete this final section."]
}, },
{ {
"name": "Get Help The Hacker Way with RSAP", "name": "Get Help The Hacker Way",
"time": 30, "time": 30,
"video": "114447214", "video": "114447214",
"challengeNumber": 32, "challengeNumber": 32,
@ -366,8 +366,8 @@
] ]
}, },
{ {
"name": "Start Pair Programming on Coderbyte problems", "name": "Pair Program on Coderbyte",
"time": 30, "time": 60,
"video": "114447214", "video": "114447214",
"challengeNumber": 34, "challengeNumber": 34,
"steps": [ "steps": [
@ -414,7 +414,7 @@
"Go to <a href='https://class.stanford.edu/courses/DB/RDB/SelfPaced/courseware/ch-introduction/seq-vid-introduction/' target='_blank'>https://class.stanford.edu/courses/DB/RDB/SelfPaced/courseware/ch-introduction/seq-vid-introduction/</a> and watch the videos."] "Go to <a href='https://class.stanford.edu/courses/DB/RDB/SelfPaced/courseware/ch-introduction/seq-vid-introduction/' target='_blank'>https://class.stanford.edu/courses/DB/RDB/SelfPaced/courseware/ch-introduction/seq-vid-introduction/</a> and watch the videos."]
}, },
{ {
"name": "Pair program on SQL Movie Rating Queries", "name": "Pair Program to Query SQL 1",
"time": 90, "time": 90,
"video": "114447214", "video": "114447214",
"challengeNumber": 36, "challengeNumber": 36,
@ -426,7 +426,7 @@
] ]
}, },
{ {
"name": "Pair program on SQL Social Network Queries", "name": "Pair Program to Query SQL 2",
"time": 60, "time": 60,
"video": "114447214", "video": "114447214",
"challengeNumber": 37, "challengeNumber": 37,
@ -438,7 +438,7 @@
] ]
}, },
{ {
"name": "Pair program on SQL Movie-Rating Modification", "name": "Pair Program to Modify SQL 1",
"time": 90, "time": 90,
"video": "114447214", "video": "114447214",
"challengeNumber": 38, "challengeNumber": 38,
@ -450,7 +450,7 @@
] ]
}, },
{ {
"name": "Pair program on SQL Social Network Modification", "name": "Pair Program to Modify SQL 2",
"time": 30, "time": 30,
"video": "114447214", "video": "114447214",
"challengeNumber": 39, "challengeNumber": 39,
@ -474,7 +474,7 @@
] ]
}, },
{ {
"name": "Try Git, the popular Source Code Revision Control System", "name": "Manage Source Code with Git",
"time": 30, "time": 30,
"video": "114447214", "video": "114447214",
"challengeNumber": 41, "challengeNumber": 41,
@ -485,7 +485,7 @@
] ]
}, },
{ {
"name": "Get started with Node.JS", "name": "Get Started with Node.js",
"time": 45, "time": 45,
"video": "114447214", "video": "114447214",
"challengeNumber": 42, "challengeNumber": 42,
@ -511,7 +511,7 @@
"steps": ["Go to <a href='http://campus.codeschool.com/courses/real-time-web-with-node-js/level/3/video/1' target='_blank'>http://campus.codeschool.com/courses/real-time-web-with-node-js/level/3/video/1</a> and complete the section."] "steps": ["Go to <a href='http://campus.codeschool.com/courses/real-time-web-with-node-js/level/3/video/1' target='_blank'>http://campus.codeschool.com/courses/real-time-web-with-node-js/level/3/video/1</a> and complete the section."]
}, },
{ {
"name": "See how Node.js Modules work", "name": "Learn how Node.js Modules Work",
"time": 45, "time": 45,
"video": "114447214", "video": "114447214",
"challengeNumber": 45, "challengeNumber": 45,
@ -532,7 +532,7 @@
"steps": ["Go to <a href='http://campus.codeschool.com/courses/real-time-web-with-node-js/level/3/video/1' target='_blank'>http://campus.codeschool.com/courses/real-time-web-with-node-js/level/6/video/1</a> and complete the section."] "steps": ["Go to <a href='http://campus.codeschool.com/courses/real-time-web-with-node-js/level/3/video/1' target='_blank'>http://campus.codeschool.com/courses/real-time-web-with-node-js/level/6/video/1</a> and complete the section."]
}, },
{ {
"name": "Use Redis to persist data", "name": "Use Redis to Persist Data",
"time": 45, "time": 45,
"video": "114447214", "video": "114447214",
"challengeNumber": 48, "challengeNumber": 48,
@ -556,7 +556,7 @@
"steps": ["Go to <a href='http://campus.codeschool.com/courses/real-time-web-with-node-js/level/2/video/1' target='_blank'>http://campus.codeschool.com/courses/real-time-web-with-node-js/level/2/video/1</a> and complete the section."] "steps": ["Go to <a href='http://campus.codeschool.com/courses/real-time-web-with-node-js/level/2/video/1' target='_blank'>http://campus.codeschool.com/courses/real-time-web-with-node-js/level/2/video/1</a> and complete the section."]
}, },
{ {
"name": "Take advantage of Parameters", "name": "Take Advantage of Parameters",
"time": 45, "time": 45,
"video": "114447214", "video": "114447214",
"challengeNumber": 51, "challengeNumber": 51,
@ -587,7 +587,7 @@
] ]
}, },
{ {
"name": " Angular.js", "name": "Get Started with Angular.js",
"time": 45, "time": 45,
"video": "114447214", "video": "114447214",
"challengeNumber": 55, "challengeNumber": 55,

View File

@ -2,135 +2,185 @@
.panel-heading Challenges .panel-heading Challenges
.panel-body .panel-body
ol(start='0') ol(start='0')
h4 Web Design
li li
a(href="/challenges/0", class="#{ cc[0] > 0 ? 'strikethrough' : '' }") A One-minute Introduction to Free Code Camp a(href="/challenges/0", class="#{ cc[0] > 0 ? 'strikethrough' : '' }") Learn how Free Code Camp Works
| &nbsp; (1 min) | &nbsp; (1 minute)
li li
a(href="/challenges/1", class="#{ cc[1] > 0 ? 'strikethrough' : '' }") Enter the Free Code Camp Chat Room a(href="/challenges/1", class="#{ cc[1] > 0 ? 'strikethrough' : '' }") Join Our Chat Room
| &nbsp; (10 mins) | &nbsp; (5 minutes)
li li
a(href="/challenges/2", class="#{ cc[2] > 0 ? 'strikethrough' : '' }") Create a Website and Deploy it to the Internet a(href="/challenges/2", class="#{ cc[2] > 0 ? 'strikethrough' : '' }") Subscribe to Our Subreddit
| &nbsp; (5 mins) | &nbsp; (5 minutes)
li li
a(href="/challenges/3", class="#{ cc[3] > 0 ? 'strikethrough' : '' }") Install Github's Atom Text Editor a(href="/challenges/3", class="#{ cc[3] > 0 ? 'strikethrough' : '' }") Build a Personal Website
| &nbsp; (5 mins) | &nbsp; (60 minutes)
li li
a(href="/challenges/4", class="#{ cc[4] > 0 ? 'strikethrough' : '' }") Modify and Redeploy Your Website a(href="/challenges/4", class="#{ cc[4] > 0 ? 'strikethrough' : '' }") Build a Responsive Blog Theme
| &nbsp; (5 mins) | &nbsp; (60 minutes)
li li
a(href="/challenges/5", class="#{ cc[5] > 0 ? 'strikethrough' : '' }") Add Dynamic Content to your Website a(href="/challenges/5", class="#{ cc[5] > 0 ? 'strikethrough' : '' }") Build a Small Business Website
| &nbsp; (10 mins) | &nbsp; (60 minutes)
li li
a(href="/challenges/6", class="#{ cc[6] > 0 ? 'strikethrough' : '' }") Codecademy's HTML & CSS track a(href="/challenges/6", class="#{ cc[6] > 0 ? 'strikethrough' : '' }") Tweak HTML and CSS in CodePen
| &nbsp; (7 hrs) | &nbsp; (10 minutes)
li li
a(href="/challenges/7", class="#{ cc[7] > 0 ? 'strikethrough' : '' }") Experiment with HTML and CSS in CodePen a(href="/challenges/7", class="#{ cc[7] > 0 ? 'strikethrough' : '' }") Build a CSS Robot
| &nbsp; (10 mins) | &nbsp; (60 minutes)
li li
a(href="/challenges/8", class="#{ cc[8] > 0 ? 'strikethrough' : '' }") Codecademy's jQuery track a(href="/challenges/8", class="#{ cc[8] > 0 ? 'strikethrough' : '' }") Get Started with jQuery
| &nbsp; (3 hrs) | &nbsp; (30 minutes)
li li
a(href="/challenges/9", class="#{ cc[9] > 0 ? 'strikethrough' : '' }") Code School's Try jQuery a(href="/challenges/9", class="#{ cc[9] > 0 ? 'strikethrough' : '' }") Traverse the DOM
| &nbsp; (4 hrs) | &nbsp; (30 minutes)
li li
a(href="/challenges/10", class="#{ cc[10] > 0 ? 'strikethrough' : '' }") Code School's Discover DevTools a(href="/challenges/10", class="#{ cc[10] > 0 ? 'strikethrough' : '' }") Work with the DOM
| &nbsp; (2 hrs) | &nbsp; (30 minutes)
li li
a(href="/challenges/11", class="#{ cc[11] > 0 ? 'strikethrough' : '' }") jQuery Exercises a(href="/challenges/11", class="#{ cc[11] > 0 ? 'strikethrough' : '' }") Listen for DOM Elements
| &nbsp; (1 hr) | &nbsp; (30 minutes)
li li
a(href="/challenges/12", class="#{ cc[12] > 0 ? 'strikethrough' : '' }") Customize Bootstrap with Bootswatch a(href="/challenges/12", class="#{ cc[12] > 0 ? 'strikethrough' : '' }") Use jQuery for Styling
| &nbsp; (10 mins) | &nbsp; (30 minutes)
li li
a(href="/challenges/13", class="#{ cc[13] > 0 ? 'strikethrough' : '' }") Inject Life with CSS Transformations a(href="/challenges/13", class="#{ cc[13] > 0 ? 'strikethrough' : '' }") Build a MadLibs Game
| &nbsp; (15 mins) | &nbsp; (60 minutes)
h4 Computer Science and JavaScript
li li
a(href="/challenges/14", class="#{ cc[14] > 0 ? 'strikethrough' : '' }") Codecademy's JavaScript track a(href="/challenges/14", class="#{ cc[14] > 0 ? 'strikethrough' : '' }") Discover Chrome's DevTools
| &nbsp; (10 hrs) | &nbsp; (90 minutes)
li li
a(href="/challenges/15", class="#{ cc[15] > 0 ? 'strikethrough' : '' }") Stanford's Introduction to Computer Science a(href="/challenges/15", class="#{ cc[15] > 0 ? 'strikethrough' : '' }") Tackle jQuery Exercises
| &nbsp; (24 hrs) | &nbsp; (60 minutes)
li li
a(href="/challenges/16", class="#{ cc[16] > 0 ? 'strikethrough' : '' }") Get Help The Hacker Way with RSAP a(href="/challenges/16", class="#{ cc[16] > 0 ? 'strikethrough' : '' }") Customize Bootstrap
| &nbsp; (30 mins) | &nbsp; (10 minutes)
li li
a(href="/challenges/17", class="#{ cc[17] > 0 ? 'strikethrough' : '' }") Learn Regular Expressions a(href="/challenges/17", class="#{ cc[17] > 0 ? 'strikethrough' : '' }") Inject Animation into CSS
| &nbsp; (1 hr) | &nbsp; (15 minutes)
li li
a(href="/challenges/18", class="#{ cc[18] > 0 ? 'strikethrough' : '' }") Start Your First Pair Programming Session a(href="/challenges/18", class="#{ cc[18] > 0 ? 'strikethrough' : '' }") Learn Basic Computer Science
| &nbsp; (30 mins | Pair) | &nbsp; (120 minutes)
li li
a(href="/challenges/19", class="#{ cc[19] > 0 ? 'strikethrough' : '' }") Easy Algorithm Scripting Challenges on Coderbyte a(href="/challenges/19", class="#{ cc[19] > 0 ? 'strikethrough' : '' }") Learn Loops
| &nbsp; (15 hrs | Pair) | &nbsp; (120 minutes)
li li
a(href="/challenges/20", class="#{ cc[20] > 0 ? 'strikethrough' : '' }") Stanford's Relational Databases Mini-course a(href="/challenges/20", class="#{ cc[20] > 0 ? 'strikethrough' : '' }") Learn Computer Hardware
| &nbsp; (1 hr) | &nbsp; (120 minutes)
li li
a(href="/challenges/21", class="#{ cc[21] > 0 ? 'strikethrough' : '' }") Stanford's SQL Mini-course a(href="/challenges/21", class="#{ cc[21] > 0 ? 'strikethrough' : '' }") Learn Computer Networking
| &nbsp; (4 hrs | Pair) | &nbsp; (120 minutes)
li li
a(href="/challenges/22", class="#{ cc[22] > 0 ? 'strikethrough' : '' }") Stanford's JSON Mini-course a(href="/challenges/22", class="#{ cc[22] > 0 ? 'strikethrough' : '' }") Learn Boolean Logic
| &nbsp; (1 hrs | Pair) | &nbsp; (120 minutes)
li li
a(href="/challenges/23", class="#{ cc[23] > 0 ? 'strikethrough' : '' }") Medium Algorithm Scripting Challenges on Coderbyte a(href="/challenges/23", class="#{ cc[23] > 0 ? 'strikethrough' : '' }") Learn Computer Security
| &nbsp; (15 hrs | Pair) | &nbsp; (120 minutes)
li li
a.disabled(href="/challenges/24", class="#{ cc[24] > 0 ? 'strikethrough' : '' }") Build an Interview Question Machine a(href="/challenges/24", class="#{ cc[24] > 0 ? 'strikethrough' : '' }") Build an Adventure Game
| &nbsp; (5 hrs | Pair) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/25", class="#{ cc[25] > 0 ? 'strikethrough' : '' }") Build a Text-based Adventure a(href="/challenges/25", class="#{ cc[25] > 0 ? 'strikethrough' : '' }") Build Rock Paper Scissors
| &nbsp; (5 hrs | Pair) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/26", class="#{ cc[26] > 0 ? 'strikethrough' : '' }") Hard Algorithm Scripting Challenges on Coderbyte a(href="/challenges/26", class="#{ cc[26] > 0 ? 'strikethrough' : '' }") Learn For and While Loops
| &nbsp; (15 hrs | Pair) | &nbsp; (60 minutes)
h4 Full Stack JavaScript Development
li li
a.disabled(href="/challenges/27", class="#{ cc[27] > 0 ? 'strikethrough' : '' }") Code School's Try Git a(href="/challenges/27", class="#{ cc[27] > 0 ? 'strikethrough' : '' }") Learn If and Then Statements
| &nbsp; (30 mins) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/28", class="#{ cc[28] > 0 ? 'strikethrough' : '' }") Install Node.js a(href="/challenges/28", class="#{ cc[28] > 0 ? 'strikethrough' : '' }") Learn Control Flow
| &nbsp; (1 hr) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/29", class="#{ cc[29] > 0 ? 'strikethrough' : '' }") Clone a Github Repo a(href="/challenges/29", class="#{ cc[29] > 0 ? 'strikethrough' : '' }") Build a Contact List
| &nbsp; (15 mins) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/30", class="#{ cc[30] > 0 ? 'strikethrough' : '' }") Deploy an app to Heroku a(href="/challenges/30", class="#{ cc[30] > 0 ? 'strikethrough' : '' }") Build an Address Book
| &nbsp; (15 mins) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/31", class="#{ cc[31] > 0 ? 'strikethrough' : '' }") Code School's Real-time web with Node.JS a(href="/challenges/31", class="#{ cc[31] > 0 ? 'strikethrough' : '' }") Build a Cash Register
| &nbsp; (5 hrs) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/32", class="#{ cc[32] > 0 ? 'strikethrough' : '' }") Try MongoDB a(href="/challenges/32", class="#{ cc[32] > 0 ? 'strikethrough' : '' }") Get Help the Hacker Way
| &nbsp; (30 mins) | &nbsp; (30 minutes)
li li
a.disabled(href="/challenges/33", class="#{ cc[33] > 0 ? 'strikethrough' : '' }") Explore your Network with the LinkedIn API a(href="/challenges/33", class="#{ cc[33] > 0 ? 'strikethrough' : '' }") Learn Regular Expressions
| &nbsp; (1 hr) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/34", class="#{ cc[34] > 0 ? 'strikethrough' : '' }") Build your first API a(href="/challenges/34", class="#{ cc[34] > 0 ? 'strikethrough' : '' }") Start Pair Program on Coderbyte
| &nbsp; (10 hrs | Pair) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/35", class="#{ cc[35] > 0 ? 'strikethrough' : '' }") Aggregate Data with Chron Jobs and Screen Scraping a(href="/challenges/35", class="#{ cc[35] > 0 ? 'strikethrough' : '' }") Learn Relational Databases
| &nbsp; (10 hrs | Pair) | &nbsp; (30 minutes)
li li
a.disabled(href="/challenges/36", class="#{ cc[36] > 0 ? 'strikethrough' : '' }") Code School's Shaping up with Angular.JS a(href="/challenges/36", class="#{ cc[36] > 0 ? 'strikethrough' : '' }") Pair Program to Query SQL 1
| &nbsp; (5 hrs) | &nbsp; (90 minutes)
li li
a.disabled(href="/challenges/37", class="#{ cc[37] > 0 ? 'strikethrough' : '' }") Reverse Engineer SnapChat a(href="/challenges/37", class="#{ cc[37] > 0 ? 'strikethrough' : '' }") Pair Program to Query SQL 2
| &nbsp; (50 hrs | Pair) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/38", class="#{ cc[38] > 0 ? 'strikethrough' : '' }") Reverse Engineer Reddit a(href="/challenges/38", class="#{ cc[38] > 0 ? 'strikethrough' : '' }") Pair Program to modify SQL 1
| &nbsp; (50 hrs | Pair) | &nbsp; (90 minutes)
li li
a.disabled(href="/challenges/39", class="#{ cc[39] > 0 ? 'strikethrough' : '' }") Reverse Engineer Pintrest a(href="/challenges/39", class="#{ cc[39] > 0 ? 'strikethrough' : '' }") Pair Program to modify SQL 2
| &nbsp; (50 hrs | Pair) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/40", class="#{ cc[40] > 0 ? 'strikethrough' : '' }") Help a Nonprofit: Team Project a(href="/challenges/40", class="#{ cc[40] > 0 ? 'strikethrough' : '' }") Learn JSON
| &nbsp; (150 hrs | Pair) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/41", class="#{ cc[41] > 0 ? 'strikethrough' : '' }") Help a Nonprofit: Solo Project a(href="/challenges/41", class="#{ cc[41] > 0 ? 'strikethrough' : '' }") Manage Source Code with Git
| &nbsp; (150 hrs | Pair) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/42", class="#{ cc[42] > 0 ? 'strikethrough' : '' }") Crack the Coding Interview a(href="/challenges/42", class="#{ cc[42] > 0 ? 'strikethrough' : '' }") Get Started with Node.js
| &nbsp; (5 hrs) | &nbsp; (45 minutes)
li
a(href="/challenges/43", class="#{ cc[43] > 0 ? 'strikethrough' : '' }") Try Node.js Events
| &nbsp; (45 minutes)
li
a(href="/challenges/44", class="#{ cc[44] > 0 ? 'strikethrough' : '' }") Try Node.js Streams
| &nbsp; (45 minutes)
li
a(href="/challenges/45", class="#{ cc[45] > 0 ? 'strikethrough' : '' }") Learn how Node.js Modules Work
| &nbsp; (45 minutes)
li
a(href="/challenges/46", class="#{ cc[46] > 0 ? 'strikethrough' : '' }") Start an Express.js Server
| &nbsp; (45 minutes)
li
a(href="/challenges/47", class="#{ cc[47] > 0 ? 'strikethrough' : '' }") Use Socket.io
| &nbsp; (45 minutes)
li
a(href="/challenges/48", class="#{ cc[48] > 0 ? 'strikethrough' : '' }") Use Redis to Persist Data
| &nbsp; (45 minutes)
li
a(href="/challenges/49", class="#{ cc[49] > 0 ? 'strikethrough' : '' }") Dive Deeper into Express.js
| &nbsp; (45 minutes)
li
a(href="/challenges/50", class="#{ cc[50] > 0 ? 'strikethrough' : '' }") Set up Express.js Middleware
| &nbsp; (45 minutes)
li
a(href="/challenges/51", class="#{ cc[51] > 0 ? 'strikethrough' : '' }") Take Advantage of Parameters
| &nbsp; (45 minutes)
li
a(href="/challenges/52", class="#{ cc[52] > 0 ? 'strikethrough' : '' }") Add the Body Parser
| &nbsp; (45 minutes)
li
a(href="/challenges/53", class="#{ cc[53] > 0 ? 'strikethrough' : '' }") Configure Routes in Express.js
| &nbsp; (45 minutes)
li
a(href="/challenges/54", class="#{ cc[54] > 0 ? 'strikethrough' : '' }") Try MongoDB
| &nbsp; (30 minutes)
li
a(href="/challenges/55", class="#{ cc[55] > 0 ? 'strikethrough' : '' }") Get Started with Angular.js
| &nbsp; (45 minutes)
li
a(href="/challenges/56", class="#{ cc[56] > 0 ? 'strikethrough' : '' }") Apply Angular.js Directives
| &nbsp; (45 minutes)
li
a(href="/challenges/57", class="#{ cc[57] > 0 ? 'strikethrough' : '' }") Power Forms with Angular.js
| &nbsp; (45 minutes)
li
a(href="/challenges/58", class="#{ cc[58] > 0 ? 'strikethrough' : '' }") Customize Angular.js Directives
| &nbsp; (45 minutes)
li
a(href="/challenges/59", class="#{ cc[59] > 0 ? 'strikethrough' : '' }") Create Angular.js Services
| &nbsp; (45 minutes)
a.btn.btn-primary.disabled(href="/done-with-first-100-hours") I've finished all Free Code Camp challenges and all 90 CoderByte Challenges