chore(server): Move api-server in to it's own DIR
This commit is contained in:
committed by
mrugesh mohapatra
parent
9fba6bce4c
commit
46a217d0a5
20
api-server/server/views/404.jade
Normal file
20
api-server/server/views/404.jade
Normal 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
|
121
api-server/server/views/account/accept-privacy-terms.jade
Normal file
121
api-server/server/views/account/accept-privacy-terms.jade
Normal 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();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
17
api-server/server/views/account/beta.jade
Normal file
17
api-server/server/views/account/beta.jade
Normal 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. 
|
||||
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. 
|
||||
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 
|
||||
a(href='https://forum.freecodecamp.org/t/frequently-asked-questions-about-the-freecodecamp-beta/134331') Frequently Asked Questions
|
||||
| .
|
||||
|
||||
p Happy coding!
|
28
api-server/server/views/account/delete.jade
Normal file
28
api-server/server/views/account/delete.jade
Normal 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:  
|
||||
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');
|
||||
});
|
29
api-server/server/views/account/report-profile.jade
Normal file
29
api-server/server/views/account/report-profile.jade
Normal 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');
|
||||
});
|
25
api-server/server/views/account/reset-progress.jade
Normal file
25
api-server/server/views/account/reset-progress.jade
Normal 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');
|
||||
});
|
188
api-server/server/views/account/show.jade
Normal file
188
api-server/server/views/account/show.jade
Normal 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
|
57
api-server/server/views/account/update-email.jade
Normal file
57
api-server/server/views/account/update-email.jade
Normal 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();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
32
api-server/server/views/certificate/advanced-front-end.jade
Normal file
32
api-server/server/views/certificate/advanced-front-end.jade
Normal 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
|
||||
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
|
@ -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
|
||||
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
|
32
api-server/server/views/certificate/data-visualization.jade
Normal file
32
api-server/server/views/certificate/data-visualization.jade
Normal 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
|
||||
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
|
32
api-server/server/views/certificate/front-end-libraries.jade
Normal file
32
api-server/server/views/certificate/front-end-libraries.jade
Normal 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
|
||||
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
|
32
api-server/server/views/certificate/full-stack.jade
Normal file
32
api-server/server/views/certificate/full-stack.jade
Normal 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
|
||||
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
|
@ -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
|
||||
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
|
@ -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
|
||||
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
|
32
api-server/server/views/certificate/legacy/back-end.jade
Normal file
32
api-server/server/views/certificate/legacy/back-end.jade
Normal 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
|
||||
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
|
@ -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
|
||||
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
|
32
api-server/server/views/certificate/legacy/front-end.jade
Normal file
32
api-server/server/views/certificate/legacy/front-end.jade
Normal 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
|
||||
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
|
32
api-server/server/views/certificate/legacy/full-stack.jade
Normal file
32
api-server/server/views/certificate/legacy/full-stack.jade
Normal 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
|
||||
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
|
@ -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
|
||||
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
|
203
api-server/server/views/certificate/styles.jade
Normal file
203
api-server/server/views/certificate/styles.jade
Normal 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;
|
||||
}
|
||||
}
|
14
api-server/server/views/commit/directory.jade
Normal file
14
api-server/server/views/commit/directory.jade
Normal 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
|
110
api-server/server/views/commit/index.jade
Normal file
110
api-server/server/views/commit/index.jade
Normal 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 you’ve 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} 
|
||||
.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();
|
||||
});
|
||||
});
|
15
api-server/server/views/commit/pledge.jade
Normal file
15
api-server/server/views/commit/pledge.jade
Normal 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.
|
58
api-server/server/views/dev-error.jade
Normal file
58
api-server/server/views/dev-error.jade
Normal 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
|
||||
|
10
api-server/server/views/emails/a-new-user.ejs
Normal file
10
api-server/server/views/emails/a-new-user.ejs
Normal 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 %>
|
15
api-server/server/views/emails/certified.ejs
Normal file
15
api-server/server/views/emails/certified.ejs
Normal 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
|
9
api-server/server/views/emails/user-request-sign-in.ejs
Normal file
9
api-server/server/views/emails/user-request-sign-in.ejs
Normal 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
|
13
api-server/server/views/emails/user-request-sign-up.ejs
Normal file
13
api-server/server/views/emails/user-request-sign-up.ejs
Normal 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
|
@ -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
|
14
api-server/server/views/homePartials/activeUsersScript.jade
Normal file
14
api-server/server/views/homePartials/activeUsersScript.jade
Normal 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)
|
||||
})
|
@ -0,0 +1,4 @@
|
||||
#active-user-count(style='display:none;')
|
||||
h3
|
||||
span.green-text=activeUsers
|
||||
| people are using freeCodeCamp right now
|
18
api-server/server/views/homePartials/newsFeed.jade
Normal file
18
api-server/server/views/homePartials/newsFeed.jade
Normal 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
|
||||
|
7
api-server/server/views/homePartials/quote.jade
Normal file
7
api-server/server/views/homePartials/quote.jade
Normal 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
|
3
api-server/server/views/homePartials/scripts.jade
Normal file
3
api-server/server/views/homePartials/scripts.jade
Normal 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
|
35
api-server/server/views/homePartials/stats.jade
Normal file
35
api-server/server/views/homePartials/stats.jade
Normal file
@ -0,0 +1,35 @@
|
||||
.row
|
||||
.col-xs-12.col-sm-8.col-sm-offset-2
|
||||
p.stats
|
||||
| You have completed
|
||||
strong
|
||||
span.green-text=completedChallengeCount
|
||||
| of
|
||||
strong
|
||||
span.green-text=challengeCount
|
||||
| coding challenges.
|
||||
p.stats
|
||||
| You have built
|
||||
strong
|
||||
span.green-text=completedProjectCount
|
||||
| out of
|
||||
strong
|
||||
span.green-text 30
|
||||
| projects.
|
||||
if !!completedLegacyCertCount
|
||||
p.stats
|
||||
| You have earned
|
||||
strong
|
||||
span.green-text=completedLegacyCertCount
|
||||
| out of
|
||||
strong
|
||||
span.green-text 3
|
||||
| legacy certifications.
|
||||
p.stats
|
||||
| You have earned
|
||||
strong
|
||||
span.green-text=completedCertCount
|
||||
| out of
|
||||
strong
|
||||
span.green-text 6
|
||||
| certifications.
|
11
api-server/server/views/layout-news.jade
Normal file
11
api-server/server/views/layout-news.jade
Normal 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')))
|
26
api-server/server/views/layout-react.jade
Normal file
26
api-server/server/views/layout-react.jade
Normal 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')))
|
16
api-server/server/views/layout-wide.jade
Normal file
16
api-server/server/views/layout-wide.jade
Normal 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
|
12
api-server/server/views/layout.jade
Normal file
12
api-server/server/views/layout.jade
Normal 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
|
90
api-server/server/views/noUserHome.jade
Normal file
90
api-server/server/views/noUserHome.jade
Normal 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
|
21
api-server/server/views/partials/flash.jade
Normal file
21
api-server/server/views/partials/flash.jade
Normal 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
|
8
api-server/server/views/partials/flyer.jade
Normal file
8
api-server/server/views/partials/flyer.jade
Normal 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
|
2
api-server/server/views/partials/footer.jade
Normal file
2
api-server/server/views/partials/footer.jade
Normal file
@ -0,0 +1,2 @@
|
||||
// scripts should be moved here
|
||||
|
60
api-server/server/views/partials/meta.jade
Normal file
60
api-server/server/views/partials/meta.jade
Normal 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')
|
22
api-server/server/views/partials/navbar.jade
Normal file
22
api-server/server/views/partials/navbar.jade
Normal 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
|
18
api-server/server/views/partials/react-stylesheets.jade
Normal file
18
api-server/server/views/partials/react-stylesheets.jade
Normal 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');
|
18
api-server/server/views/partials/scripts.jade
Normal file
18
api-server/server/views/partials/scripts.jade
Normal 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'))
|
4
api-server/server/views/partials/stylesheets.jade
Normal file
4
api-server/server/views/partials/stylesheets.jade
Normal 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')))
|
13
api-server/server/views/resources/academic-honesty.jade
Normal file
13
api-server/server/views/resources/academic-honesty.jade
Normal 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 else’s 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 freeCodeCamp’s 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 question’s 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>
|
113
api-server/server/views/resources/calculator.jade
Normal file
113
api-server/server/views/resources/calculator.jade
Normal 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 •
|
||||
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  
|
||||
a(href='https://twitter.com/intent/user?screen_name=SteelCityCoach' target='_blank') follow her on Twitter
|
||||
| .
|
||||
.spacer
|
3
api-server/server/views/resources/nonprofits-form.jade
Normal file
3
api-server/server/views/resources/nonprofits-form.jade
Normal 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...
|
116
api-server/server/views/resources/nonprofits.jade
Normal file
116
api-server/server/views/resources/nonprofits.jade
Normal 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&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&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&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
|
||||
|   have 501(c)(3) status or foreign equivalent.
|
||||
li
|
||||
span.fa.fa-code
|
||||
|   have a demonstrated need for custom code.
|
||||
li
|
||||
span.fa.fa-code
|
||||
|   have explored existing software solutions.
|
||||
li
|
||||
span.fa.fa-code
|
||||
|   already have people who benefit from their services.
|
||||
li
|
||||
span.fa.fa-code
|
||||
|   can budget $20 to $30 per month for hosting.
|
||||
li
|
||||
span.fa.fa-code
|
||||
|   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
|
@ -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...
|
@ -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
|
93
api-server/server/views/resources/sitemap.jade
Normal file
93
api-server/server/views/resources/sitemap.jade
Normal 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
|
@ -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
|
25
api-server/server/views/resources/stories.jade
Normal file
25
api-server/server/views/resources/stories.jade
Normal 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
|
||||
|
|
||||
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)
|
@ -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
|
9
api-server/server/views/resources/unsubscribed.jade
Normal file
9
api-server/server/views/resources/unsubscribed.jade
Normal 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
|
0
api-server/server/views/sponsors/sponsors.html
Normal file
0
api-server/server/views/sponsors/sponsors.html
Normal file
75
api-server/server/views/sponsors/sponsors.jade
Normal file
75
api-server/server/views/sponsors/sponsors.jade
Normal 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')
|
26
api-server/server/views/userHome.jade
Normal file
26
api-server/server/views/userHome.jade
Normal 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
|
Reference in New Issue
Block a user