make new landing pages and forms for project managers and nonprofits

This commit is contained in:
Quincy Larson
2015-04-27 16:17:29 -07:00
parent c50ce70749
commit fd456ec9be
21 changed files with 209 additions and 489 deletions

60
app.js
View File

@ -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,

View File

@ -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');
});
}
};

View File

@ -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) {

View File

@ -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"

View File

@ -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

View File

@ -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'

View File

@ -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

View File

@ -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

View File

@ -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'

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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');
});

View File

@ -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. Well send you an email no later than #{getBackDay}.

View 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>

View 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

View 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>

View File

@ -0,0 +1,55 @@
extends ../layout
block content
.jumbotron
.text-center
.row
.col-xs-12
h1.nonprofit-landing.hug-top Get Agile Project Management Experience for the PMI-ACP by Helping Nonprofits
.big-break
.col-xs-12.col-sm-12.col-md-12
.embed-responsive.embed-responsive-16by9
iframe.embed-responsive-item(src='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-manager-form") I want to lead agile projects for nonprofits