chore(server): Move api-server in to it's own DIR

This commit is contained in:
Bouncey
2018-08-31 16:04:04 +01:00
committed by mrugesh mohapatra
parent 9fba6bce4c
commit 46a217d0a5
369 changed files with 328 additions and 7431 deletions

View File

@ -0,0 +1,20 @@
extends ./layout
block content
.spacer
.row
.col-sm-6.col-sm-offset-3
hr
.text-center
h1 404
.row
.col-sm-6.col-sm-offset-3
.text-center
h2 Ooops, we couldn't find that page.
.spacer
.row
.col-sm-6.col-sm-offset-3
.text-center
a.btn.signup-btn.btn-block(href='/map') Head to the Map
hr
.spacer

View File

@ -0,0 +1,121 @@
extends ../layout
block content
.row.flashMessage.negative-30
.col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3
#flash-board.alert.fade.in(style='display: none;')
button.close(type='button', data-dismiss='alert')
i.fas.fa-times-circle#flash-close
#flash-content
.row
.col-xs-12
#accept-privacy-terms
.row
.text-center
br
br
h3 Please review our updated privacy policy and the terms of service.
br
.row
.col-sm-6.col-sm-offset-3
form(method='POST', action='/update-privacy-terms')
input(type='hidden', name='_csrf', value=_csrf)
.checkbox
label
input(id='terms', name='privacy', type='checkbox')
span.cr
i.cr-icon.fa.fa-check
| I accept the  
a(href='https://www.freecodecamp.org/terms' target='_blank') terms of service
| (required).
.checkbox
label
input(id='privacy', name='privacy', type='checkbox')
span.cr
i.cr-icon.fa.fa-check
| I accept the  
a(href='https://www.freecodecamp.org/privacy' target='_blank') privacy policy
| (required).
.checkbox
label
input(id='quincyemails', name='quincyemails', type='checkbox')
span.cr
i.cr-icon.fa.fa-check
| I want weekly emails from Quincy (freeCodeCamp.org's founder).
.button-spacer
button.btn.btn-primary.btn-lg.btn-block(id='submit-button', type='submit')
.row
.col-sm-6.col-sm-offset-3
a.btn.btn-primary.btn-lg.btn-block(id='continue-button', href='/', style='display: none;')
| Continue to freeCodeCamp
include ../homePartials/scripts
script.
$(document).ready(function() {
var checkedBoxCount = 0;
function disableContinueButtonForAgreement(isLaunched) {
if (isLaunched) {
$('#submit-button').prop('disabled', true).html(
'<span style="color:#E0E0E0;">Submit<\/span>');
return;
}
if (!isLaunched && checkedBoxCount === 2){
$('#submit-button').prop('disabled', false).html(
'<span>Submit<\/span>');
}
}
disableContinueButtonForAgreement(true);
$('#terms').click(function() {
if (this.checked) {
checkedBoxCount++;
disableContinueButtonForAgreement(false);
} else {
checkedBoxCount--;
disableContinueButtonForAgreement(true);
}
});
$('#privacy').click(function() {
if (this.checked) {
checkedBoxCount++;
disableContinueButtonForAgreement(false);
} else {
checkedBoxCount--;
disableContinueButtonForAgreement(true);
}
});
$('form').submit(function(event){
event.preventDefault();
$('#flash-board').hide();
var $form = $(event.target);
$.ajax({
type : 'POST',
url : $form.attr('action'),
data : $form.serialize(),
dataType : 'json',
encode : true,
xhrFields : { withCredentials: true }
})
.fail(error => {
if (error.responseText){
var data = JSON.parse(error.responseText);
if(data.message)
$('#flash-content').html(data.message);
$('#flash-board')
.removeClass('alert-success')
.addClass('alert-info')
.fadeIn();
}
})
.done(data =>{
if(data && data.message){
$('#flash-content').html(data.message);
$('#flash-board')
.removeClass('alert-info')
.addClass('alert-success')
.fadeIn();
$('#accept-privacy-terms').hide();
$('#continue-button').show();
}
});
});
});

View File

@ -0,0 +1,17 @@
extends ../layout
block content
.text-center
h2 Welcome to the freeCodeCamp beta.
h3 We have disabled new sign ups on beta.
.text-left.col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3
p You can try our new beta challenges, but your progress <bold>will not</bold> be saved.&thinsp;
a(href='/map') Click here to go to the beta challenges
| .
p Or you can return to our stable challenges, where your progress <bold>will</bold> be saved.&thinsp;
a(href='https://www.freecodecamp.org') Click here to go to the stable challenges
| .
p If you want to learn more about this beta, read our&thinsp;
a(href='https://forum.freecodecamp.org/t/frequently-asked-questions-about-the-freecodecamp-beta/134331') Frequently Asked Questions
| .
p Happy coding!

View File

@ -0,0 +1,28 @@
extends ../layout
block content
include ../partials/flyer
#modal-dialog.modal
.modal-dialog
.modal-content
.modal-header
a.close(href='/settings', data-dismiss='modal', aria-hidden='true') ×
h3 You don't really want to delete your account, do you?
.modal-body
p This will really delete all your data, including all your progress and brownie points.
p We won't be able to recover any of it for you later, even if you change your mind.
p If there's something we could do better, send us an email instead and we'll do our best: &thinsp;
a(href="mailto:team@freecodecamp.org") team@freecodecamp.org
| .
.modal-footer
a.btn.btn-success.btn-block(href='/settings', data-dismiss='modal', aria-hidden='true')
| Nevermind, I don't want to delete all of my progress
.spacer
form(action='/account/delete', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
button.btn.btn-danger.btn-block(type='submit')
| I am 100% sure I want to delete my account and all of my progress
script.
document.addEventListener('DOMContentLoaded', function() {
const modal$ = document.getElementById('modal-dialog');
modal$.classList.add('show');
});

View File

@ -0,0 +1,29 @@
extends ../layout
block content
#modal-dialog.modal
.modal-dialog
.modal-content
.modal-header
a.close(href='/settings', data-dismiss='modal', aria-hidden='true') ×
h3 Do you want to report #{username}'s profile for abuse?
.modal-body
p We will notify the community moderators' team,
| and a send copy of this report to your email:
strong #{user.email}
| . We may get back to you for more information, if required.
.modal-footer
form(action='/' + username +'/report-user/', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
div
textarea.modal-textarea(name='reportDescription', cols='40', rows='5')
.spacer
button.btn.btn-danger.btn-block(type='submit')
| Yes, submit my report about this user's profile.
.spacer
a.btn.btn-success.btn-block(href='/settings', data-dismiss='modal', aria-hidden='true')
| Nevermind, I don't want to report this user.
script.
document.addEventListener('DOMContentLoaded', function() {
const modal$ = document.getElementById('modal-dialog');
modal$.classList.add('show');
});

View File

@ -0,0 +1,25 @@
extends ../layout
block content
include ../partials/flyer
#modal-dialog.modal
.modal-dialog
.modal-content
.modal-header
a.close(href='/settings', data-dismiss='modal', aria-hidden='true') ×
h3 You don't really want to reset your progress, do you?
.modal-body
p This will really delete all of your progress and brownie points.
p We won't be able to recover any of it for you later, even if you change your mind.
.modal-footer
a.btn.btn-success.btn-block(href='/settings', data-dismiss='modal', aria-hidden='true')
| Nevermind, I don't want to delete all of my progress and brownie points
.spacer
form(action='/account/resetprogress', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
button.btn.btn-danger.btn-block(type='submit')
| I am 100% sure I want to reset all of my progress and brownie points
script.
document.addEventListener('DOMContentLoaded', function() {
const modal$ = document.getElementById('modal-dialog');
modal$.classList.add('show');
});

View File

@ -0,0 +1,188 @@
extends ../layout
block content
include ../partials/flyer
.app-content.app-centered
script.
var challengeName = 'Profile View';
if (user && user.username === username)
.row
.col-xs-12
a.btn.btn-lg.btn-block.btn-primary.btn-link-social(href='/settings')
| Update my settings
.col-xs-12
a.btn.btn-lg.btn-block.btn-primary.btn-link-social(href='/signout')
| Sign me out of freeCodeCamp
.col-xs-12
a.btn.btn-lg.btn-block.btn-primary.btn-link-social(href='mailto:team@freecodecamp.org')
| Email us at team@freecodecamp.org
.spacer
h1.text-center #{username}'s code portfolio
hr
.row
.col-xs-12.col-sm-10.col-sm-offset-1.col-md-8.col-md-offset-2.text-center
if picture
img.img-center.img-responsive.public-profile-img.border-radius-5(src=picture)
else
img.img-center.img-responsive.public-profile-img.border-radius-5(src='https://s3.amazonaws.com/freecodecamp/camper-image-placeholder.png')
h1.text-center.negative-5.profile-social-icons
if (twitter)
a.fa.fa-twitter-square.text-primary(title="@#{username}'s Twitter Profile", href='https://twitter.com/' + twitter, target='_blank')
if (github)
a.fa.fa-github-square.text-primary(title="@#{username}'s GitHub Profile", href=github, target='_blank')
if (linkedin)
a.fa.fa-linkedin-square.text-primary(title="@#{username}'s LinkedIn Profile", href=linkedin, target='_blank')
h1.flat-top.wrappable= name
h1.flat-top.wrappable= location
p.flat-top.bio= bio
h1.flat-top.text-primary= "[ " + (progressTimestamps.length) + " ]"
if pledge
.spacer
h4
| This camper has committed to giving $#{pledge.amount} to
a(href='#{pledge.donateUrl}?ref=freecodecamp.org' target='_blank') #{pledge.displayName}
| each month until they have completed their #{pledge.goal}.
.spacer
.row
.col-xs-12.col-sm-10.col-sm-offset-1.col-md-8.col-md-offset-2
if isFrontEndCert
a.btn.btn-primary.btn-block(href='/' + username + '/front-end-certification') View My Front End Development Certification
if isDataVisCert
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/data-visualization-certification') View My Data Visualization Certification
if isBackEndCert
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/back-end-certification') View My Back End Development Certification
if isRespWebDesignCert
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/responsive-web-design-certification') View My Responsive Web Design Certification
if isFrontEndLibsCert
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/front-end-libraries-certification') View My Front End Libraries Certification
if isJsAlgoDataStructCert
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/javascript-algorithms-data-structures-certification') View My JavaScript Algorithms Data Structures Certification
if isApisMicroservicesCert
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/apis-microservices-certification') View My APIs Microservices Certification
if isInfosecQaCert
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/information-security-quality-assurance-certification') View My Information Sequrity Quality Assurance Certification
if (user && user.username != username)
.button-spacer
a.btn.btn-primary.btn-block(href='/' + username + '/report-user/') Report this user's profile for abuse
.row
.col-xs-12.text-center
if (badges.coreTeam && badges.coreTeam.length)
h4 Core Team #{badges.coreTeam.reverse().join(', ')}
.spacer
.col-md-12
#cal-heatmap.hidden-xs.hidden-sm.d3-centered
script.
$(document).ready(function () {
var cal = new CalHeatMap();
var calendar = !{JSON.stringify(calender)};
var rectSelector = "#cal-heatmap > svg > svg.graph-legend > g > rect.r";
var calLegendTitles = ["0 items", "1 item", "2 items", "3 or more items"]
cal.init({
itemSelector: "#cal-heatmap",
domain: "month",
subDomain: "x_day",
domainGutter: 10,
data: calendar,
cellSize: 15,
align: 'center',
cellRadius: 3,
cellPadding: 2,
tooltip: true,
range: 6,
start: new Date().setDate(new Date().getDate() - 150),
legendColors: ["#cccccc", "#215f1e"],
legend: [1, 2, 3],
label: {
position: "top"
}
});
calLegendTitles.forEach(function(title, i) {
document.querySelector(rectSelector + (i + 1).toString() + '> title').innerHTML = title;
});
});
.row
.hidden-xs.col-sm-12.text-center
.row.text-primary
h4.col-sm-6.text-right Longest Streak: #{longestStreak} #{longestStreak === 1 ? ' day' : ' days'}
h4.col-sm-6.text-left Current Streak: #{currentStreak} #{currentStreak === 1 ? ' day' : ' days'}
if (user && user.username == username || !isLocked)
if (projects .length > 0)
.col-sm-12
table.table.table-striped
thead
tr
th.col-xs-5 Projects
th.col-xs-2.hidden-xs Completed
th.col-xs-2.hidden-xs Last Updated
th.col-xs-2.hidden-xs Link
for challenge in projects
tr
td.col-xs-5.hidden-xs
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}', target='_blank')= challenge.name
td.col-xs-2.hidden-xs= challenge.completedDate ? challenge.completedDate : 'Not Available'
td.col-xs-2.hidden-xs= challenge.lastUpdated ? challenge.lastUpdated : ''
td.col-xs-2.hidden-xs
a(href=challenge.solution, target='_blank') View project
td.col-xs-12.visible-xs
a(href=challenge.solution, target='_blank')= challenge.name
if (algorithms.length > 0)
.col-sm-12
table.table.table-striped
thead
tr
th.col-xs-5 Algorithms
th.col-xs-2.hidden-xs Completed
th.col-xs-2.hidden-xs Last Updated
th.col-xs-2.hidden-xs Solution
for challenge in algorithms
tr
td.col-xs-5.hidden-xs= challenge.name
td.col-xs-2.hidden-xs= challenge.completedDate ? challenge.completedDate : 'Not Available'
td.col-xs-2.hidden-xs= challenge.lastUpdated ? challenge.lastUpdated : ''
td.col-xs-2.hidden-xs
if (challenge.solution)
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}?solution=#{encodeURIComponent(encodeFcc(challenge.solution))}', target='_blank') View solution
else
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}') View this challenge
td.col-xs-12.visible-xs
if (challenge.solution)
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}?solution=#{encodeURIComponent(encodeFcc(challenge.solution))}', target='_blank')= challenge.name
else
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}')= challenge.name
if (challenges.length > 0)
.col-sm-12
table.table.table-striped
thead
tr
th.col-xs-5 Challenges
th.col-xs-2.hidden-xs Completed
th.col-xs-2.hidden-xs Last Updated
th.col-xs-2.hidden-xs Solution
for challenge in challenges
tr
td.col-xs-5.hidden-xs= challenge.name
td.col-xs-2.hidden-xs= challenge.completedDate ? challenge.completedDate : 'Not Available'
td.col-xs-2.hidden-xs= challenge.lastUpdated ? challenge.lastUpdated : ''
td.col-xs-2.hidden-xs
if (challenge.solution && challenge.name)
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}?solution=#{encodeURIComponent(encodeFcc(challenge.solution))}', target='_blank') View solution
else if (challenge.name)
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}') View this challenge
else
span N/A
td.col-xs-12.visible-xs
if (challenge.solution && challenge.name)
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}?solution=#{encodeURIComponent(encodeFcc(challenge.solution))}', target='_blank')= challenge.name
else if (challenge.name)
a(href='/challenges/#{challenge.block}/#{challenge.dashedName}')= challenge.name
else
span N/A

