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' : '' }") Learn how Free Code Camp Works
a(href="/challenges/0", class="#{ cc[0] > 0 ? 'strikethrough' : '' }") A One-minute Introduction to Free Code Camp | &nbsp; (1 minute)
| &nbsp; (1 min) li
li a(href="/challenges/1", class="#{ cc[1] > 0 ? 'strikethrough' : '' }") Join Our Chat Room
a(href="/challenges/1", class="#{ cc[1] > 0 ? 'strikethrough' : '' }") Enter the Free Code Camp Chat Room | &nbsp; (5 minutes)
| &nbsp; (10 mins) li
li a(href="/challenges/2", class="#{ cc[2] > 0 ? 'strikethrough' : '' }") Subscribe to Our Subreddit
a(href="/challenges/2", class="#{ cc[2] > 0 ? 'strikethrough' : '' }") Create a Website and Deploy it to the Internet | &nbsp; (5 minutes)
| &nbsp; (5 mins) li
li a(href="/challenges/3", class="#{ cc[3] > 0 ? 'strikethrough' : '' }") Build a Personal Website
a(href="/challenges/3", class="#{ cc[3] > 0 ? 'strikethrough' : '' }") Install Github's Atom Text Editor | &nbsp; (60 minutes)
| &nbsp; (5 mins) li
li a(href="/challenges/4", class="#{ cc[4] > 0 ? 'strikethrough' : '' }") Build a Responsive Blog Theme
a(href="/challenges/4", class="#{ cc[4] > 0 ? 'strikethrough' : '' }") Modify and Redeploy Your Website | &nbsp; (60 minutes)
| &nbsp; (5 mins) li
li a(href="/challenges/5", class="#{ cc[5] > 0 ? 'strikethrough' : '' }") Build a Small Business Website
a(href="/challenges/5", class="#{ cc[5] > 0 ? 'strikethrough' : '' }") Add Dynamic Content to your Website | &nbsp; (60 minutes)
| &nbsp; (10 mins) li
li a(href="/challenges/6", class="#{ cc[6] > 0 ? 'strikethrough' : '' }") Tweak HTML and CSS in CodePen
a(href="/challenges/6", class="#{ cc[6] > 0 ? 'strikethrough' : '' }") Codecademy's HTML & CSS track | &nbsp; (10 minutes)
| &nbsp; (7 hrs) li
li a(href="/challenges/7", class="#{ cc[7] > 0 ? 'strikethrough' : '' }") Build a CSS Robot
a(href="/challenges/7", class="#{ cc[7] > 0 ? 'strikethrough' : '' }") Experiment with HTML and CSS in CodePen | &nbsp; (60 minutes)
| &nbsp; (10 mins) li
li a(href="/challenges/8", class="#{ cc[8] > 0 ? 'strikethrough' : '' }") Get Started with jQuery
a(href="/challenges/8", class="#{ cc[8] > 0 ? 'strikethrough' : '' }") Codecademy's jQuery track | &nbsp; (30 minutes)
| &nbsp; (3 hrs) li
li a(href="/challenges/9", class="#{ cc[9] > 0 ? 'strikethrough' : '' }") Traverse the DOM
a(href="/challenges/9", class="#{ cc[9] > 0 ? 'strikethrough' : '' }") Code School's Try jQuery | &nbsp; (30 minutes)
| &nbsp; (4 hrs) li
li a(href="/challenges/10", class="#{ cc[10] > 0 ? 'strikethrough' : '' }") Work with the DOM
a(href="/challenges/10", class="#{ cc[10] > 0 ? 'strikethrough' : '' }") Code School's Discover DevTools | &nbsp; (30 minutes)
| &nbsp; (2 hrs) li
li a(href="/challenges/11", class="#{ cc[11] > 0 ? 'strikethrough' : '' }") Listen for DOM Elements
a(href="/challenges/11", class="#{ cc[11] > 0 ? 'strikethrough' : '' }") jQuery Exercises | &nbsp; (30 minutes)
| &nbsp; (1 hr) li
li a(href="/challenges/12", class="#{ cc[12] > 0 ? 'strikethrough' : '' }") Use jQuery for Styling
a(href="/challenges/12", class="#{ cc[12] > 0 ? 'strikethrough' : '' }") Customize Bootstrap with Bootswatch | &nbsp; (30 minutes)
| &nbsp; (10 mins) li
li a(href="/challenges/13", class="#{ cc[13] > 0 ? 'strikethrough' : '' }") Build a MadLibs Game
a(href="/challenges/13", class="#{ cc[13] > 0 ? 'strikethrough' : '' }") Inject Life with CSS Transformations | &nbsp; (60 minutes)
| &nbsp; (15 mins) li
h4 Computer Science and JavaScript a(href="/challenges/14", class="#{ cc[14] > 0 ? 'strikethrough' : '' }") Discover Chrome's DevTools
li | &nbsp; (90 minutes)
a(href="/challenges/14", class="#{ cc[14] > 0 ? 'strikethrough' : '' }") Codecademy's JavaScript track li
| &nbsp; (10 hrs) a(href="/challenges/15", class="#{ cc[15] > 0 ? 'strikethrough' : '' }") Tackle jQuery Exercises
li | &nbsp; (60 minutes)
a(href="/challenges/15", class="#{ cc[15] > 0 ? 'strikethrough' : '' }") Stanford's Introduction to Computer Science li
| &nbsp; (24 hrs) a(href="/challenges/16", class="#{ cc[16] > 0 ? 'strikethrough' : '' }") Customize Bootstrap
li | &nbsp; (10 minutes)
a(href="/challenges/16", class="#{ cc[16] > 0 ? 'strikethrough' : '' }") Get Help The Hacker Way with RSAP li
| &nbsp; (30 mins) a(href="/challenges/17", class="#{ cc[17] > 0 ? 'strikethrough' : '' }") Inject Animation into CSS
li | &nbsp; (15 minutes)
a(href="/challenges/17", class="#{ cc[17] > 0 ? 'strikethrough' : '' }") Learn Regular Expressions li
| &nbsp; (1 hr) a(href="/challenges/18", class="#{ cc[18] > 0 ? 'strikethrough' : '' }") Learn Basic Computer Science
li | &nbsp; (120 minutes)
a(href="/challenges/18", class="#{ cc[18] > 0 ? 'strikethrough' : '' }") Start Your First Pair Programming Session li
| &nbsp; (30 mins | Pair) a(href="/challenges/19", class="#{ cc[19] > 0 ? 'strikethrough' : '' }") Learn Loops
li | &nbsp; (120 minutes)
a(href="/challenges/19", class="#{ cc[19] > 0 ? 'strikethrough' : '' }") Easy Algorithm Scripting Challenges on Coderbyte li
| &nbsp; (15 hrs | Pair) a(href="/challenges/20", class="#{ cc[20] > 0 ? 'strikethrough' : '' }") Learn Computer Hardware
li | &nbsp; (120 minutes)
a(href="/challenges/20", class="#{ cc[20] > 0 ? 'strikethrough' : '' }") Stanford's Relational Databases Mini-course li
| &nbsp; (1 hr) a(href="/challenges/21", class="#{ cc[21] > 0 ? 'strikethrough' : '' }") Learn Computer Networking
li | &nbsp; (120 minutes)
a(href="/challenges/21", class="#{ cc[21] > 0 ? 'strikethrough' : '' }") Stanford's SQL Mini-course li
| &nbsp; (4 hrs | Pair) a(href="/challenges/22", class="#{ cc[22] > 0 ? 'strikethrough' : '' }") Learn Boolean Logic
li | &nbsp; (120 minutes)
a(href="/challenges/22", class="#{ cc[22] > 0 ? 'strikethrough' : '' }") Stanford's JSON Mini-course li
| &nbsp; (1 hrs | Pair) a(href="/challenges/23", class="#{ cc[23] > 0 ? 'strikethrough' : '' }") Learn Computer Security
li | &nbsp; (120 minutes)
a(href="/challenges/23", class="#{ cc[23] > 0 ? 'strikethrough' : '' }") Medium Algorithm Scripting Challenges on Coderbyte li
| &nbsp; (15 hrs | Pair) a(href="/challenges/24", class="#{ cc[24] > 0 ? 'strikethrough' : '' }") Build an Adventure Game
li | &nbsp; (60 minutes)
a.disabled(href="/challenges/24", class="#{ cc[24] > 0 ? 'strikethrough' : '' }") Build an Interview Question Machine li
| &nbsp; (5 hrs | Pair) a(href="/challenges/25", class="#{ cc[25] > 0 ? 'strikethrough' : '' }") Build Rock Paper Scissors
li | &nbsp; (60 minutes)
a.disabled(href="/challenges/25", class="#{ cc[25] > 0 ? 'strikethrough' : '' }") Build a Text-based Adventure li
| &nbsp; (5 hrs | Pair) a(href="/challenges/26", class="#{ cc[26] > 0 ? 'strikethrough' : '' }") Learn For and While Loops
li | &nbsp; (60 minutes)
a.disabled(href="/challenges/26", class="#{ cc[26] > 0 ? 'strikethrough' : '' }") Hard Algorithm Scripting Challenges on Coderbyte li
| &nbsp; (15 hrs | Pair) a(href="/challenges/27", class="#{ cc[27] > 0 ? 'strikethrough' : '' }") Learn If and Then Statements
h4 Full Stack JavaScript Development | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/27", class="#{ cc[27] > 0 ? 'strikethrough' : '' }") Code School's Try Git a(href="/challenges/28", class="#{ cc[28] > 0 ? 'strikethrough' : '' }") Learn Control Flow
| &nbsp; (30 mins) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/28", class="#{ cc[28] > 0 ? 'strikethrough' : '' }") Install Node.js a(href="/challenges/29", class="#{ cc[29] > 0 ? 'strikethrough' : '' }") Build a Contact List
| &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/30", class="#{ cc[30] > 0 ? 'strikethrough' : '' }") Build an Address Book
| &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/31", class="#{ cc[31] > 0 ? 'strikethrough' : '' }") Build a Cash Register
| &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/32", class="#{ cc[32] > 0 ? 'strikethrough' : '' }") Get Help the Hacker Way
| &nbsp; (5 hrs) | &nbsp; (30 minutes)
li li
a.disabled(href="/challenges/32", class="#{ cc[32] > 0 ? 'strikethrough' : '' }") Try MongoDB a(href="/challenges/33", class="#{ cc[33] > 0 ? 'strikethrough' : '' }") Learn Regular Expressions
| &nbsp; (30 mins) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/33", class="#{ cc[33] > 0 ? 'strikethrough' : '' }") Explore your Network with the LinkedIn API a(href="/challenges/34", class="#{ cc[34] > 0 ? 'strikethrough' : '' }") Start Pair Program on Coderbyte
| &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/35", class="#{ cc[35] > 0 ? 'strikethrough' : '' }") Learn Relational Databases
| &nbsp; (10 hrs | Pair) | &nbsp; (30 minutes)
li li
a.disabled(href="/challenges/35", class="#{ cc[35] > 0 ? 'strikethrough' : '' }") Aggregate Data with Chron Jobs and Screen Scraping a(href="/challenges/36", class="#{ cc[36] > 0 ? 'strikethrough' : '' }") Pair Program to Query SQL 1
| &nbsp; (10 hrs | Pair) | &nbsp; (90 minutes)
li li
a.disabled(href="/challenges/36", class="#{ cc[36] > 0 ? 'strikethrough' : '' }") Code School's Shaping up with Angular.JS a(href="/challenges/37", class="#{ cc[37] > 0 ? 'strikethrough' : '' }") Pair Program to Query SQL 2
| &nbsp; (5 hrs) | &nbsp; (60 minutes)
li li
a.disabled(href="/challenges/37", class="#{ cc[37] > 0 ? 'strikethrough' : '' }") Reverse Engineer SnapChat 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/38", class="#{ cc[38] > 0 ? 'strikethrough' : '' }") Reverse Engineer Reddit 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/39", class="#{ cc[39] > 0 ? 'strikethrough' : '' }") Reverse Engineer Pintrest a(href="/challenges/40", class="#{ cc[40] > 0 ? 'strikethrough' : '' }") Learn JSON
| &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/41", class="#{ cc[41] > 0 ? 'strikethrough' : '' }") Manage Source Code with Git
| &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/42", class="#{ cc[42] > 0 ? 'strikethrough' : '' }") Get Started with Node.js
| &nbsp; (150 hrs | Pair) | &nbsp; (45 minutes)
li li
a.disabled(href="/challenges/42", class="#{ cc[42] > 0 ? 'strikethrough' : '' }") Crack the Coding Interview a(href="/challenges/43", class="#{ cc[43] > 0 ? 'strikethrough' : '' }") Try Node.js Events
| &nbsp; (5 hrs) | &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