diff --git a/common/models/user.json b/common/models/user.json index 737b2055e0..2dbcceeac3 100644 --- a/common/models/user.json +++ b/common/models/user.json @@ -179,6 +179,36 @@ "description": "Campers is full stack certified", "default": false }, + "isRespWebDesignCert": { + "type": "boolean", + "description": "Camper is data visualization certified", + "default": false + }, + "isNewDataVisCert": { + "type": "boolean", + "description": "Camper is responsive web design certified", + "default": false + }, + "isFrontEndLibsCert": { + "type": "boolean", + "description": "Camper is front end libraries certified", + "default": false + }, + "isJsAlgoDataStructCert": { + "type": "boolean", + "description": "Camper is javascript algorithms and data structures certified", + "default": false + }, + "isApisMicroservicesCert": { + "type": "boolean", + "description": "Camper is apis and microservices certified", + "default": false + }, + "isInfosecQaCert": { + "type": "boolean", + "description": "Camper is information security and quality assurance certified", + "default": false + }, "isChallengeMapMigrated": { "type": "boolean", "description": "Migrate completedChallenges array to challenge map", diff --git a/seed/challenges/01-responsive-web-design/claim-your-responsive-web-design-certificate.json b/seed/challenges/01-responsive-web-design/claim-your-responsive-web-design-certificate.json index fb4a4a4d8b..60fb8700a4 100644 --- a/seed/challenges/01-responsive-web-design/claim-your-responsive-web-design-certificate.json +++ b/seed/challenges/01-responsive-web-design/claim-your-responsive-web-design-certificate.json @@ -8,9 +8,9 @@ "title": "Claim Your Responsive Web Design Certificate", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/GjTPLxI.jpg", "An image of our Responsive Web Design Certificate", - "This challenge will give you your verified Responsive Web Design Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", + "This challenge will give you your verified Responsive Web Design Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges, and all our responsive web design projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -20,9 +20,9 @@ "#" ], [ - "//i.imgur.com/UedoV2G.jpg", - "An image of the text \"Front End Development Certificate requirements\"", - "Let's confirm that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. Click the button below to verify this.", + "//i.imgur.com/cyRVnUa.jpg", + "An image of the text \"Responsive Web Design requirements\"", + "Let's confirm that you have completed all of our responsive web design projects. Click the button below to verify this.", "#" ], [ @@ -36,11 +36,11 @@ { "properties": [ "isHonest", - "isFrontEndCert" + "isRespWebDesignCert" ], "apis": [ "/certificate/honest", - "/certificate/verify/front-end" + "/certificate/verify/responsive-web-design" ], "stepIndex": [ 1, @@ -77,9 +77,9 @@ "title": "Reclama tu certificado de Desarrollo de interfaces", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", - "Una imagen que muestra nuestro certificado de Desarrollo de interfaces", - "Este desafío te otorga tu certificado autenticado de Desarrollo de interfaces. Antes de que podamos emitir tu certificado, debemos verificar que has completado todos los desafíos básicos e intermedios de diseño de algoritmos, y todos los proyectos básicos e intermedios de desarrollo de interfaces. También debes aceptar nuestro Juramento de honestidad académica. Pulsa el botón siguiente para iniciar este proceso.", + "//i.imgur.com/GjTPLxI.jpg", + "An image of our Responsive Web Design Certificate", + "This challenge will give you your verified Responsive Web Design Certificate. Before we issue your certificate, we must verify that you have completed all of our responsive web design projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -89,9 +89,9 @@ "#" ], [ - "//i.imgur.com/14F2Van.jpg", - "Una imagen del texto \"Front End Development Certificate requirements\"", - "Confirmemos que has completado todos nuestros desafíos básicos e intermedios de diseño de algoritmos, y todos nuestros proyectos básicos e intermedios de desarrollo de interfaces. Pulsa el botón siguiente para hacer la verificación.", + "//i.imgur.com/cyRVnUa.jpg", + "An image of the text \"Responsive Web Design requirements\"", + "Let's confirm that you have completed all of our responsive web design projects. Click the button below to verify this.", "#" ], [ diff --git a/seed/challenges/02-javascript-algorithms-and-data-structures/claim-your-javascript-algorithms-and-data-structures.json b/seed/challenges/02-javascript-algorithms-and-data-structures/claim-your-javascript-algorithms-and-data-structures.json index d865160fbe..15d2f606d8 100644 --- a/seed/challenges/02-javascript-algorithms-and-data-structures/claim-your-javascript-algorithms-and-data-structures.json +++ b/seed/challenges/02-javascript-algorithms-and-data-structures/claim-your-javascript-algorithms-and-data-structures.json @@ -8,7 +8,7 @@ "title": "Claim Your JavaScript Algorithms and Data Structures Certificate", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/EzMrezJ.jpg", "An image of our JavaScript Algorithms and Data Structures Certificate", "This challenge will give you your verified JavaScript Algorithms and Data Structures Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" @@ -20,8 +20,8 @@ "#" ], [ - "//i.imgur.com/UedoV2G.jpg", - "An image of the text \"JavaScript Algorithms and Data Structures Certificate Requirements\"", + "//i.imgur.com/rx2gKfB.jpg", + "An image of the text \"JavaScript Algorithms and Data Structures requirements\"", "Let's confirm that you have completed all of our JavaScript Algorithms and Data Structures projects. Click the button below to verify this.", "#" ], @@ -36,11 +36,11 @@ { "properties": [ "isHonest", - "isFrontEndCert" + "isJsAlgoDataStructCert" ], "apis": [ "/certificate/honest", - "/certificate/verify/front-end" + "/certificate/verify/javascript-algorithms-data-structures" ], "stepIndex": [ 1, @@ -74,9 +74,9 @@ "challengeType": 7, "descriptionEs": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/EzMrezJ.jpg", "Una imagen que muestra nuestro certificado de Desarrollo de interfaces", - "Este desafío te otorga tu certificado autenticado de Desarrollo de interfaces. Antes de que podamos emitir tu certificado, debemos verificar que has completado todos los desafíos básicos e intermedios de diseño de algoritmos, y todos los proyectos básicos e intermedios de desarrollo de interfaces. También debes aceptar nuestro Juramento de honestidad académica. Pulsa el botón siguiente para iniciar este proceso.", + "This challenge will give you your verified JavaScript Algorithms and Data Structures Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -86,9 +86,9 @@ "#" ], [ - "//i.imgur.com/14F2Van.jpg", - "Una imagen del texto \"Front End Development Certificate requirements\"", - "Confirmemos que has completado todos nuestros desafíos básicos e intermedios de diseño de algoritmos, y todos nuestros proyectos básicos e intermedios de desarrollo de interfaces. Pulsa el botón siguiente para hacer la verificación.", + "//i.imgur.com/rx2gKfB.jpg", + "An image of the text \"JavaScript Algorithms and Data Structures requirements\"", + "Let's confirm that you have completed all of our basic and intermediate algorithm scripting challenges. Click the button below to verify this.", "#" ], [ diff --git a/seed/challenges/03-front-end-libraries/claim-your-front-end-libraries-certificate.json b/seed/challenges/03-front-end-libraries/claim-your-front-end-libraries-certificate.json index 64096ce0d9..5e68368cf3 100644 --- a/seed/challenges/03-front-end-libraries/claim-your-front-end-libraries-certificate.json +++ b/seed/challenges/03-front-end-libraries/claim-your-front-end-libraries-certificate.json @@ -8,9 +8,9 @@ "title": "Claim Your Front End Libraries Certificate", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/vOtZumH.jpg", "An image of our Front End Libraries Certificate", - "This challenge will give you your verified Front End Libraries Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", + "This challenge will give you your verified Front End Libraries Certificate. Before we issue your certificate, we must verify that you have completed all of our front end libraries projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -20,9 +20,9 @@ "#" ], [ - "//i.imgur.com/UedoV2G.jpg", - "An image of the text \"Front End Development Certificate requirements\"", - "Let's confirm that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. Click the button below to verify this.", + "//i.imgur.com/GJeTCMS.jpg", + "An image of the text \"Front End Libraries Certificate requirements\"", + "Let's confirm that you have completed all of our front end libraries projects. Click the button below to verify this.", "#" ], [ @@ -36,11 +36,11 @@ { "properties": [ "isHonest", - "isFrontEndCert" + "isFrontEndLibsCert" ], "apis": [ "/certificate/honest", - "/certificate/verify/front-end" + "/certificate/verify/front-end-libraries" ], "stepIndex": [ 1, @@ -106,9 +106,9 @@ "title": "Solicite seu Certificado de Bibliotecas Front End", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/vOtZumH.jpg", "Uma imagem do nosso Certificado de Bibliotecas Front End", - "Este desafio lhe dará seu certificado verificado de bibliotecas Front End. Antes de emitir o seu certificado, precisamos verificar que você completou todos os nossos desafios de algoritmos básicos e intermediários e todos os nossos projetos básicos, intermediários e avançados de desenvolvimento. Você também deve aceitar nosso Compromisso de Honestidade Acadêmica. Clique no botão abaixo para iniciar este processo.", + "This challenge will give you your verified Front End Libraries Certificate. Before we issue your certificate, we must verify that you have completed all of our front end libraries projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ diff --git a/seed/challenges/04-data-visualization/claim-your-data-visualization-certificate.json b/seed/challenges/04-data-visualization/claim-your-data-visualization-certificate.json index c123358ce2..f4091a0e99 100644 --- a/seed/challenges/04-data-visualization/claim-your-data-visualization-certificate.json +++ b/seed/challenges/04-data-visualization/claim-your-data-visualization-certificate.json @@ -8,9 +8,9 @@ "title": "Claim Your Data Visualization Certificate", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/N8drT4I.jpg", "An image of our Data Visualization Certificate", - "This challenge will give you your verified Data Visualization Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", + "This challenge will give you your verified Data Visualization Certificate. Before we issue your certificate, we must verify that you have completed all of our data visualisation projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -20,10 +20,9 @@ "#" ], [ - "//i.imgur.com/UedoV2G.jpg", - "An image of the text \"Front End Development Certificate requirements\"", - "Let's confirm that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. Click the button below to verify this.", - "#" + "//i.imgur.com/BUaEvDo.jpg", + "An image of the text \"Data Visualization Certificate requirements\"", + "Let's confirm that you have completed data visualisation projects. Click the button below to verify this.", "#" ], [ "//i.imgur.com/Q5Za9U6.jpg", @@ -36,11 +35,11 @@ { "properties": [ "isHonest", - "isFrontEndCert" + "isDataVisCert" ], "apis": [ "/certificate/honest", - "/certificate/verify/front-end" + "/certificate/verify/data-visualization" ], "stepIndex": [ 1, @@ -77,10 +76,9 @@ "title": "Reclama tu certificado de Desarrollo de interfaces", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/N8drT4I.jpg", "Una imagen que muestra nuestro certificado de Desarrollo de interfaces", - "Este desafío te otorga tu certificado autenticado de Desarrollo de interfaces. Antes de que podamos emitir tu certificado, debemos verificar que has completado todos los desafíos básicos e intermedios de diseño de algoritmos, y todos los proyectos básicos e intermedios de desarrollo de interfaces. También debes aceptar nuestro Juramento de honestidad académica. Pulsa el botón siguiente para iniciar este proceso.", - "" + "This challenge will give you your verified Data Visualization Certificate. Before we issue your certificate, we must verify that you have completed all of our data visualisation projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ "//i.imgur.com/HArFfMN.jpg", @@ -89,9 +87,9 @@ "#" ], [ - "//i.imgur.com/14F2Van.jpg", - "Una imagen del texto \"Front End Development Certificate requirements\"", - "Confirmemos que has completado todos nuestros desafíos básicos e intermedios de diseño de algoritmos, y todos nuestros proyectos básicos e intermedios de desarrollo de interfaces. Pulsa el botón siguiente para hacer la verificación.", + "//i.imgur.com/BUaEvDo.jpg", + "An image of the text \"Data Visualization Certificate requirements\"", + "Let's confirm that you have completed data visualisation projects. Click the button below to verify this.", "Confirmemos que has completado todos nuestros desafíos básicos e intermedios de diseño de algoritmos, y todos nuestros proyectos básicos e intermedios de desarrollo de interfaces. Pulsa el botón siguiente para hacer la verificación.", "#" ], [ diff --git a/seed/challenges/05-apis-and-microservices/claim-your-apis-and-microservices-certificate.json b/seed/challenges/05-apis-and-microservices/claim-your-apis-and-microservices-certificate.json index e1874d27ea..c43ce58cf3 100644 --- a/seed/challenges/05-apis-and-microservices/claim-your-apis-and-microservices-certificate.json +++ b/seed/challenges/05-apis-and-microservices/claim-your-apis-and-microservices-certificate.json @@ -8,9 +8,9 @@ "title": "Claim Your APIs and Microservices Certificate", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/gfH7j5B.jpg", "An image of our APIs and Microservices Certificate", - "This challenge will give you your verified APIs and Microservices Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", + "This challenge will give you your verified APIs and Microservices Certificate. Before we issue your certificate, we must verify that you have completed all of our apis and microservices projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -20,9 +20,9 @@ "#" ], [ - "//i.imgur.com/UedoV2G.jpg", - "An image of the text \"Front End Development Certificate requirements\"", - "Let's confirm that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. Click the button below to verify this.", + "//i.imgur.com/IBTfUzO.jpg", + "An image of the text \"APIs and Microservices Certificate requirements\"", + "Let's confirm that you have completed all of our apis and microservices projects. Click the button below to verify this.", "#" ], [ @@ -36,11 +36,11 @@ { "properties": [ "isHonest", - "isFrontEndCert" + "isApisMicroservicesCert" ], "apis": [ "/certificate/honest", - "/certificate/verify/front-end" + "/certificate/verify/apis-microservices" ], "stepIndex": [ 1, @@ -77,9 +77,9 @@ "title": "Reclama tu certificado de Desarrollo de interfaces", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/gfH7j5B.jpg", "Una imagen que muestra nuestro certificado de Desarrollo de interfaces", - "Este desafío te otorga tu certificado autenticado de Desarrollo de interfaces. Antes de que podamos emitir tu certificado, debemos verificar que has completado todos los desafíos básicos e intermedios de diseño de algoritmos, y todos los proyectos básicos e intermedios de desarrollo de interfaces. También debes aceptar nuestro Juramento de honestidad académica. Pulsa el botón siguiente para iniciar este proceso.", + "This challenge will give you your verified APIs and Microservices Certificate. Before we issue your certificate, we must verify that you have completed all of our apis and microservices projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -89,9 +89,9 @@ "#" ], [ - "//i.imgur.com/14F2Van.jpg", - "Una imagen del texto \"Front End Development Certificate requirements\"", - "Confirmemos que has completado todos nuestros desafíos básicos e intermedios de diseño de algoritmos, y todos nuestros proyectos básicos e intermedios de desarrollo de interfaces. Pulsa el botón siguiente para hacer la verificación.", + "//i.imgur.com/IBTfUzO.jpg", + "An image of the text \"APIs and Microservices Certificate requirements\"", + "Let's confirm that you have completed all of our apis and microservices projects. Click the button below to verify this.", "#" ], [ diff --git a/seed/challenges/06-information-security-and-quality-assurance/claim-your-information-security-and-quality-assurance-certificate.json b/seed/challenges/06-information-security-and-quality-assurance/claim-your-information-security-and-quality-assurance-certificate.json index 71d6c94d22..ec0bbb6134 100644 --- a/seed/challenges/06-information-security-and-quality-assurance/claim-your-information-security-and-quality-assurance-certificate.json +++ b/seed/challenges/06-information-security-and-quality-assurance/claim-your-information-security-and-quality-assurance-certificate.json @@ -8,9 +8,9 @@ "title": "Claim Your Information Security and Quality Assurance Certificate", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/YhKzGLb.jpg", "An image of our Information Security and Quality Assurance Certificate", - "This challenge will give you your verified Information Security and Quality Assurance Certificate. Before we issue your certificate, we must verify that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", + "This challenge will give you your verified Information Security and Quality Assurance Certificate. Before we issue your certificate, we must verify that you have completed all of our information security and quality assurance projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -20,9 +20,9 @@ "#" ], [ - "//i.imgur.com/UedoV2G.jpg", - "An image of the text \"Front End Development Certificate requirements\"", - "Let's confirm that you have completed all of our basic and intermediate algorithm scripting challenges, and all our basic, intermediate, and advanced front end development projects. Click the button below to verify this.", + "//i.imgur.com/TM4KGfb.jpg", + "An image of the text \"Information Security and Quality Assurance Certificate requirements\"", + "Let's confirm that you have completed all of our information security and quality assurance projects. Click the button below to verify this.", "#" ], [ @@ -36,11 +36,11 @@ { "properties": [ "isHonest", - "isFrontEndCert" + "isInfosecQaCert" ], "apis": [ "/certificate/honest", - "/certificate/verify/front-end" + "/certificate/verify/information-security-quality-assurance" ], "stepIndex": [ 1, @@ -77,9 +77,9 @@ "title": "Reclama tu certificado de Desarrollo de interfaces", "description": [ [ - "//i.imgur.com/k8btNUB.jpg", + "//i.imgur.com/YhKzGLb.jpg", "Una imagen que muestra nuestro certificado de Desarrollo de interfaces", - "Este desafío te otorga tu certificado autenticado de Desarrollo de interfaces. Antes de que podamos emitir tu certificado, debemos verificar que has completado todos los desafíos básicos e intermedios de diseño de algoritmos, y todos los proyectos básicos e intermedios de desarrollo de interfaces. También debes aceptar nuestro Juramento de honestidad académica. Pulsa el botón siguiente para iniciar este proceso.", + "This challenge will give you your verified Information Security and Quality Assurance Certificate. Before we issue your certificate, we must verify that you have completed all of our information security and quality assurance projects. You must also accept our Academic Honesty Pledge. Click the button below to start this process.", "" ], [ @@ -89,9 +89,9 @@ "#" ], [ - "//i.imgur.com/14F2Van.jpg", - "Una imagen del texto \"Front End Development Certificate requirements\"", - "Confirmemos que has completado todos nuestros desafíos básicos e intermedios de diseño de algoritmos, y todos nuestros proyectos básicos e intermedios de desarrollo de interfaces. Pulsa el botón siguiente para hacer la verificación.", + "//i.imgur.com/TM4KGfb.jpg", + "An image of the text \"Information Security and Quality Assurance Certificate requirements\"", + "Let's confirm that you have completed all of our information security and quality assurance projects. Click the button below to verify this.", "#" ], [ diff --git a/server/boot/certificate.js b/server/boot/certificate.js index 1249d8fbdc..0bb7f9169b 100644 --- a/server/boot/certificate.js +++ b/server/boot/certificate.js @@ -14,9 +14,14 @@ import { import { observeQuery } from '../utils/rx'; import { + respWebDesignId, + frontEndLibsId, + jsAlgoDataStructId, frontEndChallengeId, - dataVisChallengeId, - backEndChallengeId + dataVisId, + apisMicroservicesId, + backEndChallengeId, + infosecQaId } from '../utils/constantStrings.json'; import { @@ -60,9 +65,12 @@ function getIdsForCert$(id, Challenge) { // { // email: String, // username: String, -// isFrontEndCert: Boolean, -// isBackEndCert: Boolean, -// isDataVisCert: Boolean +// isRespWebDesignCert: Boolean, +// isFrontEndLibsCert: Boolean, +// isJsAlgoDataStructCert: Boolean, +// isDataVisCert: Boolean, +// isApisMicroservicesCert: Boolean, +// isInfosecQaCert: Boolean // }, // send$: Observable // ) => Observable @@ -71,17 +79,23 @@ function sendCertifiedEmail( email, name, username, - isFrontEndCert, - isBackEndCert, - isDataVisCert + isRespWebDesignCert, + isFrontEndLibsCert, + isJsAlgoDataStructCert, + isDataVisCert, + isApisMicroservicesCert, + isInfosecQaCert }, send$ ) { if ( !isEmail(email) || - !isFrontEndCert || - !isBackEndCert || - !isDataVisCert + !isRespWebDesignCert || + !isFrontEndLibsCert || + !isJsAlgoDataStructCert || + !isDataVisCert || + !isApisMicroservicesCert || + !isInfosecQaCert ) { return Observable.just(false); } @@ -107,8 +121,16 @@ export default function certificate(app) { const certTypeIds = { [certTypes.frontEnd]: getIdsForCert$(frontEndChallengeId, Challenge), - [certTypes.dataVis]: getIdsForCert$(dataVisChallengeId, Challenge), - [certTypes.backEnd]: getIdsForCert$(backEndChallengeId, Challenge) + [certTypes.backEnd]: getIdsForCert$(backEndChallengeId, Challenge), + [certTypes.respWebDesign]: getIdsForCert$(respWebDesignId, Challenge), + [certTypes.frontEndLibs]: getIdsForCert$(frontEndLibsId, Challenge), + [certTypes.jsAlgoDataStruct]: getIdsForCert$(jsAlgoDataStructId, Challenge), + [certTypes.dataVis]: getIdsForCert$(dataVisId, Challenge), + [certTypes.apisMicroservices]: getIdsForCert$( + apisMicroservicesId, + Challenge + ), + [certTypes.infosecQa]: getIdsForCert$(infosecQaId, Challenge) }; router.post( @@ -123,12 +145,42 @@ export default function certificate(app) { verifyCert.bind(null, certTypes.backEnd) ); + router.post( + '/certificate/verify/responsive-web-design', + ifNoUser401, + verifyCert.bind(null, certTypes.respWebDesign) + ); + + router.post( + '/certificate/verify/front-end-libraries', + ifNoUser401, + verifyCert.bind(null, certTypes.frontEndLibs) + ); + + router.post( + '/certificate/verify/javascript-algorithms-data-structures', + ifNoUser401, + verifyCert.bind(null, certTypes.jsAlgoDataStruct) + ); + router.post( '/certificate/verify/data-visualization', ifNoUser401, verifyCert.bind(null, certTypes.dataVis) ); + router.post( + '/certificate/verify/apis-microservices', + ifNoUser401, + verifyCert.bind(null, certTypes.apisMicroservices) + ); + + router.post( + '/certificate/verify/information-security-quality-assurance', + ifNoUser401, + verifyCert.bind(null, certTypes.infosecQa) + ); + router.post( '/certificate/honest', sendMessageToNonUser, diff --git a/server/boot/commit.js b/server/boot/commit.js index dc8607c215..e4990ed50c 100644 --- a/server/boot/commit.js +++ b/server/boot/commit.js @@ -132,7 +132,7 @@ export default function commit(app) { const { nonprofit: nonprofitName = 'girl develop it', amount = '5', - goal = commitGoals.frontEndCert + goal = commitGoals.respWebDesignCert } = req.query; const nonprofit = findNonprofit(nonprofitName); diff --git a/server/boot/user.js b/server/boot/user.js index 0c0393cf8d..3731ba1047 100644 --- a/server/boot/user.js +++ b/server/boot/user.js @@ -6,8 +6,13 @@ import emoji from 'node-emoji'; import { frontEndChallengeId, - dataVisChallengeId, - backEndChallengeId + backEndChallengeId, + respWebDesignId, + frontEndLibsId, + jsAlgoDataStructId, + dataVisId, + apisMicroservicesId, + infosecQaId } from '../utils/constantStrings.json'; import certTypes from '../utils/certTypes.json'; import { @@ -29,22 +34,40 @@ const debug = debugFactory('fcc:boot:user'); const sendNonUserToMap = ifNoUserRedirectTo('/map'); const certIds = { [certTypes.frontEnd]: frontEndChallengeId, - [certTypes.dataVis]: dataVisChallengeId, - [certTypes.backEnd]: backEndChallengeId + [certTypes.backEnd]: backEndChallengeId, + [certTypes.respWebDesign]: respWebDesignId, + [certTypes.frontEndLibs]: frontEndLibsId, + [certTypes.jsAlgoDataStruct]: jsAlgoDataStructId, + [certTypes.dataVis]: dataVisId, + [certTypes.apisMicroservices]: apisMicroservicesId, + [certTypes.infosecQa]: infosecQaId }; const certViews = { [certTypes.frontEnd]: 'certificate/front-end.jade', - [certTypes.dataVis]: 'certificate/data-vis.jade', [certTypes.backEnd]: 'certificate/back-end.jade', - [certTypes.fullStack]: 'certificate/full-stack.jade' + [certTypes.fullStack]: 'certificate/full-stack.jade', + [certTypes.respWebDesign]: 'certificate/responsive-web-design.jade', + [certTypes.frontEndLibs]: 'certificate/front-end-libraries.jade', + [certTypes.jsAlgoDataStruct]: + 'certificate/javascript-algorithms-and-data-structures.jade', + [certTypes.dataVis]: 'certificate/data-visualization.jade', + [certTypes.apisMicroservices]: 'certificate/apis-and-microservices.jade', + [certTypes.infosecQa]: + 'certificate/information-security-and-quality-assurance.jade' }; const certText = { [certTypes.frontEnd]: 'Front End certified', - [certTypes.dataVis]: 'Data Vis Certified', [certTypes.backEnd]: 'Back End Certified', - [certTypes.fullStack]: 'Full Stack Certified' + [certTypes.fullStack]: 'Full Stack Certified', + [certTypes.respWebDesign]: 'Responsive Web Design Certified', + [certTypes.frontEndLibs]: 'Front End Libraries Certified', + [certTypes.jsAlgoDataStruct]: + 'JavaScript Algorithms and Data Structures Certified', + [certTypes.dataVis]: 'Data Visualization Certified', + [certTypes.apisMicroservices]: 'APIs and Microservices Certified', + [certTypes.infosecQa]: 'Information Security and Quality Assurance Certified' }; const dateFormat = 'MMM DD, YYYY'; @@ -208,11 +231,6 @@ module.exports = function(app) { showCert.bind(null, certTypes.frontEnd) ); - api.get( - '/:username/data-visualization-certification', - showCert.bind(null, certTypes.dataVis) - ); - api.get( '/:username/back-end-certification', showCert.bind(null, certTypes.backEnd) @@ -223,6 +241,36 @@ module.exports = function(app) { (req, res) => res.redirect(req.url.replace('full-stack', 'back-end')) ); + api.get( + '/:username/responsive-web-design-certification', + showCert.bind(null, certTypes.respWebDesign) + ); + + api.get( + '/:username/front-end-libraries-certification', + showCert.bind(null, certTypes.frontEndLibs) + ); + + api.get( + '/:username/javascript-algorithms-data-structures-certification', + showCert.bind(null, certTypes.jsAlgoDataStruct) + ); + + api.get( + '/:username/data-visualization-certification', + showCert.bind(null, certTypes.dataVis) + ); + + api.get( + '/:username/apis-microservices-certification', + showCert.bind(null, certTypes.apisMicroservices) + ); + + api.get( + '/:username/information-security-quality-assurance-certification', + showCert.bind(null, certTypes.infosecQa) + ); + router.get('/:username', showUserProfile); router.get( '/:username/report-user/', @@ -586,9 +634,14 @@ module.exports = function(app) { isLocked: true, isAvailableForHire: true, isFrontEndCert: true, - isDataVisCert: true, isBackEndCert: true, isFullStackCert: true, + isRespWebDesignCert: true, + isFrontEndLibsCert: true, + isJsAlgoDataStructCert: true, + isDataVisCert: true, + isApisMicroservicesCert: true, + isInfosecQaCert: true, isHonest: true, username: true, name: true, diff --git a/server/services/user.js b/server/services/user.js index 0891b3b691..05e2a25196 100644 --- a/server/services/user.js +++ b/server/services/user.js @@ -21,6 +21,11 @@ const publicUserProps = [ 'isBackEndCert', 'isDataVisCert', 'isFullStackCert', + 'isRespWebDesignCert', + 'isFrontEndLibsCert', + 'isJsAlgoDataStructCert', + 'isApisMicroservicesCert', + 'isInfosecQaCert', 'githubURL', 'sendMonthlyEmail', diff --git a/server/utils/certTypes.json b/server/utils/certTypes.json index 6dcd7bdcc7..90cf58d1ff 100644 --- a/server/utils/certTypes.json +++ b/server/utils/certTypes.json @@ -1,6 +1,11 @@ { "frontEnd": "isFrontEndCert", "backEnd": "isBackEndCert", + "fullStack": "isFullStackCert", + "respWebDesign": "isRespWebDesignCert", + "frontEndLibs": "isFrontEndLibsCert", + "jsAlgoDataStruct": "isJsAlgoDataStructCert", "dataVis": "isDataVisCert", - "fullStack": "isFullStackCert" + "apisMicroservices": "isApisMicroservicesCert", + "infosecQa": "isInfosecQaCert" } diff --git a/server/utils/commit-goals.json b/server/utils/commit-goals.json index 9c7c69721b..272ccfca86 100644 --- a/server/utils/commit-goals.json +++ b/server/utils/commit-goals.json @@ -1,6 +1,11 @@ { "frontEndCert": "Front End Development Certification", "backEndCert": "Back End Development Certification", - "dataVisCert": "Data Visualisation Certification", - "fullStackCert": "Full Stack Development Certification" + "fullStackCert": "Full Stack Development Certification", + "respWebDesign": "Responsive Web Design Certification", + "frontEndLibs": "Front End Libraries Certification", + "jsAlgoDataStruct": "JavaScript Algorithms and Data Structures Certification", + "dataVis": "Data Visualisation Certification", + "apisMicroservices": "APIs and Microservices Certification", + "infosecQa": "Information Security and Quality Assurance Certification" } diff --git a/server/utils/commit.js b/server/utils/commit.js index a7f5d2ba7b..2a04fb7bcc 100644 --- a/server/utils/commit.js +++ b/server/utils/commit.js @@ -10,9 +10,14 @@ export { commitGoals }; export function completeCommitment$(user) { const { isFrontEndCert, - isDataVisCert, isBackEndCert, - isFullStackCert + isFullStackCert, + isRespWebDesignCert, + isFrontEndLibsCert, + isJsAlgoDataStructCert, + isDataVisCert, + isApisMicroservicesCert, + isInfosecQaCert } = user; return Observable.fromNodeCallback(user.pledge, user)() @@ -25,9 +30,15 @@ export function completeCommitment$(user) { if ( (isFrontEndCert && goal === commitGoals.frontEndCert) || - (isDataVisCert && goal === commitGoals.dataVisCert) || (isBackEndCert && goal === commitGoals.backEndCert) || - (isFullStackCert && goal === commitGoals.fullStackCert) + (isFullStackCert && goal === commitGoals.fullStackCert) || + (isRespWebDesignCert && goal === commitGoals.respWebDesignCert) || + (isFrontEndLibsCert && goal === commitGoals.frontEndLibsCert) || + (isJsAlgoDataStructCert && goal === commitGoals.jsAlgoDataStructCert) || + (isDataVisCert && goal === commitGoals.dataVisCert) || + (isApisMicroservicesCert && + goal === commitGoals.apisMicroservicesCert) || + (isInfosecQaCert && goal === commitGoals.infosecQaCert) ) { debug('marking goal complete'); pledge.isCompleted = true; diff --git a/server/utils/constantStrings.json b/server/utils/constantStrings.json index eba50d1f67..9163a1a3b5 100644 --- a/server/utils/constantStrings.json +++ b/server/utils/constantStrings.json @@ -1,6 +1,11 @@ { "gitHubUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1521.3 Safari/537.36", "frontEndChallengeId": "561add10cb82ac38a17513be", - "dataVisChallengeId": "561add10cb82ac38a17513b3", - "backEndChallengeId": "660add10cb82ac38a17513be" + "backEndChallengeId": "660add10cb82ac38a17513be", + "respWebDesignId": "561add10cb82ac38a17513bc", + "frontEndLibsId": "561acd10cb82ac38a17513bc", + "jsAlgoDataStructId": "561abd10cb81ac38a17513bc", + "dataVisId": "561add10cb82ac39a17513bc", + "apisMicroservicesId": "561add10cb82ac38a17523bc", + "infosecQaId": "561add10cb82ac38a17213bc" } diff --git a/server/views/certificate/advanced-front-end.jade b/server/views/certificate/advanced-front-end.jade new file mode 100644 index 0000000000..1d2e18bb86 --- /dev/null +++ b/server/views/certificate/advanced-front-end.jade @@ -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 Projects + h4 1 of 3 legacy freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/advanced-front-end-certification diff --git a/server/views/certificate/apis-and-microservices.jade b/server/views/certificate/apis-and-microservices.jade new file mode 100644 index 0000000000..56e8d2fc3d --- /dev/null +++ b/server/views/certificate/apis-and-microservices.jade @@ -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 Projects + h4 1 of 6 freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/apis-and-microservices-certification diff --git a/server/views/certificate/back-end.jade b/server/views/certificate/back-end.jade index 823299a3b0..1d2bf7631f 100644 --- a/server/views/certificate/back-end.jade +++ b/server/views/certificate/back-end.jade @@ -3,34 +3,30 @@ link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-boot 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 the - h1 - strong Back End Development Projects - h4 (400 hours of coursework & 1 of 3 freeCodeCamp certificates) - - footer - .row.signatures - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature") - p - strong Quincy Larson - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/b0YdXS4.png', alt="Michael D. Johnson's Signature") - p - strong Michael D. Johnson - .row - p.verify Verify this certificate at: https://www.freecodecamp.org/#{username}/back-end-certification + .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 Projects + h4 1 of 3 legacy freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/back-end-certification diff --git a/server/views/certificate/data-vis.jade b/server/views/certificate/data-vis.jade deleted file mode 100644 index 550340e5e0..0000000000 --- a/server/views/certificate/data-vis.jade +++ /dev/null @@ -1,36 +0,0 @@ -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 the - h1 - strong Data Visualization Projects - h4 (400 hours of coursework & 1 of 3 freeCodeCamp certificates) - - footer - .row.signatures - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature") - p - strong Quincy Larson - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/b0YdXS4.png', alt="Michael D. Johnson's Signature") - p - strong Michael D. Johnson - .row - p.verify Verify this certificate at: https://www.freecodecamp.org/#{username}/data-visualization-certification diff --git a/server/views/certificate/data-visualization.jade b/server/views/certificate/data-visualization.jade new file mode 100644 index 0000000000..1831699fe0 --- /dev/null +++ b/server/views/certificate/data-visualization.jade @@ -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 1 of 6 freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/data-visualization-certification diff --git a/server/views/certificate/front-end-libraries.jade b/server/views/certificate/front-end-libraries.jade new file mode 100644 index 0000000000..24d7dfad85 --- /dev/null +++ b/server/views/certificate/front-end-libraries.jade @@ -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 Projects + h4 1 of 6 freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/front-end-libraries-certification diff --git a/server/views/certificate/front-end.jade b/server/views/certificate/front-end.jade index 6451c06fef..efa363ce88 100644 --- a/server/views/certificate/front-end.jade +++ b/server/views/certificate/front-end.jade @@ -3,34 +3,30 @@ link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-boot 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 the - h1 - strong Front End Development Projects - h4 (400 hours of coursework & 1 of 3 freeCodeCamp certificates) - - footer - .row.signatures - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature") - p - strong Quincy Larson - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/b0YdXS4.png', alt="Michael D. Johnson's Signature") - p - strong Michael D. Johnson - .row - p.verify Verify this certificate at: https://www.freecodecamp.org/#{username}/front-end-certification + .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 Projects + h4 1 of 3 legacy freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/front-end-certification diff --git a/server/views/certificate/full-stack.jade b/server/views/certificate/full-stack.jade index 246221d560..69fea248f7 100644 --- a/server/views/certificate/full-stack.jade +++ b/server/views/certificate/full-stack.jade @@ -3,34 +3,30 @@ link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-boot 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 the - h1 - strong Full Stack Development Projects - h4 (400 hours of coursework & 1 of 3 freeCodeCamp certificates) - - footer - .row.signatures - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/OJFVJKg.png', alt="Quincy Larson's Signature") - p - strong Quincy Larson - .col-md-6 - img(class='img-responsive', src='https://i.imgur.com/b0YdXS4.png', alt="Michael D. Johnson's Signature") - p - strong Michael D. Johnson - .row - p.verify Verify this certificate at: https://www.freecodecamp.org/#{username}/full-stack-certification + .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 Development Projects + h4 1 of 3 legacy freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/full-stack-certification diff --git a/server/views/certificate/information-security-and-quality-assurance.jade b/server/views/certificate/information-security-and-quality-assurance.jade new file mode 100644 index 0000000000..5d82fb7d24 --- /dev/null +++ b/server/views/certificate/information-security-and-quality-assurance.jade @@ -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 Projects + h4 1 of 6 freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/information-security-and-quality-assurance-certification diff --git a/server/views/certificate/javascript-algorithms-and-data-structures.jade b/server/views/certificate/javascript-algorithms-and-data-structures.jade new file mode 100644 index 0000000000..03b42c29aa --- /dev/null +++ b/server/views/certificate/javascript-algorithms-and-data-structures.jade @@ -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 Certificate + h4 1 of 6 freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/javascript-algorithms-and-data-structures-certification diff --git a/server/views/certificate/responsive-web-design.jade b/server/views/certificate/responsive-web-design.jade new file mode 100644 index 0000000000..b5ccbe321b --- /dev/null +++ b/server/views/certificate/responsive-web-design.jade @@ -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 Projects + h4 1 of 6 freeCodeCamp certificates, 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 certificate at: https://freecodecamp.org/#{username}/responsive-web-design-certification diff --git a/server/views/certificate/styles.jade b/server/views/certificate/styles.jade index b9dcc31195..c65f61e98e 100644 --- a/server/views/certificate/styles.jade +++ b/server/views/certificate/styles.jade @@ -70,6 +70,7 @@ style. .information { margin-top: -20px; height: 380px; + text-align: center; background-color: #efefef; } @@ -98,7 +99,7 @@ style. color: #006400; } - .signatures .col-md-6 { + .signatures { text-align: center; margin: 0 auto; background-color: #efefef; @@ -183,7 +184,7 @@ style. } } - @media screen and (max-width: 350px) { + @media screen and (max-width: 675px) { .container { padding: 0; border: 0; diff --git a/server/views/commit/index.jade b/server/views/commit/index.jade index 89664458e3..052aafd984 100644 --- a/server/views/commit/index.jade +++ b/server/views/commit/index.jade @@ -23,18 +23,24 @@ block content .col-xs-12.col-sm-6.col-sm-offset-3 h3 Step 1: Which certification do you pledge to complete? .btn-group.btn-group-justified(data-toggle='buttons' role='group') - label.btn.btn-primary.btn-lg.active - input(type='radio' id=frontEndCert value=frontEndCert name='goal' checked="checked") - | Front End - label.btn.btn-primary.btn-lg - input(type='radio' id=dataVisCert value=dataVisCert name='goal') - | Data Vis - label.btn.btn-primary.btn-lg - input(type='radio' id=backEndCert value=backEndCert name='goal') - | Back End - label.btn.btn-primary.btn-lg - input(type='radio' id=fullStackCert value=fullStackCert name='goal') - | Full Stack + 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 diff --git a/server/views/emails/a-new-user.ejs b/server/views/emails/a-new-user.ejs index 98abab37d8..97adc22f70 100644 --- a/server/views/emails/a-new-user.ejs +++ b/server/views/emails/a-new-user.ejs @@ -1,7 +1,10 @@ -Camper <%= username %> has completed all three certifications! +Camper <%= username %> has completed all six certifications! -Completed front end cert on <%= frontEndDate %>. -Completed data vis cert on <%= dataVisDate %>. -Completed back end cert on <%= backEndDate %>. +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 %>