View File

@ -0,0 +1,57 @@
extends ../layout
block content
.row.flashMessage.negative-30
.col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3
#flash-board.alert.fade.in(style='display: none;')
button.close(type='button', data-dismiss='alert')
i.fas.fa-times-circle#flash-close
#flash-content
.container
h2.text-center Update your email address here:
form.form-horizontal.update-email(method='POST', action='/update-my-email', name="updateEmailForm")
.row
.col-sm-6.col-sm-offset-3
input(type='hidden', name='_csrf', value=_csrf)
.form-group
input.input-lg.form-control(type='email', name='email', id='email', value=user.email || '', placeholder=user.email || 'Enter your new email', autofocus, required, autocomplete="off")
.form-group
button.btn.btn-lg.btn-primary.btn-block(type='submit')= !user.email || user.emailVerified ? 'Update my Email' : 'Verify Email'
a.btn.btn-lg.btn-block.btn-primary.btn-link-social(href='/signout')
| Sign out
script.
$(document).ready(function() {
$('form').submit(function(event){
event.preventDefault();
$('#flash-board').hide();
var $form = $(event.target);
$.ajax({
type : 'POST',
url : $form.attr('action'),
data : $form.serialize(),
dataType : 'json',
encode : true,
xhrFields : { withCredentials: true }
})
.fail(error => {
if (error.responseText){
var data = JSON.parse(error.responseText);
if(data.message)
$('#flash-content').html(data.message);
$('#flash-board')
.removeClass('alert-success')
.addClass('alert-info')
.fadeIn();
}
})
.done(data =>{
if(data && data.message){
$('#flash-content').html(data.message);
$('#flash-board')
.removeClass('alert-info')
.addClass('alert-success')
.fadeIn();
}
});
});
});

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Advanced Frontend
h4 1 of 3 legacy freeCodeCamp certification, representing approximately 400 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/advanced-front-end

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong APIs and Microservices
h4 Developer Certification, representing approximately 300 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/apis-and-microservices

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Data Visualization
h4 Developer Certification, representing approximately 300 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/data-visualization

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Front End Libraries
h4 Developer Certification, representing approximately 300 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/front-end-libraries

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Full Stack
h4 Developer Certification, representing approximately 1800 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/responsive-web-design

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Information Security and Quality Assurance
h4 Developer Certification, representing approximately 300 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/information-security-and-quality-assurance

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong JavaScript Algorithms and Data Structures
h4 Developer Certification, representing approximately 300 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/javascript-algorithms-and-data-structures

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include ../styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Back End Development
h4 Certification, representing approximately 400 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/legacy-back-end

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include ../styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Data Visualization Projects
h4 Developer Certification, representing approximately 400 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/legacy-data-visualization

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include ../styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Front End Development
h4 Certification, representing approximately 400 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/legacy-front-end

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include ../styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Legacy Full Stack Development Program
h4 All three of the legacy freeCodeCamp certifications, representing approximately 1,200 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/legacy-full-stack

