Merge branch 'staging' of https://github.com/FreeCodeCamp/freecodecamp into staging
This commit is contained in:
60
app.js
60
app.js
@ -39,7 +39,6 @@ var express = require('express'),
|
||||
homeController = require('./controllers/home'),
|
||||
resourcesController = require('./controllers/resources'),
|
||||
userController = require('./controllers/user'),
|
||||
contactController = require('./controllers/contact'),
|
||||
nonprofitController = require('./controllers/nonprofits'),
|
||||
bonfireController = require('./controllers/bonfire'),
|
||||
coursewareController = require('./controllers/courseware'),
|
||||
@ -263,6 +262,24 @@ app.get('/chat', resourcesController.chat);
|
||||
|
||||
app.get('/twitch', resourcesController.twitch);
|
||||
|
||||
// Agile Project Manager Onboarding
|
||||
|
||||
app.get('/pmi-acp-agile-project-managers', resourcesController.agileProjectManagers);
|
||||
|
||||
app.get('/agile', function(req, res) {
|
||||
res.redirect(301, '/pmi-acp-agile-project-managers');
|
||||
});
|
||||
|
||||
app.get('/pmi-acp-agile-project-managers-form', resourcesController.agileProjectManagersForm);
|
||||
|
||||
// Nonprofit Onboarding
|
||||
|
||||
app.get('/nonprofits', resourcesController.nonprofits);
|
||||
|
||||
app.get('/nonprofits-form', resourcesController.nonprofitsForm);
|
||||
|
||||
|
||||
|
||||
app.get('/map', challengeMapController.challengeMap);
|
||||
|
||||
app.get('/live-pair-programming', function(req, res) {
|
||||
@ -330,59 +347,18 @@ app.get('/email-signin', userController.getEmailSignin);
|
||||
app.post('/email-signup', userController.postEmailSignup);
|
||||
|
||||
app.post('/email-signin', userController.postSignin);
|
||||
app.get('/nonprofits', contactController.getNonprofitsForm);
|
||||
app.post('/nonprofits', contactController.postNonprofitsForm);
|
||||
|
||||
/**
|
||||
* Nonprofit Project routes.
|
||||
*/
|
||||
|
||||
app.get('/nonprofits', nonprofitController.nonprofitsHome);
|
||||
|
||||
app.get('/nonprofits/directory', nonprofitController.nonprofitsDirectory);
|
||||
|
||||
app.get('/nonprofits/are-you-with-a-registered-nonprofit', nonprofitController.areYouWithARegisteredNonprofit);
|
||||
|
||||
app.get('/nonprofits/are-there-people-that-are-already-benefiting-from-your-services', nonprofitController.areTherePeopleThatAreAlreadyBenefitingFromYourServices);
|
||||
|
||||
app.get('/nonprofits/in-exchange-we-ask', nonprofitController.inExchangeWeAsk);
|
||||
|
||||
app.get('/nonprofits/ok-with-javascript', nonprofitController.okWithJavaScript);
|
||||
|
||||
app.get('/nonprofits/how-can-free-code-camp-help-you', nonprofitController.howCanFreeCodeCampHelpYou);
|
||||
|
||||
app.get('/nonprofits/what-does-your-nonprofit-do', nonprofitController.whatDoesYourNonprofitDo);
|
||||
|
||||
app.get('/nonprofits/link-us-to-your-website', nonprofitController.linkUsToYourWebsite);
|
||||
|
||||
app.get('/nonprofits/tell-us-your-name', nonprofitController.tellUsYourName);
|
||||
|
||||
app.get('/nonprofits/tell-us-your-email', nonprofitController.tellUsYourEmail);
|
||||
|
||||
app.get('/nonprofits/your-nonprofit-project-application-has-been-submitted', nonprofitController.yourNonprofitProjectApplicationHasBeenSubmitted);
|
||||
|
||||
app.get('/nonprofits/other-solutions', nonprofitController.otherSolutions);
|
||||
|
||||
app.get('/nonprofits/getNonprofitList', nonprofitController.showAllNonprofits);
|
||||
|
||||
app.get('/nonprofits/interested-in-nonprofit/:nonprofitName', nonprofitController.interestedInNonprofit);
|
||||
|
||||
app.get(
|
||||
'/nonprofits/:nonprofitName',
|
||||
nonprofitController.returnIndividualNonprofit
|
||||
);
|
||||
|
||||
app.get(
|
||||
'/done-with-first-100-hours',
|
||||
passportConf.isAuthenticated,
|
||||
contactController.getDoneWithFirst100Hours
|
||||
);
|
||||
app.post(
|
||||
'/done-with-first-100-hours',
|
||||
passportConf.isAuthenticated,
|
||||
contactController.postDoneWithFirst100Hours
|
||||
);
|
||||
|
||||
app.post(
|
||||
'/update-progress',
|
||||
passportConf.isAuthenticated,
|
||||
|
@ -1,78 +0,0 @@
|
||||
var nodemailer = require('nodemailer'),
|
||||
debug = require('debug')('freecc:cntr:contact'),
|
||||
secrets = require('../config/secrets');
|
||||
|
||||
var transporter = nodemailer.createTransport({
|
||||
service: 'Mandrill',
|
||||
auth: {
|
||||
user: secrets.mandrill.user,
|
||||
pass: secrets.mandrill.password
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* GET /contact
|
||||
* Contact form page.
|
||||
*/
|
||||
|
||||
getNonprofitsForm: function(req, res) {
|
||||
res.render('contact/nonprofits', {
|
||||
title: 'Free Code Work for Nonprofits Project Submission Page'
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* POST /contact
|
||||
* Send a contact form via Nodemailer.
|
||||
*/
|
||||
|
||||
postNonprofitsForm: function(req, res) {
|
||||
var mailOptions = {
|
||||
to: 'team@freecodecamp.com',
|
||||
name: req.body.name,
|
||||
from: req.body.email,
|
||||
subject: 'CodeNonprofit Project Idea from ' + req.body.name,
|
||||
text: req.body.message
|
||||
};
|
||||
|
||||
transporter.sendMail(mailOptions, function (err) {
|
||||
if (err) {
|
||||
req.flash('errors', {msg: err.message});
|
||||
return res.redirect('/nonprofits');
|
||||
}
|
||||
req.flash('success', {msg: 'Email has been sent successfully!'});
|
||||
res.redirect('/nonprofits');
|
||||
});
|
||||
},
|
||||
|
||||
getDoneWithFirst100Hours: function(req, res) {
|
||||
if (req.user.points >= 53) {
|
||||
res.render('contact/done-with-first-100-hours', {
|
||||
title: 'Congratulations on finishing the first 100 hours of Free Code Camp!'
|
||||
});
|
||||
} else {
|
||||
req.flash('errors', {msg: 'Hm... have you finished all the challenges?'});
|
||||
res.redirect('/');
|
||||
}
|
||||
},
|
||||
|
||||
postDoneWithFirst100Hours: function(req, res) {
|
||||
var mailOptions = {
|
||||
to: 'team@freecodecamp.com',
|
||||
name: 'Completionist',
|
||||
from: req.body.email,
|
||||
subject: 'Camper at ' + req.body.email + ' has completed the first 100 hours',
|
||||
text: ''
|
||||
};
|
||||
|
||||
transporter.sendMail(mailOptions, function (err) {
|
||||
if (err) {
|
||||
req.flash('errors', {msg: err.message});
|
||||
return res.redirect('/done-with-first-100-hours');
|
||||
}
|
||||
req.flash('success', {msg: 'Email has been sent successfully!'});
|
||||
res.redirect('/nonprofit-project-instructions');
|
||||
});
|
||||
}
|
||||
};
|
@ -6,12 +6,6 @@ var async = require('async'),
|
||||
debug = require('debug')('freecc:cntr:nonprofits'),
|
||||
R = require('ramda');
|
||||
|
||||
exports.nonprofitsHome = function(req, res) {
|
||||
res.render('nonprofits/home', {
|
||||
title: 'A guide to our Nonprofit Projects'
|
||||
});
|
||||
};
|
||||
|
||||
exports.nonprofitsDirectory = function(req, res) {
|
||||
Nonprofit.find({estimatedHours: { $gt: 0 } }, function(err, nonprofits) {
|
||||
if (err) {
|
||||
|
@ -155,6 +155,30 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
|
||||
nonprofits: function nonprofits(req, res) {
|
||||
res.render('resources/nonprofits', {
|
||||
title: 'A guide to our Nonprofit Projects'
|
||||
});
|
||||
},
|
||||
|
||||
nonprofitsForm: function nonprofitsForm(req, res) {
|
||||
res.render('resources/nonprofits-form', {
|
||||
title: 'A guide to our Nonprofit Projects'
|
||||
});
|
||||
},
|
||||
|
||||
agileProjectManagers: function agileProjectManagers(req, res) {
|
||||
res.render('resources/pmi-acp-agile-project-managers', {
|
||||
title: 'Get Agile Project Management Experience for the PMI-ACP'
|
||||
});
|
||||
},
|
||||
|
||||
agileProjectManagersForm: function agileProjectManagersForm(req, res) {
|
||||
res.render('resources/pmi-acp-agile-project-managers-form', {
|
||||
title: 'Get Agile Project Management Experience for the PMI-ACP'
|
||||
});
|
||||
},
|
||||
|
||||
twitch: function twitch(req, res) {
|
||||
res.render('resources/twitch', {
|
||||
title: "Enter Free Code Camp's Chat Rooms"
|
||||
|
@ -518,7 +518,7 @@ exports.storySubmission = function(req, res, next) {
|
||||
return next(err);
|
||||
}
|
||||
// If the emails of both authors differ, only then proceed with email notification
|
||||
if (data.author.email && (data.author.email !== recipient.email)) {
|
||||
if (typeof data.author !== 'undefined' && data.author.email && typeof recipient !== 'undefined' && recipient.email && (data.author.email !== recipient.email)) {
|
||||
var transporter = nodemailer.createTransport({
|
||||
service: 'Mandrill',
|
||||
auth: {
|
||||
|
@ -821,9 +821,9 @@
|
||||
"<span class='text-info'>Rule #3:</span> Reverse engineer the example project's functionality, and also feel free to personalize it.",
|
||||
"Here are the <a href='http://en.wikipedia.org/wiki/User_story' target='_blank'>user stories</a> you must enable, and optional bonus user stories:",
|
||||
"<span class='text-info'>User Story:</span> As a user, I can play a game of Tic Tac Toe with the computer.",
|
||||
"<span class='text-info'>Bonus User Story:</span> As a user, I can never actually win against the computer - at best I can tie.",
|
||||
"<span class='text-info'>Bonus User Story:</span> As a user, my game will reset as soon as it's over so I can play again.",
|
||||
"<span class='text-info'>Bonus User Story:</span> As a user, I can choose whether I want to play as X or O.",
|
||||
"<span class='text-info'>Hint:</span> Here's an example call to Twitch.tv's JSON API: <code>https://api.twitch.tv/kraken/streams/freecodecamp</code>.",
|
||||
"When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.",
|
||||
"If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.<a class='btn btn-primary btn-block' href='https://twitter.com/intent/tweet?text=Check%20out%20the%20project%20I%20just%20built%20with%20%40FreeCodeCamp:%20%0A%20%23LearnToCode%20%23JavaScript' target='_blank'>Click here then add your link to your tweet's text</a>"
|
||||
],
|
||||
|
@ -258,6 +258,29 @@
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7159d9c442eddfaeb5bdef",
|
||||
"name": "What does Register mean?",
|
||||
"description": [
|
||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||
"<h2 class='text-center'></h2>",
|
||||
"<div class=\"embed-responsive embed-responsive-16by9\"><iframe src=\"//player.vimeo.com/video/107073108\" class=\"embed-responsive-item\"></iframe></div>",
|
||||
"<div class=\"text-left\">",
|
||||
" <h3>These global shortcuts work everywhere on a Mac:",
|
||||
" <ul>",
|
||||
" <li>Control + F = Forward</li>",
|
||||
" <li>Control + B = Backward</li>",
|
||||
" <li>Control + N = Next Line</li>",
|
||||
" <li>Control + P = Previous Line</li>",
|
||||
" <li>Control + H = Backspace</li>",
|
||||
" <li>Control + D = Delete</li>",
|
||||
" <li>Control + A = Beginning of Line</li>",
|
||||
" <li>Control + E = End of Line</li>",
|
||||
" <li>Control + K = Kill line</li>",
|
||||
" </ul>",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c445eddfaeb5bdef",
|
||||
"name": "Gmail Zero Inbox Shortcuts",
|
||||
@ -370,103 +393,6 @@
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c448eddfaeb5bdef",
|
||||
"name": "Live Stream Pair Programming on Twitch.tv",
|
||||
"description": [
|
||||
"<div class=\"text-center\">",
|
||||
" <h1>Live Pair Programming</h1>",
|
||||
" <h2 id=\"next-session\"></h2>",
|
||||
" <h2>Watch the live stream below or on our  <a href=\"http://twitch.tv/freecodecamp\" target=\"_blank\">Twitch.tv channel</a>.</h2>",
|
||||
" <div class=\"row\">",
|
||||
" <div class=\"col-md-8 col-xs-12\">",
|
||||
" <div class=\"embed-responsive embed-responsive-16by9\">",
|
||||
" <iframe src=\"http://www.twitch.tv/freecodecamp/embed\" frameborder=\"0\" scrolling=\"no\"></iframe>",
|
||||
" </div>",
|
||||
" </div>",
|
||||
" <div class=\"col-md-4 col-xs-12\">",
|
||||
" <div class=\"visible-sm visible-xs\">",
|
||||
" <div class=\"embed-responsive embed-responsive-16by9\">",
|
||||
" <iframe src=\"http://www.twitch.tv/freecodecamp/chat?popout=\" frameborder=\"0\" scrolling=\"no\"></iframe>",
|
||||
" </div>",
|
||||
" </div>",
|
||||
" <div class=\"visible-md visible-lg\">",
|
||||
" <div class=\"embed-responsive embed-responsive-twitch-chat\">",
|
||||
" <iframe src=\"http://www.twitch.tv/freecodecamp/chat?popout=\" frameborder=\"0\" scrolling=\"no\"></iframe>",
|
||||
" </div>",
|
||||
" </div>",
|
||||
" </div>",
|
||||
" </div>",
|
||||
" <h1>Previous Live Pair Programming Sessions</h1>",
|
||||
" <div class=\"col-xs-12\">",
|
||||
" <div class=\"embed-responsive embed-responsive-16by9 big-break\">",
|
||||
" <iframe src=\"//www.youtube.com/embed/_BErpDdmBOw\" class=\"embed-responsive-item\"></iframe>",
|
||||
" </div>",
|
||||
" <h3 class=\"wrappable\">link:  <a href=\"http://www.youtube.com/watch/_BErpDdmBOw\">http://www.youtube.com/watch/_BErpDdmBOw</a></h3>",
|
||||
" <div class=\"embed-responsive embed-responsive-16by9 big-break\">",
|
||||
" <iframe src=\"//www.youtube.com/embed/Fn9HMn79KH0\" class=\"embed-responsive-item\"></iframe>",
|
||||
" </div>",
|
||||
" <h3 class=\"wrappable\">link:  <a href=\"http://www.youtube.com/watch/Fn9HMn79KH0\">http://www.youtube.com/watch/Fn9HMn79KH0</a></h3>",
|
||||
" <div class=\"embed-responsive embed-responsive-16by9 big-break\">",
|
||||
" <iframe src=\"//www.youtube.com/embed/S7iRBZJwOAs\" class=\"embed-responsive-item\"></iframe>",
|
||||
" </div>",
|
||||
" <h3 class=\"wrappable\">link:  <a href=\"http://www.youtube.com/watch/S7iRBZJwOAs\">http://www.youtube.com/watch/S7iRBZJwOAs</a></h3>",
|
||||
" <div class=\"embed-responsive embed-responsive-16by9 big-break\">",
|
||||
" <iframe src=\"//www.youtube.com/embed/BHNRg39ZblE\" class=\"embed-responsive-item\"></iframe>",
|
||||
" </div>",
|
||||
" <h3 class=\"wrappable\">link:  <a href=\"http://www.youtube.com/watch/BHNRg39ZblE\">http://www.youtube.com/watch/BHNRg39ZblE</a></h3>",
|
||||
" <div class=\"embed-responsive embed-responsive-16by9 big-break\">",
|
||||
" <iframe src=\"//www.youtube.com/embed/YDfkHlDmehA\" class=\"embed-responsive-item\"></iframe>",
|
||||
" </div>",
|
||||
" <h3 class=\"wrappable\">link:  <a href=\"http://www.youtube.com/watch/YDfkHlDmehA\">http://www.youtube.com/watch/YDfkHlDmehA</a></h3>",
|
||||
" </div>",
|
||||
" <script src=\"/js/lib/moment/moment.js\"></script>",
|
||||
" <script src=\"/js/lib/moment/nextTuesday.js\"></script>",
|
||||
" <script>$('#next-session').text(nextSession());</script>",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c449eddfaeb5bdef",
|
||||
"name": "Nodeschool Challenges",
|
||||
"description": [
|
||||
"<h2 class='text-center'>Learn Node.js, NPM, Express.js, and advanced JavaScript like Functional Programming and Promises</h2><br/>",
|
||||
"<div class=\"embed-responsive embed-responsive-16by9\">",
|
||||
" <iframe src=\"//player.vimeo.com/video/122719685\" class=\"embed-responsive-item\"></iframe>",
|
||||
"</div>",
|
||||
"<div class=\"text-left col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||
" <h3>Here are the NodeSchool courses you should complete:",
|
||||
" <ol>",
|
||||
" <li><a href=\"http://runnable.com/VQuO_Y4BbkhaOOsV/nodeschool-io-s-learnyounode-course-available-in-your-browser-for-node-js-and-freecodecamp\" target=\"_blank\">NodeSchool.io's LearnYouNode course</a></li>",
|
||||
" <li><a href=\"http://runnable.com/VQt7deuMe6RZ3Gcl/nodeschool-io-s-learn-to-npm-course-running-in-your-browser-for-node-js-and-hello-world\" target=\"_blank\">NodeSchool.io's Learn-to-NPM course</a></li>",
|
||||
" <li><a href=\"http://runnable.com/VQufnaRAlaNc9JuM/nodeschool-io-s-express-js-course-available-in-your-browser-for-node-js-and-freecodecamp\" target=\"_blank\">NodeSchool.io's Express.js course</a></li>",
|
||||
" <li><a href=\"http://runnable.com/VQuZjvia8Gxcqkpy/nodeschool-io-s-functional-programming-in-javascript-course-available-in-your-browser-for-node-js-and-freecodecamp\" target=\"_blank\">NodeSchool.io's Functional Programming in JavaScript course</a></li>",
|
||||
" <li><a href=\"http://runnable.com/VQunH26qdytcbLBg/nodeschool-io-s-promise-it-won-t-hurt-promises-course-available-in-your-browser-for-node-js-javascript-and-freecodecamp\" target=\"_blank\">NodeSchool.io's Promise It Won't Hurt Promises course</a></li>",
|
||||
" </ol>",
|
||||
" </h3>",
|
||||
"</div><br/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c450eddfaeb5bdef",
|
||||
"name": "Nonprofit Project Instructions",
|
||||
"description": [
|
||||
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
||||
"<h3>It's time to apply what you've learned here at Free Code Camp.</h3>",
|
||||
"<h3>By the end of this process, you'll have a portfolio of live apps being used by real people.</h3>",
|
||||
"<h3>Please do the following immediately:</h3>",
|
||||
"<h4>",
|
||||
" <ol>",
|
||||
" <li>Complete this form:  <a href=\"http://goo.gl/forms/f61dLt67t8\" target=\"_blank\">http://goo.gl/forms/f61dLt67t8</a>.</li>",
|
||||
" <li>Read this document, which will answer many questions you may have about our nonprofit projects:  <a href=\"/field-guide/guide-to-our-nonprofit-projects\" target=\"_blank\">http://freecodecamp.com/field-guide/guide-to-our-nonprofit-projects</a>.</li>",
|
||||
" <li>We'll send you an invite to our Nonprofit Projects Trello board. Once we do, go there and add yourself to at least 3 nonprofit projects that interest you.</li>",
|
||||
" <li>Finish any unfinished Bonfire challenges. These challenges serve as the Free Code Camp \"exit test\". You must complete these before you can start working on nonprofit projects. If you completed CoderByte or CodeWars challenges instead of Bonfire, email us and we'll take a look: <a href=\"mailto:team@freecodecamp.com\">team@freecodecamp.com</a>.</li>",
|
||||
" </ol>",
|
||||
" <h4>Please email us if you have further questions:  <a href=\"mailto:team@freecodecamp.com\">team@freecodecamp.com</a>.</h4>",
|
||||
"</h4>",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_id": "bd7158d9c451eddfaeb5bded",
|
||||
"name": "Bonfire Style Guide",
|
||||
|
@ -1,29 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.animated.lightSpeedIn Congratulations!
|
||||
.animated.fadeIn.delay-2
|
||||
h2 You've completed the first 100 hours of Free Code Camp!
|
||||
.animated.fadeIn.delay-4
|
||||
h3 Now you're ready to continue your learning by building solutions for nonprofits!
|
||||
h3 First, please enter your email below.
|
||||
br
|
||||
form.form-horizontal(role='form', action="/done-with-first-100-hours/", method='POST', novalidate='novalidate', name='doneWithFirst100HoursForm')
|
||||
input(type='hidden', name='_csrf', value=_csrf)
|
||||
.form-group
|
||||
label(class='col-sm-3 control-label', for='email') Your email *
|
||||
.col-sm-8
|
||||
input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required', ng-keypress='')
|
||||
.col-sm-8.col-sm-offset-3(ng-cloak, ng-show="doneWithFirst100HoursForm.$error.email && !doneWithFirst100HoursForm.email.$pristine")
|
||||
alert(type='danger')
|
||||
span.ion-close-circled
|
||||
| Please enter a valid email format.
|
||||
.col-sm-8.col-sm-offset-3(ng-cloak, ng-show="doneWithFirst100HoursForm.email.$invalid && doneWithFirst100HoursForm.email.$error.required && !doneWithFirst100HoursForm.email.$pristine")
|
||||
alert(type='danger')
|
||||
span.ion-close-circled(id='#email-error').
|
||||
Your email is required.
|
||||
.form-group
|
||||
.col-sm-offset-2.col-sm-8
|
||||
button.btn.btn-primary(type='submit', ng-disabled='doneWithFirst100HoursForm.$invalid')
|
||||
span.ion-paper-airplane
|
||||
| Submit
|
@ -1,90 +0,0 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
.jumbotron
|
||||
.text-center
|
||||
h1.nonprofit-landing.hug-top Get pro bono code for your nonprofit
|
||||
.big-break
|
||||
h2 Our process:
|
||||
.row
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Your idea
|
||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', title='Get great references and connections to help you get a job')
|
||||
p.landing-p You tell us how we can help you.
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Our team
|
||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', title='Build a portfolio of apps for nonprofits')
|
||||
p.landing-p We'll hand pick developers and a project manager.
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Your solution
|
||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', title='Help nonprofits')
|
||||
p.landing-p Together we'll set milestones and complete your project.
|
||||
.big-break
|
||||
h2 Solutions we can help you build:
|
||||
.text-center.negative-35
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-android-globe
|
||||
h2.black-text Websites
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-card
|
||||
h2.black-text Donation Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-android-calendar
|
||||
h2.black-text Volunteer Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-box
|
||||
h2.black-text Inventory Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-university
|
||||
h2.black-text E-learning Platforms
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-list
|
||||
h2.black-text Web Forms
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-people
|
||||
h2.black-text Community Tools
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-settings
|
||||
h2.black-text ...and other tools
|
||||
br
|
||||
br
|
||||
.big-break
|
||||
|
||||
script.
|
||||
challengeName = 'Home'
|
||||
.big-break
|
||||
h3 Fill in this form. We'll get back to you within 48 hours.
|
||||
h4
|
||||
form.form-horizontal(role='form', action="/nonprofits/", method='POST', novalidate='novalidate', name='nonprofitForm')
|
||||
input(type='hidden', name='_csrf', value=_csrf)
|
||||
.form-group
|
||||
label(class='col-sm-2 control-label', for='name') Your name *
|
||||
.col-sm-8
|
||||
input.form-control(type='text', name='name', id='name', autocomplete="off", ng-model='name', required='required')
|
||||
.col-sm-8.col-sm-offset-2(ng-cloak, ng-show="nonprofitForm.name.$invalid && nonprofitForm.name.$error.required && !nonprofitForm.name.$pristine")
|
||||
alert(type='danger')
|
||||
span.ion-close-circled(id='#name-error')
|
||||
| Your name is required.
|
||||
.form-group
|
||||
label(class='col-sm-2 control-label', for='email') Your email *
|
||||
.col-sm-8
|
||||
input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required')
|
||||
.col-sm-8.col-sm-offset-2(ng-cloak, ng-show="nonprofitForm.email.$invalid && nonprofitForm.email.$error.required && !nonprofitForm.email.$pristine")
|
||||
alert(type='danger')
|
||||
span.ion-close-circled(id='#email-error').
|
||||
Your email is required.
|
||||
.form-group
|
||||
label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. *
|
||||
.col-sm-8
|
||||
textarea.form-control(type='text', name='message', id='message', rows='7', autocomplete="off", ng-model='message', required='required')
|
||||
.col-sm-8.col-sm-offset-2(ng-cloak, ng-show="nonprofitForm.message.$invalid && nonprofitForm.message.$error.required && !nonprofitForm.message.$pristine")
|
||||
alert(type='danger')
|
||||
span.ion-close-circled(id='#message-error')
|
||||
| Your message is required.
|
||||
.form-group
|
||||
.col-sm-offset-2.col-sm-8
|
||||
button.btn.btn-primary(type='submit', ng-disabled='nonprofitForm.$invalid')
|
||||
span.ion-paper-airplane
|
||||
| Submit
|
||||
script.
|
||||
var challengeName = 'Non-profit Interest'
|
@ -1,12 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 We build solutions for nonprofits who are already serving a need. Are there people who already benefit from your services?
|
||||
.spacer
|
||||
.row
|
||||
.col-xs-6
|
||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/ok-with-javascript') Yes
|
||||
.col-xs-6
|
||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') No
|
@ -1,12 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 Do you represent a nonprofit organization that is registered with your government?
|
||||
.spacer
|
||||
.row
|
||||
.col-xs-6
|
||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/are-there-people-that-are-already-benefiting-from-your-services') Yes
|
||||
.col-xs-6
|
||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') No
|
@ -1,83 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron
|
||||
.text-center
|
||||
h2.nonprofit-landing.hug-top We'll code for your nonprofit, pro bono
|
||||
.big-break
|
||||
h2 Some of our success stories
|
||||
.row
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-jen.jpg", alt="@jenthebest's testimonial image")
|
||||
.testimonial-copy Getting back on track with Free Code Camp and committing to a new career in 2015!
|
||||
h3 - @jenbestyoga
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-tate.jpg", alt="@TateThurston's testimonial image")
|
||||
.testimonial-copy Just built my company's website with skills I've learned from Free Code Camp!
|
||||
h3 - @TateThurston
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-cynthia.jpg", alt="@cynthialanel's testimonial image")
|
||||
.testimonial-copy I'm currently working through Free Code Camp to improve my JavaScript. The community is very welcoming!
|
||||
h3 - @cynthialanel
|
||||
.big-break
|
||||
a.btn.btn-cta.signup-btn(href="/nonprofits/are-you-with-a-registered-nonprofit") Get pro bono help for my nonprofit
|
||||
.big-break
|
||||
h2 Our process
|
||||
.row
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Your idea
|
||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', title='Get great references and connections to help you get a job')
|
||||
p.landing-p You tell us how we can help you.
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Our team
|
||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', title='Build a portfolio of apps for nonprofits')
|
||||
p.landing-p We'll hand pick developers and a project manager.
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Your solution
|
||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', title='Help nonprofits')
|
||||
p.landing-p Together we'll set milestones and complete your project.
|
||||
.big-break
|
||||
h2 Solutions we can help you build:
|
||||
.text-center.negative-35
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-android-globe
|
||||
h2.black-text Websites
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-card
|
||||
h2.black-text Donation Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-android-calendar
|
||||
h2.black-text Volunteer Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-box
|
||||
h2.black-text Inventory Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-university
|
||||
h2.black-text E-learning Platforms
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-list
|
||||
h2.black-text Web Forms
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-people
|
||||
h2.black-text Community Tools
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-settings
|
||||
h2.black-text ...and other tools
|
||||
br
|
||||
br
|
||||
.big-break
|
||||
h2 Why you should join our community right now:
|
||||
h3.col-xs-offset-0.col-sm-offset-1
|
||||
ul.text-left
|
||||
li.ion-code   We're thousands of professionals, all learning to code together
|
||||
li.ion-code   We're building projects for dozens of nonprofits
|
||||
li.ion-code   Our community is 100% free and open source
|
||||
li.ion-code   You'll learn Full Stack JavaScript and become a Software Engineer
|
||||
li.ion-code   You'll work through our focused, interactive courses and tutorials
|
||||
li.ion-code   You'll learn to code at your own pace, in your browser or on your phone
|
||||
li.ion-code   You'll become qualified for thousands of jobs currently going unfilled
|
||||
li.ion-code   You can get help in real time from our community chat rooms and forum
|
||||
li.ion-code   We all share one common goal: to boost our careers with code
|
||||
.big-break
|
||||
a.btn.btn-cta.signup-btn(href="/nonprofits/are-you-with-a-registered-nonprofit") Get pro bono help for my nonprofit
|
||||
script.
|
||||
challengeName = 'Home'
|
@ -1,33 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 How can Free Code Camp help you?
|
||||
.text-left.form-inline
|
||||
h3.col-xs-12.col-sm-offset-5.checkbox-table
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='website')
|
||||
label.ion-android-globe Websites
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='donation')
|
||||
label.ion-card Donation Systems
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='volunteer')
|
||||
label.ion-android-calendar Volunteer Systems
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='inventory')
|
||||
label.ion-ios-box Inventory Systems
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='eLearning')
|
||||
label.ion-university E-learning Platforms
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='form')
|
||||
label.ion-ios-list Web Forms
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='community')
|
||||
label.ion-ios-people Community Tools
|
||||
.col-xs-12
|
||||
input.checkbox(type='checkbox', id='other')
|
||||
label.ion-settings Other tools
|
||||
button#next-step.btn.btn-primary.btn-big.btn-block(type='submit') I've selected all that apply and am ready to move on
|
@ -1,17 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron
|
||||
h1.hug-top.text-center Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 Great! In exchange for our help, we ask only that you:
|
||||
h3
|
||||
ol
|
||||
li Appoint one principal stakeholder to serve on behalf of your organization.
|
||||
li Communicate with our campers on a regular basis, to answer questions and provide them with direction.
|
||||
li Commit to using the solution that our campers build for your nonprofit.
|
||||
.spacer
|
||||
.row
|
||||
.col-xs-6
|
||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/how-can-free-code-camp-help-you') Sounds good!
|
||||
.col-xs-6
|
||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') This might not be for us.
|
@ -1,14 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 Link us to the website, blog, or social media page that best represents your organization.
|
||||
.spacer
|
||||
form(role='form', method='GET', action="/nonprofits/tell-us-your-email/?" + existingParams)
|
||||
input(type='hidden', name='_csrf', value=_csrf)
|
||||
.formgroup
|
||||
.input-group
|
||||
input.form-control.big-text-field.field-responsive(type='text', name='link', autocomplete='off', maxlength='500', autofocus='')
|
||||
span.input-group-btn
|
||||
button.btn.btn-big.btn-primary.btn-responsive Submit
|
@ -1,12 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 Our campers are learning to code using modern full stack JavaScript technologies like Node.js. We do not build or maintain Wordpress, Drupal, or other non-JavaScript based frameworks.
|
||||
.spacer
|
||||
.row
|
||||
.col-xs-6
|
||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/in-exchange-we-ask') Sounds good!
|
||||
.col-xs-6
|
||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') This might not be for us.
|
@ -1,14 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 Please tell us your email
|
||||
.spacer
|
||||
form(role='form', method='GET', novalidate='novalidate', name='nonprofitForm', action="/nonprofits/tell-us-your-name/")
|
||||
input(type='hidden', name='_csrf', value=_csrf)
|
||||
.formgroup
|
||||
.input-group
|
||||
input.form-control.big-text-field.field-responsive(type='text', name='email', autocomplete='off', maxlength='500', autofocus='')
|
||||
span.input-group-btn
|
||||
button.btn.btn-big.btn-primary.btn-responsive Submit
|
@ -1,13 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 Please tell us your name
|
||||
.spacer
|
||||
form(role='form', method='POST', novalidate='novalidate', name='nonprofitForm', action="/nonprofits/finish-application/")
|
||||
.formgroup
|
||||
.input-group
|
||||
input.form-control.big-text-field.field-responsive(type='text', name='name', autocomplete='off', maxlength='140', autofocus='')
|
||||
span.input-group-btn
|
||||
button.btn.btn-big.btn-primary.btn-responsive Submit
|
@ -1,28 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 In 140 characters or less, what does your nonprofit do? For whom?
|
||||
.spacer
|
||||
form(role='form', method='GET', action="/nonprofits/link-us-to-your-website/")
|
||||
input(type='hidden', name='_csrf', value=_csrf)
|
||||
.formgroup
|
||||
.input-group
|
||||
input.form-control.big-text-field.field-responsive#what-does-the-nonprofit-do(type='text', maxlength='140', autofocus='', autocomplete='off', name='mission')
|
||||
span.input-group-btn
|
||||
button.btn.btn-big.btn-primary.btn-responsive(href='/nonprofits/link-us-to-your-website') Submit
|
||||
.text-left
|
||||
span#what-does-the-nonprofit-do-feedback
|
||||
|
||||
script.
|
||||
var text_max = 140;
|
||||
$('#what-does-the-nonprofit-do-feedback').html(text_max + ' characters remaining');
|
||||
$('#what-does-the-nonprofit-do').keyup(function (e) {
|
||||
if (e.which === 13 || e === 13) {
|
||||
$('#submit-comment-to-comment').click();
|
||||
}
|
||||
var text_length = $('#what-does-the-nonprofit-do').val().length;
|
||||
var text_remaining = text_max - text_length;
|
||||
$('#what-does-the-nonprofit-do-feedback').html(text_remaining + ' characters remaining');
|
||||
});
|
@ -1,6 +0,0 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron.text-center
|
||||
h1.hug-top Nonprofit Sign Up
|
||||
include ../partials/nonprofit-application-progress-bar
|
||||
h2 Thank you for reaching out to us. We’ll send you an email no later than #{getBackDay}.
|
28
views/resources/nonprofits-form.jade
Normal file
28
views/resources/nonprofits-form.jade
Normal file
@ -0,0 +1,28 @@
|
||||
html.
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<!--Add the title of your typeform below-->
|
||||
<title>nonprofit-projects</title>
|
||||
<!--CSS styles that ensure your typeform takes up all the available screen space (DO NOT EDIT!)-->
|
||||
<style type="text/css">
|
||||
html{
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
iframe{
|
||||
position: absolute;
|
||||
left:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
top:0;
|
||||
border:0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="typeform-full" width="100%" height="100%" frameborder="0" src="https://freecodecamp.typeform.com/to/JxMS5a"></iframe>
|
||||
<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js"></script>
|
||||
</body>
|
||||
</html>
|
55
views/resources/nonprofits.jade
Normal file
55
views/resources/nonprofits.jade
Normal file
@ -0,0 +1,55 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron
|
||||
.text-center
|
||||
.row
|
||||
.col-xs-12
|
||||
h1.nonprofit-landing.hug-top Get pro bono code for your nonprofit
|
||||
.big-break
|
||||
.col-xs-12.col-sm-12.col-md-12
|
||||
.embed-responsive.embed-responsive-16by9
|
||||
iframe.embed-responsive-item(src='https://www.youtube.com/embed/KOs0m_AhkXA')
|
||||
.big-break
|
||||
h2 Our process:
|
||||
.row
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Your idea
|
||||
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 tell us how we can help you.
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Our team
|
||||
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 We'll hand pick developers and a project manager.
|
||||
.col-xs-12.col-sm-12.col-md-4
|
||||
h3.nowrap Your solution
|
||||
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 Together we'll set milestones and complete your project.
|
||||
.big-break
|
||||
h2 Solutions we can help you build:
|
||||
.text-center.negative-35
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-android-globe
|
||||
h2.black-text Websites
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-card
|
||||
h2.black-text Donation Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-android-calendar
|
||||
h2.black-text Volunteer Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-box
|
||||
h2.black-text Inventory Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-university
|
||||
h2.black-text E-learning Platforms
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-list
|
||||
h2.black-text Paperless Workflows
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-people
|
||||
h2.black-text Community Tools
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-settings
|
||||
h2.black-text ...and other tools
|
||||
.big-break
|
||||
a.btn.btn-cta.signup-btn.btn-block(href="/nonprofits-form") My nonprofit needs coding help
|
29
views/resources/pmi-acp-agile-project-managers-form.jade
Normal file
29
views/resources/pmi-acp-agile-project-managers-form.jade
Normal file
@ -0,0 +1,29 @@
|
||||
html.
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<!--Add the title of your typeform below-->
|
||||
<title>PMI-ACP</title>
|
||||
|
||||
<!--CSS styles that ensure your typeform takes up all the available screen space (DO NOT EDIT!)-->
|
||||
<style type="text/css">
|
||||
html{
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
iframe{
|
||||
position: absolute;
|
||||
left:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
top:0;
|
||||
border:0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="typeform-full" width="100%" height="100%" frameborder="0" src="https://freecodecamp.typeform.com/to/MhH9mp"></iframe>
|
||||
<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js"></script>
|
||||
</body>
|
||||
</html>
|
55
views/resources/pmi-acp-agile-project-managers.jade
Normal file
55
views/resources/pmi-acp-agile-project-managers.jade
Normal file
@ -0,0 +1,55 @@
|
||||
extends ../layout
|
||||
block content
|
||||
.jumbotron
|
||||
.text-center
|
||||
.row
|
||||
.col-xs-12
|
||||
h1.nonprofit-landing.hug-top Get Agile Project Management Experience for the PMI-ACP by Helping Nonprofits
|
||||
.big-break
|
||||
.col-xs-12.col-sm-12.col-md-12
|
||||
.embed-responsive.embed-responsive-16by9
|
||||
iframe.embed-responsive-item(src='https://www.youtube.com/embed/KOs0m_AhkXA')
|
||||
.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
|
||||
.landing-skill-icon.ion-android-globe
|
||||
h2.black-text Websites
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-card
|
||||
h2.black-text Donation Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-android-calendar
|
||||
h2.black-text Volunteer Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-box
|
||||
h2.black-text Inventory Systems
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-university
|
||||
h2.black-text E-learning Platforms
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-list
|
||||
h2.black-text Paperless Workflows
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-ios-people
|
||||
h2.black-text Community Tools
|
||||
.col-xs-12.col-sm-12.col-md-3
|
||||
.landing-skill-icon.ion-settings
|
||||
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
|
Reference in New Issue
Block a user