View File

@ -0,0 +1,32 @@
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css')
include styles
.certificate-wrapper.container
.row
header
.col-md-5.col-sm-12
.logo
img(class='img-responsive', src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt="freeCodeCamp's Logo")
.col-md-7.col-sm-12
.issue-date Issued&nbsp;
strong #{date}
section.information
.information-container
h3 This certifies that
h1
strong= name
h3 has successfully completed freeCodeCamp's
h1
strong Responsive Web Design
h4 Developer Certification, representing approximately 300 hours of coursework
footer
.row.signatures
img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature")
p
strong Quincy Larson
p Executive Director, freeCodeCamp.org
.row
p.verify Verify this certification at: https://www.freecodecamp.org/certification/#{username}/responsive-web-design

View File

@ -0,0 +1,203 @@
style.
@font-face {
font-family: "Sax Mono";
src: url("/fonts/saxmono.ttf") format("truetype");
}
* {
margin: 0;
padding: 0;
}
.container {
max-width: 1500px;
width: 100%;
padding: 30px;
border: darkgreen 15px solid;
border-radius: 3px;
}
.row {
margin: 0;
}
.col-sm-12 {
padding: 0;
}
.certificate-wrapper {
top: 0;
position: relative;
font-family: "Sax Mono", monospace;
}
header {
width: 100%;
height: 140px;
/*background-image: url('https://i.imgur.com/1FK6aaN.png');
background-repeat: no-repeat;
background-position: top;
background-size: cover;*/
background-color: darkgreen;
}
.logo {
display: flex;
align-items: center;
height: 140px;
margin-left: 100px;
}
.logo img {
max-width: 500px;
width: 100%;
}
.issue-date {
line-height: 140px;
font-size: 20px;
text-align: right;
margin-right: 100px;
color: #fff;
}
.information {
margin-top: -20px;
height: 380px;
text-align: center;
background-color: #efefef;
}
.information-container {
position: relative;
top: 50%;
transform: translateY(-50%);
margin: 0px 100px;
}
p {
margin: 0;
}
h3 {
font-size: 30px;
}
h4 {
margin-top: 25px;
font-size: 20px;
}
h1 {
font-size: 40px;
color: #006400;
}
.signatures {
text-align: center;
margin: 0 auto;
background-color: #efefef;
}
.signatures img {
max-width: 300px;
width: 100%;
margin: 0 auto;
}
.signatures p {
font-size: 18px;
padding-top: 10px;
}
.verify {
padding: 30px 0;
font-size: 15px;
text-align: center;
word-wrap: break-word;
background-color: #efefef;
}
/*adds vertical alignment when the height is bigger than required to display everything*/
@media screen and (min-height: 700px) {
body {
display: flex;
flex-direction: column;
justify-content: center;
height: 100vh;
}
}
/*mobile media queries*/
@media screen and (max-width: 992px) {
header {
height: 160px;
}
.logo {
margin-left: 0;
padding: 20px;
justify-content: center;
height: 80px;
}
.logo img {
margin-top: 20px;
}
.issue-date {
margin-top: 10px;
margin-right: 0;
text-align: center;
line-height: 0px;
word-wrap: break-word;
}
.issue-date strong {
display: block;
margin-top: 15px;
line-height: 25px;
}
.information {
height: 300px;
}
.information-container {
margin: 0px 15px;
text-align: center;
word-wrap: break-word;
}
h3 {
font-size: 25px;
}
h1 {
font-size: 28px;
}
}
@media screen and (max-width: 675px) {
.container {
padding: 0;
border: 0;
}
header {
height: 190px;
}
h3 {
font-size: 15px;
}
h1 {
font-size: 17px;
}
h4 {
font-size: 15px;
margin-top: 20px;
}
}

View File

@ -0,0 +1,14 @@
extends ../layout
block content
h1.text-center Commit to one of these nonprofits
hr
.row
.col-xs-12.col-sm-10.col-sm-offset-1
for nonprofit in nonprofits
.col-xs-12.col-sm-6.col-md-4.height-400
.text-center
h2= nonprofit.displayName
img.testimonial-image.img-responsive.img-center(src=nonprofit.imgUrl)
.button-spacer
a.text-center(href='/commit?nonprofit=#{nonprofit.name}') Commit to #{nonprofit.displayName}
p= nonprofit.description

View File

@ -0,0 +1,110 @@
extends ../layout
block content
h2.text-center Commit to yourself. Commit to a nonprofit.
.row
.col-xs-12.col-sm-6.col-sm-offset-3
p You can give yourself external motivation, and immediately start helping nonprofits. You can do this by pledging a monthly donation to a nonprofit until youve earned one of our certifications. This pledge is completely optional. This pledge is entirely between you and the nonprofit, and no money goes to freeCodeCamp. You can change your commitment or stop it at any time.
.row
.col-xs-12.col-sm-6.col-sm-offset-3.text-center
h3 Pledge to #{displayName}&thinsp;
.button-spacer
a(href='#{imgUrl}' data-lightbox='img-enlarge' alt='#{imgAlt}')
img.img-responsive(src='#{imgUrl}' alt='#{imgAlt}')
p.large-p
= description
p
a(href='/commit/directory') ...or see other nonprofits
.spacer
form.form(name='commit')
.hidden
input(type='text' value='#{name}' name='nonprofit')
.row
.col-xs-12.col-sm-6.col-sm-offset-3
h3 Step 1: Which certification do you pledge to complete?
.btn-group-vertical(data-toggle='buttons' role='group')
label.btn.btn-primary.active
input(type='radio' id="respWebDesignCert" value="Responsive Web Design Certification" name='goal' checked="checked")
| Responsive Web Design
label.btn.btn-primary
input(type='radio' id="frontEndLibsCert" value="Front End Libraries Certification" name='goal')
| Front End Libraries
label.btn.btn-primary
input(type='radio' id="jsAlgoDataStructCert" value="JavaScript Algorithms and Data Structures Certification" name='goal')
| JavaScript Algorithms and Data Structures
label.btn.btn-primary
input(type='radio' id="dataVisCert" value="Data Visualization Certification" name='goal')
| Data Visualization
label.btn.btn-primary
input(type='radio' id="apisMicroservicesCert" value="APIs and Microservices Certification" name='goal')
| APIs and Microservices
label.btn.btn-primary
input(type='radio' id="infosecQaCert" value="Information Security and Quality Assurance Certification" name='goal')
| Information Security and Quality Assurance
.spacer
.row
.col-xs-12.col-sm-6.col-sm-offset-3
h3 Step 2: How much do you want to pledge monthly until you earn that certification?
.btn-group.btn-group-justified(data-toggle='buttons' role='group')
label.btn.btn-primary
input(type='radio' id='5-dollar-pledge' value='5' name='amount')
| $5 per month
label.btn.btn-primary.active
input(type='radio' id='10-dollar-pledge' value='10' name='amount' checked="checked")
| $10 per month
label.btn.btn-primary
input(type='radio' id='25-dollar-pledge' value='25' name='amount')
| $25 per month
label.btn.btn-primary
input(type='radio' id='50-dollar-pledge' value='50' name='amount')
| $50 per month
.spacer
.col-xs-12.col-sm-6.col-sm-offset-3
h3 Step 3: Set up your monthly donation
.row
.col-xs-12.col-sm-6.col-sm-offset-3.text-center
a#commit-btn-donate.btn.btn-block.btn-lg.btn-primary(href=donateUrl target='_blank') Open the #{displayName} donation page
.spacer
.col-xs-12.col-sm-6.col-sm-offset-3
h3#commit-step4-text.disabled
Step 4: Confirm
span#commit-step4-hidden.disabled (Do step 3 first)
span#commit-step4-show.hidden your commitment to your goal
.row
.col-xs-12.col-sm-6.col-sm-offset-3.text-center
button#commit-btn-submit.btn.btn-block.btn-lg.btn-primary.disabled Commit
if pledge
form.row(name='stop-pledge' action='/commit/stop-commitment' method='post')
input(type='hidden', name='_csrf', value=_csrf)
.col-xs-12.col-sm-6.col-sm-offset-3.text-center
.button-spacer
button.btn.btn-block.btn-lg.btn-default(name='submit' type='submit') Stop my current pledge
else
.row
.col-xs-12.col-sm-6.col-sm-offset-3.text-center
.button-spacer
a.btn.btn-block.btn-lg.btn-default(href='/map') Maybe later
script.
$(function() {
$('#commit-btn-donate').click(function() {
$('#commit-btn-submit').removeClass('disabled');
$('#commit-step4-text').removeClass('disabled');
$('#commit-step4-hidden').hide();
$('#commit-step4-show').removeClass('hidden');
});
$('#commit-btn-submit').click(function() {
if (
history &&
typeof history.pushState === 'function'
) {
history.pushState(history.state, null, '/commit/pledge?' + $('form').serialize());
return null;
}
window.location.href = '/commit/pledge?' + $('form').serialize();
});
});

View File

@ -0,0 +1,15 @@
extends ../layout
block content
.panel.panel-info
.panel-body
h3.text-center You've committed!
.row
.col-xs-12.col-sm-6.col-sm-offset-3
p Congratulations, you have committed to giving
span(style='text-transform: capitalize') #{nonprofit}
| #{amount} dollars a month until you have reached your goal
| of completing your #{goal}
.row
.col-xs-12.col-sm-6.col-sm-offset-3
img.img-responsive(src='//i.imgur.com/U1CyEuA.jpg' alt="Girl Develop It participants coding at tables.")
p Girl Develop It is a nonprofit that provides in-person classes for women to learn to code.

View File

@ -0,0 +1,58 @@
doctype html
head
title!= errorTitle
style.
* {
margin: 0;
padding: 0;
outline: 0;
}
body {
padding: 80px 100px;
background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9));
background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9);
background-repeat: no-repeat;
color: #555;
-webkit-font-smoothing: antialiased;
}
h1, h2 {
font-size: 22px;
color: #343434;
}
h1 em, h2 em {
padding: 0 5px;
font-weight: normal;
}
h1 {
font-size: 60px;
}
h2 {
margin-top: 10px;
}
ul li {
list-style: none;
}
#trace {
margin-top: 10px;
margin-left: 60px;
}
body
#wrapper
h1!= title
h2
em!= status
| #{errorTitle}
h2
em User Message:
| #{message}
h2
em Type:
| #{type}
h2
em redirect to:
a(href=redirectTo) #{redirectTo}
h2
em stack trace:
ul#trace!= stack

View File

@ -0,0 +1,10 @@
Camper <%= username %> has completed all six certifications!
Completed Responsive Web Design Certification on <%= responsiveWebDesignDate %>.
Completed Front End Libraries Certification on <%= frontEndLibrariesDate %>.
Completed JavaScript Algorithms and Data Structures Certification on <%= javascriptAlgorithmsDataStructuresDate %>.
Completed Data Visualization Certification on <%= dataVisualizationDate %>.
Completed API's and microservices Certification on <%= apisMicroservicesDate %>.
Completed Information Security and Quality Assurance Certification on <%= infosecQADate %>.
https://www.freecodecamp.org/<%= username %>

View File

@ -0,0 +1,15 @@
Hi <%= name || username %>,
Congratulations on completing all of the freeCodeCamp certifications!
All of your certifications are now live at at: https://www.freecodecamp.org/<%= username %>
Please tell me a bit more about you and your near-term goals.
Are you interested in contributing to our open source projects used by nonprofits?
Also, check out https://www.freecodecamp.org/contribute/ for some fun and convenient ways you can contribute to the community.
Happy coding,
- Quincy Larson, teacher at freeCodeCamp

View File

@ -0,0 +1,9 @@
Here's your sign in link. It will instantly sign you into freeCodeCamp.org - no password necessary:
<%= host %>/internal/passwordless-auth/?email=<%= loginEmail %>&token=<%= loginToken %>
Note: this sign in link will expire after 15 minutes. If you need a new sign in link, go to https://www.freecodecamp.org/signin
See you soon!
- The freeCodeCamp.org Team

View File

@ -0,0 +1,13 @@
Welcome to the freeCodeCamp community!
We have created a new account for you.
Here's your sign in link. It will instantly sign you into freeCodeCamp.org - no password necessary:
<%= host %>/internal/passwordless-auth/?email=<%= loginEmail %>&token=<%= loginToken %>
Note: this sign in link will expire after 15 minutes. If you need a new sign in link, go to https://www.freecodecamp.org/signin
See you soon!
- The freeCodeCamp.org Team

View File

@ -0,0 +1,7 @@
Please confirm this address for freeCodeCamp:
<%= host %>/internal/confirm-email?email=<%= loginEmail %>&token=<%= loginToken %>&emailChange=<%= emailChange %>
Happy coding!
- The freeCodeCamp.org Team

View File

@ -0,0 +1,14 @@
script.
$(document).ready(function getActiveUsers() {
setInterval(function getActiveUsersInterval() {
$.ajax({
type : 'GET',
url : '/api/about/get-active-users',
})
.done(function({ activeUsers }) {
document.getElementById('active-user-count').innerHTML = `
<h3><span class='green-text'>${activeUsers}</span> people are using freeCodeCamp right now</h3>
`;
})
}, 2000)
})

View File

@ -0,0 +1,4 @@
#active-user-count(style='display:none;')
h3
span.green-text=activeUsers
| people are using freeCodeCamp right now

View File

@ -0,0 +1,18 @@
.row
.col-xs-12.col-sm-8.col-sm-offset-2
h2 News Feed
ul.list-group
each item in feed
li.list-group-item
a(href=item.link)
h3=item.title
div !{item.extract}
.spacer
.row
.col-xs-12.col-sm-8.col-sm-offset-2
.more-button-container
div
button.btn.btn-primary.btn-lg(href='https://medium.freecodecamp.org') More Articles
div
button.btn.btn-primary.btn-lg(href='https://freecodecamp.libsyn.com/') More Podcasts

View File

@ -0,0 +1,7 @@
.row.quote-partial
.col-xs-12.col-sm-10.col-sm-offset-1
blockquote.blockquote
span
q=quote
.spacer
footer.quote-author=author

View File

@ -0,0 +1,3 @@
script(src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js')
script(src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js')
// include activeUsersScript

View File

@ -0,0 +1,35 @@
.row
.col-xs-12.col-sm-8.col-sm-offset-2
p.stats
| You have completed&nbsp;
strong
span.green-text=completedChallengeCount
| &nbsp;of&nbsp;
strong
span.green-text=challengeCount
| &nbsp;coding challenges.
p.stats
| You have built&nbsp;
strong
span.green-text=completedProjectCount
| out of&nbsp;
strong
span.green-text 30
| projects.
if !!completedLegacyCertCount
p.stats
| You have earned&nbsp;
strong
span.green-text=completedLegacyCertCount
| out of&nbsp;
strong
span.green-text 3
| legacy certifications.
p.stats
| You have earned&nbsp;
strong
span.green-text=completedCertCount
| out of&nbsp;
strong
span.green-text 6
| certifications.

View File

@ -0,0 +1,11 @@
doctype html
html(lang='en')
head
if title
title= title
else
title freeCodeCamp
include partials/react-stylesheets
body
#news-app-mount!= markup
script(src=cacheBreaker(rev('/js', 'news.js')))

View File

@ -0,0 +1,26 @@
doctype html
html(lang='en').full-size
head
if title
title= title
else
title freeCodeCamp
include partials/react-stylesheets
body.full-size
#fcc.full-size!= markup
script!= state
script.
window.webpackManifest = !{JSON.stringify(chunkManifest || {})};
(function setTheme() {
let fccTheme;
try {
fccTheme = JSON.parse(localStorage.getItem('fcc-theme'));
if (fccTheme && fccTheme === 'night') {
document.body.classList.add('night');
}
}
catch(e) {
fccTheme = null;
}
})();
script(src=cacheBreaker(rev('/js', 'client.js')))

View File

@ -0,0 +1,16 @@
doctype html
html(lang='en')
head
include partials/meta
include partials/stylesheets
if showAside
body.map-aside-body(class=theme !== 'default' ? theme : '')
include partials/scripts
block content
else
body.no-top-and-bottom-margins(class=theme !== 'default' ? theme : '')
include partials/scripts
include partials/navbar
include partials/flash
block content
include partials/footer

View File

@ -0,0 +1,12 @@
doctype html
html(lang='en')
head
include partials/meta
include partials/stylesheets
body.main-container(class=theme !== 'default' ? theme : '')
include partials/scripts
include partials/navbar
include partials/flash
.container
block content
include partials/footer

View File

@ -0,0 +1,90 @@
extends layout
block content
.text-center
.row
h1.landing-heading Learn to code for free.
.big-break
include homePartials/activeUsersView
.big-break
.big-break
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landing-icon-community.svg', alt='Get great references and connections to start your software engineer career')
p.large-p Join a supportive community of millions of coders.
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landing-icon-certificate.svg', alt='Help nonprofits with bro bono code projects')
p.large-p Build projects and earn free certifications.
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landing-icon-experience.svg', alt='Get hired as a developer and start your software engineer career')
p.large-p Get experience by coding for nonprofits.
.big-break
.big-break
.row
.col-xs-12.col-sm-8.col-sm-offset-2
a.btn.btn-cta.signup-btn.btn-block(href="/signin") Start coding (it's free)
.spacer
h2 As featured in:
img.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/as-seen-on.png')
.spacer
hr
.spacer
h2 Launch your developer career
.spacer
.row
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.testimonial-image.img-center(src="https://i.imgur.com/nsvNixW.jpg", alt="Meta's testimonial image")
p.testimonial-copy Through freeCodeCamp, I built a robust and highly functional web app for a nonprofit. This led me to getting a fantastic job.
h3 - Meta Hirschl
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.testimonial-image.img-center(src="https://i.imgur.com/QPpjPac.jpg", alt="Brian's testimonial image")
p.testimonial-copy freeCodeCamp is a great way for disabled veterans like me to retrain. I'm already receiving software engineering job offers.
h3 - Brian Grant
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.testimonial-image.img-center(src="https://i.imgur.com/wjlDigg.jpg", alt="Maxim Orlov's testimonial image")
p.testimonial-copy I joined freeCodeCamp with zero knowledge of web development. 6 months later, I landed my first job as a back end engineer.
h3 - Maxim Orlov
.spacer
hr
.spacer
h2 Learn powerful skills
.spacer
.row
.text-center.negative-35
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.fab.fa-html5.font-awesome-padding
h2.black-text HTML5
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.fab.fa-css3-alt.font-awesome-padding
h2.black-text CSS3
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.fab.fa-js.font-awesome-padding
h2.black-text JavaScript
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.fas.fa-database.font-awesome-padding
h2.black-text Databases
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.fab.fa-github.font-awesome-padding
h2.black-text Git & GitHub
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.fab.fa-node-js.font-awesome-padding
h2.black-text Node.js
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.fab.fa-react.font-awesome-padding
h2.black-text React.js
.col-xs-12.col-sm-6.col-md-3
.landing-skill-icon.custom-landing-skill-icon
img(src='https://s3.amazonaws.com/freecodecamp/d3-logo.svg')
h2.black-text D3.js
.big-break
.row
.col-xs-12.col-sm-8.col-sm-offset-2
a.btn.btn-cta.signup-btn.btn-block(href="/signin") Start coding (it's free)
.big-break
.big-break
hr
.big-break
.big-break
.big-break
include homePartials/scripts

View File

@ -0,0 +1,21 @@
.container
.row.flashMessage
.col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3
if messages.danger
.alert.alert-danger.fade.in
button.close(type='button', data-dismiss='alert')
i.fas.fa-times-circle
for danger in messages.danger
div!= typeof danger === 'string' ? danger : danger.msg
if messages.info
.alert.alert-info.fade.in
button.close(type='button', data-dismiss='alert')
i.fas.fa-times-circle
for info in messages.info
div!= typeof info === 'string' ? info : info.msg
if messages.success
.alert.alert-success.fade.in
button.close(type='button', data-dismiss='alert')
i.fas.fa-times-circle
for success in messages.success
div!= typeof success === 'string' ? success : success.msg

View File

@ -0,0 +1,8 @@
if (user && user.points > 15)
.container
.row.flashMessage.negative-30
.col-xs-12
#bill-board.alert.alert-info.fade.in(style='display: none;')
button.close(type='button', data-dismiss='alert', id='dismiss-bill')
i.fas.fa-times-circle
#bill-content

View File

@ -0,0 +1,2 @@
// scripts should be moved here

View File

@ -0,0 +1,60 @@
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(name='viewport', content='width=device-width, initial-scale=1.0')
title #{title} | freeCodeCamp
link(rel='canonical', href='https://www.freecodecamp.org')
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(name='viewport', content='width=device-width, initial-scale=1.0')
meta(name='csrf-token', content=_csrf)
meta(property="og:title", content="Learn to code with free online courses, programming projects, and interview preparation for developer jobs.")
meta(property="og:site_name", content="freeCodeCamp")
meta(name='twitter:widgets:csp', content='on')
meta(name='p:domain_verify', content='d0bc047a482c03c24f1168004c2a216a')
meta(property="og:url", content="https://www.freecodecamp.org")
meta(property="og:description", content="Learn to code with free online courses, programming projects, and interview preparation for developer jobs.")
meta(property="og:image", content="https://s3.amazonaws.com/freecodecamp/curriculum-diagram-full.jpg")
meta(property="og:type", content="article")
meta(property="article:publisher", content="https://www.facebook.com/freecodecamp")
meta(property="article:section", content="Responsive")
link(rel="publisher", href="https://plus.google.com/+Freecodecamp")
link(rel="author", href="https://plus.google.com/+Freecodecamp")
meta(name="description", content="Learn to code with free online courses, programming projects, and interview preparation for developer jobs.")
meta(name="twitter:creator", content="@freecodecamp")
meta(name="twitter:url", content="http://www.freecodecamp.org")
meta(name="twitter:site", content="@freecodecamp")
meta(name="twitter:card", content="summary_large_image")
meta(name="twitter:image:src", content="https://s3.amazonaws.com/freecodecamp/curriculum-diagram-full.jpg")
meta(name="twitter:title", content="Learn to code for free")
meta(name="twitter:description", content="Learn to code with free online courses, programming projects, and interview preparation for developer jobs.")
meta(content="a40ee5d5dba3bb091ad783ebd2b1383f", name="p:domain_verify")
meta(name="msapplication-TileColor", content="#FFFFFF")
meta(name="msapplication-TileImage", content="/")
link(rel="android-chrome", sizes="144x144" href="https://s3.amazonaws.com/freecodecamp/favicons/android-chrome-144x144.png")
link(rel="android-chrome", sizes="192x192" href="https://s3.amazonaws.com/freecodecamp/favicons/android-chrome-192x192.png")
link(rel="android-chrome", sizes="36x36" href="https://s3.amazonaws.com/freecodecamp/favicons/android-chrome-36x36.png")
link(rel="android-chrome", sizes="48x48" href="https://s3.amazonaws.com/freecodecamp/favicons/android-chrome-48x48.png")
link(rel="android-chrome", sizes="72x72" href="https://s3.amazonaws.com/freecodecamp/favicons/android-chrome-72x72.png")
link(rel="android-chrome", sizes="96x96" href="https://s3.amazonaws.com/freecodecamp/favicons/android-chrome-96x96.png")
link(rel="android-chrome-manifest", href="https://s3.amazonaws.com/freecodecamp/favicons/android-chrome-manifest.json")
link(rel="apple-touch-icon", sizes="114x114", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-114x114.png")
link(rel="apple-touch-icon", sizes="120x120", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-120x120.png")
link(rel="apple-touch-icon", sizes="144x144", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-144x144.png")
link(rel="apple-touch-icon", sizes="152x152", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-152x152.png")
link(rel="apple-touch-icon", sizes="180x180", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png")
link(rel="apple-touch-icon", sizes="57x57", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-57x57.png")
link(rel="apple-touch-icon", sizes="60x60", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-60x60.png")
link(rel="apple-touch-icon", sizes="72x72", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-72x72.png")
link(rel="apple-touch-icon", sizes="76x76", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-76x76.png")
link(rel="apple-touch-icon-precomposed", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-precomposed.png")
link(rel="apple-touch-icon", href="https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon.png")
link(rel="favicon", sizes="16x16", href="https://s3.amazonaws.com/freecodecamp/favicons/favicon-16x16.png")
link(rel="favicon", sizes="32x32", href="https://s3.amazonaws.com/freecodecamp/favicons/favicon-32x32.png")
link(rel="favicon", sizes="96x96", href="https://s3.amazonaws.com/freecodecamp/favicons/favicon-96x96.png")
link(rel="mstile", sizes="144x144", href="https://s3.amazonaws.com/freecodecamp/favicons/mstile-144x144.png")
link(rel="mstile", sizes="150x150", href="https://s3.amazonaws.com/freecodecamp/favicons/mstile-150x150.png")
link(rel="mstile", sizes="310x310", href="https://s3.amazonaws.com/freecodecamp/favicons/mstile-310x310.png")
link(rel="mstile", sizes="310x150", href="https://s3.amazonaws.com/freecodecamp/favicons/mstile-310x150.png")
link(rel="mstile", sizes="70x70", href="https://s3.amazonaws.com/freecodecamp/favicons/mstile-70x70.png")
link(rel="favicon", href="https://s3.amazonaws.com/freecodecamp/favicons/favicon.ico")
link(rel='shortcut icon', href='//s3.amazonaws.com/freecodecamp/favicons/favicon.ico')

View File

@ -0,0 +1,22 @@
nav.navbar.navbar-default.navbar-static-top.nav-height
.navbar-header
button.hamburger.navbar-toggle(type='button', data-toggle='collapse', data-target='.navbar-collapse')
.col-xs-12
span.hamburger-text Menu
a.navbar-brand(href='/')
img.img-responsive.nav-logo(src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt='learn to code javascript at freeCodeCamp logo')
.collapse.navbar-collapse
ul.nav.navbar-nav.navbar-right.hamburger-dropdown
li
a(href='https://learn.freecodecamp.org' rel='noopener') Curriculum
li
a(href='https://forum.freecodecamp.org', target='_blank' rel='noopener') Forum
li
a(href='/news', rel='noopener') News
if !user
li
a(href='/signin') Sign in
else
li
a(href='/settings') Settings

View File

@ -0,0 +1,18 @@
link(rel='stylesheet', type='text/css' href='/css/lato.css')
link(rel='stylesheet', type='text/css' href='/css/ubuntu.css')
link(rel='stylesheet', href='https://use.fontawesome.com/releases/v5.2.0/css/all.css' integrity='sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ' crossorigin='anonymous')
link(rel='stylesheet', href=cacheBreaker(rev('/css', 'main.css')))
include meta
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(name='viewport', content='width=device-width, initial-scale=1.0')
meta(name='csrf-token', content=_csrf)
script.
(function(i,s,o,g,r,a,m){ i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-55446531-1', 'auto');
ga('require', 'displayfeatures');
ga('send', 'pageview');

View File

@ -0,0 +1,18 @@
script.
(function(i,s,o,g,r,a,m){ i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-55446531-1', 'auto');
ga('require', 'displayfeatures');
ga('send', 'pageview');
// Leave the below lines alone!
script.
(function(global) {
global.main = global.main || {};
global.main.isLoggedIn = !{JSON.stringify(!!user)};
global.main.userId = !{JSON.stringify(user && user.id || false)};
}(window))
script(defer, src=rev('/js/lib/fontawesome', 'fa-brands.min.js'))
script(defer, src=rev('/js/lib/fontawesome', 'fa-solid.min.js'))
script(src=rev('/js/lib/fontawesome', 'fontawesome.min.js'))

View File

@ -0,0 +1,4 @@
link(rel='stylesheet', type='text/css' href='/css/lato.css')
link(rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/cal-heatmap/3.5.2/cal-heatmap.css")
link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.8.2/css/lightbox.min.css')
link(rel='stylesheet', href=cacheBreaker(rev('/css', 'main.css')))

View File

@ -0,0 +1,13 @@
extends ../layout
block content
.col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3
html.
<h2 class='text-center'></a>Academic Honesty Policy</h2>
<hr>
<p>Before we issue our verified certification to a camper, he or she must accept our Academic Honesty Pledge, which reads:</p>
<p>"I understand that plagiarism means copying someone elses work and presenting the work as if it were my own, without clearly attributing the original author.</p>
<p>"I understand that plagiarism is an act of intellectual dishonesty, and that people usually get kicked out of university or fired from their jobs if they get caught plagiarizing.</p>
<p>"Aside from using open source libraries such as jQuery and Bootstrap, and short snippets of code which are clearly attributed to their original author, 100% of the code in my projects was written by me, or along with another camper with whom I was pair programming in real time.</p>
<p>"I pledge that I did not plagiarize any of my freeCodeCamp work. I understand that freeCodeCamps team will audit my projects to confirm this."</p>
<p>In the situations where we discover instances of unambiguous plagiarism, we will replace the camper in questions certification with a message that "Upon review, this account has been flagged for academic dishonesty."</p>
<p>As an academic institution that grants achievement-based certifications, we take academic honesty very seriously. If you have any questions about this policy, or suspect that someone has violated it, you can email <a href="mailto:team@freecodecamp.org">team@freecodecamp.org</a> and we will investigate.</p>

View File

@ -0,0 +1,113 @@
extends ../layout-wide
block content
script(src="../../../js/calculator.js")
.row
.col-xs-12.col-sm-10.col-md-8.col-lg-6.col-sm-offset-1.col-md-offset-2.col-lg-offset-3
h1.text-center Coding Bootcamp Cost Calculator
h3.text-center.text-primary#chosen Coming from _______, and making $_______, your true costs will be:
#city-buttons
.spacer
h2.text-center Where do you live?
.spacer
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#atlanta.btn.btn-primary.btn-block.btn-lg Atlanta
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#austin.btn.btn-primary.btn-block.btn-lg Austin
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#brisbane.btn.btn-primary.btn-block.btn-lg Brisbane
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#boulder.btn.btn-primary.btn-block.btn-lg Boulder
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#chicago.btn.btn-primary.btn-block.btn-lg Chicago
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#denver.btn.btn-primary.btn-block.btn-lg Denver
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#hong-kong.btn.btn-primary.btn-block.btn-lg Hong Kong
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#london.btn.btn-primary.btn-block.btn-lg London
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#los-angeles.btn.btn-primary.btn-block.btn-lg Los Angeles
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#manchester.btn.btn-primary.btn-block.btn-lg Manchester
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#melbourne.btn.btn-primary.btn-block.btn-lg Melbourne
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#new-york-city.btn.btn-primary.btn-block.btn-lg New York City
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#portland.btn.btn-primary.btn-block.btn-lg Portland
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#raleigh-durham.btn.btn-primary.btn-block.btn-lg Raleigh-Durham
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#san-francisco.btn.btn-primary.btn-block.btn-lg San Francisco
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#seattle.btn.btn-primary.btn-block.btn-lg Seattle
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#singapore.btn.btn-primary.btn-block.btn-lg Singapore
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#toronto.btn.btn-primary.btn-block.btn-lg Toronto
.col-xs-12.btn-nav
button#other.btn.btn-primary.btn-block.btn-lg Other
.spacer
#income.initially-hidden
.spacer
h2.text-center How much money did you make last year (in USD)?
.spacer
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#0.btn.btn-primary.btn-block.btn-lg(href='#') $0
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#20000.btn.btn-primary.btn-block.btn-lg(href='#') $20,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#30000.btn.btn-primary.btn-block.btn-lg(href='#') $30,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#40000.btn.btn-primary.btn-block.btn-lg(href='#') $40,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#50000.btn.btn-primary.btn-block.btn-lg(href='#') $50,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#60000.btn.btn-primary.btn-block.btn-lg(href='#') $60,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#70000.btn.btn-primary.btn-block.btn-lg(href='#') $70,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#80000.btn.btn-primary.btn-block.btn-lg(href='#') $80,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#90000.btn.btn-primary.btn-block.btn-lg(href='#') $90,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#100000.btn.btn-primary.btn-block.btn-lg(href='#') $100,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#120000.btn.btn-primary.btn-block.btn-lg(href='#') $120,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#140000.btn.btn-primary.btn-block.btn-lg(href='#') $140,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#160000.btn.btn-primary.btn-block.btn-lg(href='#') $160,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#180000.btn.btn-primary.btn-block.btn-lg(href='#') $180,000
.col-xs-12.col-sm-12.col-md-4.btn-nav
button#200000.btn.btn-primary.btn-block.btn-lg(href='#') $200,000
.spacer
#chart.initially-hidden
.d3-centered
svg.chart
#explanation.initially-hidden
.col-xs-12.col-sm-10.col-sm-offset-1
.text-center
button#transform.btn.btn-primary.btn-lg Transform
.button-spacer
a(href='/json/bootcamps.json') View Data Source JSON
span &nbsp; &bullet; &nbsp;
a(href='/coding-bootcamp-cost-calculator') Recalculate
h3 Notes:
ol
li.large-li We assumed an APR of 6% and a term of 3 years. If you happen to have around $15,000 in cash set aside for a coding bootcamp, please ignore this cost.
li.large-li We assume a cost of living of $500 for cities like San Francisco and New York City, and $400 per week for everywhere else.
li.large-li The most substantial cost for most people is lost wages. A 40-hour-per-week job at the US Federal minimum wage would pay at least $15,000 per year. You can read more about economic cost
a(href='https://en.wikipedia.org/wiki/Economic_cost' target='_blank') here
| .
.spacer
.row
.col-xs-12.col-sm-6
img.img-responsive.testimonial-image.img-center(src='https://www.evernote.com/l/AHRIBndcq-5GwZVnSy1_D7lskpH4OcJcUKUB/image.png')
.col-xs-12.col-sm-6
h3 Built by Suzanne Atkinson
p.large-p Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should &thinsp;
a(href='https://twitter.com/intent/user?screen_name=SteelCityCoach' target='_blank') follow her on Twitter
| .
.spacer

View File

@ -0,0 +1,3 @@
extends ../layout
block content
iframe(src="https://docs.google.com/forms/d/1MtQDh8E1Nvkg5jdOucS4LSyk6oMQrN8XTwmQGtgJPAQ/viewform?embedded=true", frameborder="0", marginheight="0", marginwidth="0", width='102%', height=2550, scrolling="no") Loading...

View File

@ -0,0 +1,116 @@
extends ../layout
block content
.text-center
h1.landing-heading We will build software for your nonprofit. Pro Bono.
.big-spacer
.row
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', alt='Image of a briefcase')
p.large-p Apply for a Code Grant.
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', alt='Image of people putting their hands together in a huddle')
p.large-p We'll provide volunteer developers and a project manager.
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', alt='image of two people high-fiving')
p.large-p We'll collaborate with you to build the tool you need.
.spacer
h2 As featured in:
img.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/as-seen-on.png')
hr
.spacer
h1 What nonprofit leaders are saying:
.spacer
.row
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.testimonial-image.img-center(src="https://i.imgur.com/ZHnFFN5.jpg", alt="Ewa's testimonial image")
p.nonprofit-testimonial-copy With freeCodeCamp's valuable contribution, we were able to improve all of our systems and processes as part of our Wonder Women Eastern Indonesia program, and make sure that even more life changing technologies get to where they are needed most.
h3 - Ewa Wojkowska with Kopernik
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.testimonial-image.img-center(src="https://i.imgur.com/KHF8O2i.jpg", alt="Jennifer's testimonial image")
p.nonprofit-testimonial-copy We have been blown away by the professional quality of the work that has been produced by the campers working on our projects. freeCodeCamp has been an invaluable partner and we are grateful for their support.
h3 - Jennifer McDowell with Child First Authority
.col-xs-12.col-sm-12.col-md-4
img.img-responsive.testimonial-image.img-center(src="https://i.imgur.com/9VknVe3.jpg", alt="Stephanie's testimonial image")
p.nonprofit-testimonial-copy We had the pleasure to work with two very talented campers who went above and beyond to create a web-based app for us. I would highly recommend that nonprofits apply to freeCodeCamp with their custom solution needs!
h3 - Stephanie McAllister with Timeraiser
.spacer
hr
.spacer
h1 Solutions we can help you build:
.spacer
.row.text-center
.col-xs-12.col-sm-12.col-md-4
.landing-skill-icon.fa.fa-tasks
h2.black-text Paperless Workflows
.col-xs-12.col-sm-12.col-md-4
.landing-skill-icon.fa.fa-child
h2.black-text Volunteer Management
.col-xs-12.col-sm-12.col-md-4
.landing-skill-icon.fa.fa-users
h2.black-text Community Management
.col-xs-12.col-sm-12.col-md-4
.landing-skill-icon.fa.fa-repeat
h2.black-text Inventory Systems
.col-xs-12.col-sm-12.col-md-4
.landing-skill-icon.fa.fa-truck
h2.black-text Logistics Tools
.col-xs-12.col-sm-12.col-md-4
.landing-skill-icon.fa.fa-wrench
h2.black-text ...and other tools
.spacer
hr
.spacer
h1 Some of the projects we've built for nonprofits:
.spacer
.row
.col-xs-12
h2 Options, Inc.
br
| Big Lake, Minnesota
.embed-responsive.embed-responsive-16by9
iframe.embed-responsive-item(src='//www.youtube.com/embed/V8B4orj0M7Y?rel=0&amp;showinfo=0')
.spacer
.row
.col-xs-12
h2 Child First Authority
br
| Baltimore, Maryland
.embed-responsive.embed-responsive-16by9
iframe.embed-responsive-item(src='//www.youtube.com/embed/O993J5KCR_w?rel=0&amp;showinfo=0')
.spacer
.row
.col-xs-12
h2 Chasdei Kaduri Food Bank
br
| Toronto, Canada
.embed-responsive.embed-responsive-16by9
iframe.embed-responsive-item(src='//www.youtube.com/embed/XUR8E9fy0mE?rel=0&amp;showinfo=0')
.spacer
hr
.spacer
h2 As grantmakers of pro bono code, we approve applications for nonprofits who:
.col-xs-12.col-sm-8.col-sm-offset-2.text-left.large-p
ul.large-li
li
span.fa.fa-code
| &thinsp; have 501(c)(3) status or foreign equivalent.
li
span.fa.fa-code
| &thinsp; have a demonstrated need for custom code.
li
span.fa.fa-code
| &thinsp; have explored existing software solutions.
li
span.fa.fa-code
| &thinsp; already have people who benefit from their services.
li
span.fa.fa-code
| &thinsp; can budget $20 to $30 per month for hosting.
li
span.fa.fa-code
| &thinsp; will commit to using what our developers build.
.row
.col-xs-12.col-sm-8.col-sm-offset-2
.spacer
a.btn.btn-cta.signup-btn.btn-block(href="/nonprofits-form") Apply

View File

@ -0,0 +1,3 @@
extends ../layout
block content
iframe(src="https://docs.google.com/forms/d/1Y9wvQAx5s_puGcC-NRZpKLMgT0iZwajGMbkKlh-piGg/viewform?embedded=true", frameborder="0", marginheight="0", marginwidth="0", width='102%', height=2000, scrolling="no") Loading...

View File

@ -0,0 +1,55 @@
extends ../layout
block content
.jumbotron
.text-center
.row
.col-xs-12
h1.nonprofit-landing.hug-top Get Agile Project Management Experience for the PMI-ACP by Helping Nonprofits
.big-break
.col-xs-12.col-sm-12.col-md-12
.embed-responsive.embed-responsive-16by9
iframe.embed-responsive-item(src='//player.vimeo.com/video/126228100')
.big-break
h2 Your opportunity:
.row
.col-xs-12.col-sm-12.col-md-4
h3.nowrap Plan Projects
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', alt='Image of a briefcase')
p.landing-p You'll triage deliverables and set deadlines.
.col-xs-12.col-sm-12.col-md-4
h3.nowrap Manage Teams
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', alt='Image of people putting their hands together in a huddle')
p.landing-p You'll lead two developers and a nonprofit stakeholder to success.
.col-xs-12.col-sm-12.col-md-4
h3.nowrap Become a PMI-ACP
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', alt='image of two people high-fiving')
p.landing-p You'll learn Agile, get references, and qualify for the PMI-ACP.
.big-break
h2 Solutions you'll help nonprofits build:
.text-center.negative-35
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-globe.font-awesome-padding
h2.black-text Websites
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-credit-card.font-awesome-padding
h2.black-text Donation Systems
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-calendar.font-awesome-padding
h2.black-text Volunteer Systems
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-archive.font-awesome-padding
h2.black-text Inventory Systems
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-graduation-cap.font-awesome-padding
h2.black-text E-learning Platforms
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-list-alt.font-awesome-padding
h2.black-text Paperless Workflows
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-users.font-awesome-padding
h2.black-text Community Tools
.col-xs-12.col-sm-12.col-md-3
i.landing-skill-icon.fas.fa-wrench.font-awesome-padding
h2.black-text ...and other tools
.big-break
a.btn.btn-cta.signup-btn.btn-block(href="/pmi-acp-agile-project-managers-form") I want to lead agile projects for nonprofits

View File

@ -0,0 +1,93 @@
doctype xml
urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
url
loc http://www.freecodecamp.org/
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/nonprofits
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/pmi-acp-agile-project-managers
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/map
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/about
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/donate
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/stories
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/coding-bootcamp-cost-calculator
changefreq monthly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/privacy
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/software-resources-for-nonprofits
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/the-fastest-web-page-on-the-internet
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/academic-honesty
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/code-of-conduct
changefreq weekly
lastmod= now
priority= 0.9
url
loc http://www.freecodecamp.org/how-nonprofit-projects-work
changefreq weekly
lastmod= now
priority= 0.9
each challenge in challenges
url
loc #{appUrl}/challenges/#{challenge.block}/#{challenge.dashedName}
lastmod= now
changefreq weekly
priority= 0.9

View File

@ -0,0 +1,78 @@
extends ../layout
block content
.col-xs-12.col-sm-8.col-sm-offset-2.col-md-6.col-md-offset-3
h2.text-center Software Resources for Nonprofits
hr
p Please note that freeCodeCamp is not partnered with, nor do we receive a referral fee from, any of the following providers. We simply want to help guide you toward a solution for your organization.
h3 Skills-based Volunteer Organizations:
ul
li
a(href='http://givecamp.org/' target='_blank') Give Camp
li
a(href='http://www.volunteermatch.com' target='_blank') Volunteer Match.com
li
a(href='http://www.catchafire.org' target='_blank') Catchafire
li
a(href='http://anyonecanhaveawebsite.com' target='_blank') Anyone Can Have A Website
h3 Building a website:
ul
li
a(href='https://www.youtube.com/watch?v=4AXDKWuY9QM' target='_blank') How to build and deploy a website without writing any code for free
li
a(href='http://www.wix.com/' target='_blank') Wix
li
a(href='https://www.squarespace.com/' target='_blank') Square Space
li
a(href='https://wordpress.com/' target='_blank') WordPress
li
a(href='https://xprs.imcreator.com' target='_blank') Imcreator.com
h3 Donor and Volunteer Management Systems:
ul
li
a(href='http://causesignal.com' target='_blank') Cause Signal
li
a(href='https://www.thedatabank.com/' target='_blank') The Data Bank
li
a(href='http://www.donorsnap.com/' target='_blank') Donor Snap
li
a(href='http://www.donorperfect.com/' target='_blank') Donor Perfect
li
a(href='https://www.blackbaud.com/fundraising-crm/etapestry-donor-management' target='_blank') E Tapestry
li
a(href='http://www.z2systems.com' target='_blank') Z2 Systems
li
a(href='http://www.regpacks.com/volunteer-management' target='_blank') Reg Packs
li
a(href='http://sumac.com' target='_blank') Sumac
li
a(href='http://www.volgistics.com' target='_blank') Volgistics
h3 Inventory Management Systems:
ul
li
a(href='https://www.ordoro.com' target='_blank') Ordoro
li
a(href='http://www.unleashedsoftware.com' target='_blank') Unleashed Software
li
a(href='https://www.ezofficeinventory.com/industries/non-profits' target='_blank') EZ Office Inventory
h3 E-Learning platforms:
ul
li
a(href='http://www.dokeos.com' target='_blank') Dokeos
li
a(href='http://www.efrontlearning.net/' target='_blank') E Front Learning
li
a(href='https://moodle.org/' target='_blank') Moodle
li
a(href='https://sakaiproject.org/' target='_blank') Sakai Project
h3 Community Management:
ul
li
a(href='https://civicrm.org/' target='_blank') CiviCRM
li
a(href='http://tcmgr.com/' target='_blank') Total Community Manager
h3 Electronic Forms:
ul
li
a(href='http://www.google.com/forms' target='_blank') Google Forms
li
a(href='http://www.typeform.com' target='_blank') Typeform

View File

@ -0,0 +1,25 @@
extends ../layout
block content
h1.text-center Stories from happy campers
hr
.row
.col-xs-12.col-sm-10.col-sm-offset-1
.row
for story in stories
.col-xs-12.col-sm-6.col-md-4
.height-500
a(href=story.linkedin target='_blank')
img.testimonial-image.img-responsive.img-center(src=story.image)
h3.text-center= story.camper
| &nbsp;
a.fa.fa-linkedin-square.text-primary(alt="#{story.camper}'s LinkedIn Profile", href=story.linkedin, target='_blank')
p.small-p.text-justify= story.quote
.col-xs-12.col-sm-10.col-sm-offset-1
if moreStories
.text-center
a.btn.btn-lg.btn-primary.btn-primary-ghost.btn-block(href="/all-stories") Show more stories
.spacer
if !user
.text-center
a.btn.btn-cta.signup-btn.btn-block(href="/signin") Start learning to code (it's free)

View File

@ -0,0 +1,7 @@
h1 This is the fastest web page on the internet.
h2 This is raw HTML with no CSS and no JavaScript.
h2 This is served to you lightning fast from the cloud using Node.js and NGINX.
h2 Unfortunately, this doesn't do anything.
h2 I guess speed isn't everything, after all.
h2
a(href='/') Learn to code more useful websites than this one

View File

@ -0,0 +1,9 @@
extends ../layout
block content
.panel.panel-info
.panel-body.text-center
h1 You have successfully been unsubscribed.
h2 Whatever you do, keep coding! :)
if unsubscribeId
.col-xs-12.col-md-8.col-md-offset-2
a.btn.btn-primary.btn-lg.btn-block(href='/resubscribe/#{unsubscribeId}') You can click here to resubscribe

View File

@ -0,0 +1,75 @@
extends ../layout
block content
script.
.panel.panel-info
.panel-heading.text-center
h1 These Sponsors make freeCodeCamp possible
.panel-body
img.img-responsive.img-center.border-radius-5(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner.png')
.spacer
.row
.col-xs-12.col-md-10.col-md-offset-1
h1 Interested in becoming a sponsor? Call us any time at +1 888-888-8888
.spacer
h1.text-center Platinum Sponsors
.row
.col-xs-6
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-12.col-sm-10.col-md-8.col-sm-offset-1.col-md-offset-2.negative-35
h3
a(href='#' target='_blank') Name of Company
p.large-p Sagittis 9 lives climb the curtains lady tincidunt sleep on your face odd consequat lobortis erat eu? Malesuada eros, ac facilisis waffles reddit cute id together lacinia lived faucibus! Sed, sleeping watched diam cat ut mercedes litora? Meet cute aptent lacinia, eu likes quam neighbors tincidunt scelerisque quis loves she.
.col-xs-6
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-12.col-sm-10.col-md-8.col-sm-offset-1.col-md-offset-2.negative-35
h3
a(href='#' target='_blank') Name of Company
p.large-p Sagittis 9 lives climb the curtains lady tincidunt sleep on your face odd consequat lobortis erat eu? Malesuada eros, ac facilisis waffles reddit cute id together lacinia lived faucibus! Sed, sleeping watched diam cat ut mercedes litora? Meet cute aptent lacinia, eu likes quam neighbors tincidunt scelerisque quis loves she.
h1.text-center Gold Sponsors
.row
.col-xs-4
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-12.col-sm-10.col-sm-offset-1.negative-35
h3
a(href='#' target='_blank') Name of Company
p.large-p Sagittis 9 lives climb the curtains lady tincidunt sleep on your face odd consequat lobortis erat eu? Malesuada eros, ac facilisis waffles reddit cute id together lacinia lived faucibus! Sed, sleeping watched diam cat ut mercedes litora? Meet cute aptent lacinia, eu likes quam neighbors tincidunt scelerisque quis loves she.
.col-xs-4
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-12.col-sm-10.col-sm-offset-1.negative-35
h3
a(href='#' target='_blank') Name of Company
p.large-p Sagittis 9 lives climb the curtains lady tincidunt sleep on your face odd consequat lobortis erat eu? Malesuada eros, ac facilisis waffles reddit cute id together lacinia lived faucibus! Sed, sleeping watched diam cat ut mercedes litora? Meet cute aptent lacinia, eu likes quam neighbors tincidunt scelerisque quis loves she.
.col-xs-4
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-12.col-sm-10.col-sm-offset-1.negative-35
h3
a(href='#' target='_blank') Name of Company
p.large-p Sagittis 9 lives climb the curtains lady tincidunt sleep on your face odd consequat lobortis erat eu? Malesuada eros, ac facilisis waffles reddit cute id together lacinia lived faucibus! Sed, sleeping watched diam cat ut mercedes litora? Meet cute aptent lacinia, eu likes quam neighbors tincidunt scelerisque quis loves she.
h1.text-center Silver Sponsors
.row
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')
.col-xs-2
img.img-responsive.img-center(src='http://placekitten.com/200/300')

View File

@ -0,0 +1,26 @@
extends layout
block content
.text-center
.row
h1.landing-heading=title
.big-break
include homePartials/activeUsersView
.big-break
.row
.col-xs-12.col-sm-8.col-sm-offset-2
a(href="/n/7gR5pBM-K?refsource=userhome" target="_blank" class="update-link")
| We're building a massive open dataset about new coders. Take the 2018 New Coder Survey. It only takes 5 minutes.
.big-break
include homePartials/quote
.big-break
.big-break
include homePartials/stats
.big-break
.big-break
.row
.col-xs-12.col-sm-8.col-sm-offset-2
a.btn.btn-cta.btn-block.btn-lg.btn-primary(href="/challenges/current-challenge")
| Go to the coding curriculum
.big-break
.big-break
include homePartials/scripts