feat(curriculum): Add A2 Spanish Outline (#60303)

Co-authored-by: moT01 <20648924+moT01@users.noreply.github.com>
This commit is contained in:
Nielda Karla
2025-05-15 16:47:26 -03:00
committed by GitHub
parent 186ccf2602
commit e149f7514f
24 changed files with 261 additions and 11 deletions

View File

@@ -35,6 +35,7 @@ const foundationalCSharpBase =
const fullStackDeveloperBase = '/learn/full-stack-developer';
const a2EnglishBase = '/learn/a2-english-for-developers';
const b1EnglishBase = '/learn/b1-english-for-developers';
const a2SpanishBase = '/learn/a2-professional-spanish';
const legacyFrontEndBase = feLibsBase;
const legacyFrontEndResponsiveBase = responsiveWebBase;
const legacyFrontEndTakeHomeBase = takeHomeBase;
@@ -835,6 +836,20 @@ const allStandardCerts = [
certSlug: Certification.B1English
}
]
},
{
id: '681a6b22e5a782fe3459984a',
title: 'A2 Professional Spanish',
certSlug: Certification.A2Spanish,
projects: [
{
id: '681a8796e5a782fe3459984b',
title: 'Dialogue 1: PLACEHOLDER',
link: `${a2SpanishBase}/talk-about-who-you-are-by-using-key-verbs
/text-1`,
certSlug: Certification.A2Spanish
}
]
}
] as const;

View File

@@ -4202,6 +4202,25 @@
}
}
},
"a2-professional-spanish": {
"title": "A2 Professional Spanish Certification (Beta)",
"note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.",
"intro": ["Placeholder intro"],
"blocks": {
"talk-about-who-you-are-by-using-key-verbs": {
"title": "Talk About Who You Are by Using Key Verbs",
"intro": [
"Learn how to introduce yourself in Spanish in a simple and professional way. In this module you'll learn how to say who you are, where you are from, what you do, how you feel, and what you like or don't like."
]
},
"get-to-know-others-by-asking-simple-questions": {
"title": "Get to Know Others by Asking Simple Questions",
"intro": [
"Learn how to ask and answer questions in simple conversations. Through five short dialogues, practice talking about routines, feelings, preferences, workspaces, and personal information. You'll also learn to ask polite questions, give short answers, and use negation naturally."
]
}
}
},
"misc-text": {
"browse-other": "Browse our other free certifications",
"courses": "Courses",

View File

@@ -1114,6 +1114,8 @@
"b1-english-for-developers-cert": "B1 English for Developers Certification",
"full-stack-developer-v9": "Full Stack Developer",
"full-stack-developer-v9-cert": "Full Stack Developer Certification",
"a2-professional-spanish": "A2 Professional Spanish",
"a2-professional-spanish-cert": "A2 Professional Spanish Certification",
"legacy-front-end": "Legacy Front End",
"legacy-front-end-cert": "Legacy Front End Certification",
"legacy-back-end": "Legacy Back End",

View File

@@ -43,6 +43,7 @@ const iconMap = {
[SuperBlocks.FullStackDeveloper]: Code,
[SuperBlocks.A2English]: A2EnglishIcon,
[SuperBlocks.B1English]: B1EnglishIcon,
[SuperBlocks.A2Spanish]: A2EnglishIcon,
[SuperBlocks.RosettaCode]: RosettaCodeIcon,
[SuperBlocks.PythonForEverybody]: PythonIcon
};

View File

@@ -91,6 +91,7 @@ const createCertifiedMap = ({
[Certification.FullStackDeveloper]: false,
[Certification.A2English]: false,
[Certification.B1English]: false,
[Certification.A2Spanish]: false,
[Certification.JsAlgoDataStructNew]: isJsAlgoDataStructCertV8
});

View File

@@ -0,0 +1,9 @@
---
title: Introduction to Get to Know Others by Asking Simple Questions
block: get-to-know-others-by-asking-simple-questions
superBlock: a2-professional-spanish
---
## Introduction to Get to Know Others by Asking Simple Questions
Introduction to Get to Know Others by Asking Simple Questions

View File

@@ -0,0 +1,9 @@
---
title: A2 Professional Spanish
superBlock: a2-professional-spanish
certification: a2-professional-spanish
---
## Introduction to A2 Professional Spanish
A2 Professional Spanish

View File

@@ -0,0 +1,9 @@
---
title: Introduction to Talk About Who You Are by Using Key Verbs
block: talk-about-who-you-are-by-using-key-verbs
superBlock: a2-professional-spanish
---
## Introduction to Talk About Who You Are by Using Key Verbs
Introduction to Talk About Who You Are by Using Key Verbs

View File

@@ -23,6 +23,7 @@ export const ConditionalDonationAlert = ({
const unfinishedCertifications = [
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.FullStackDeveloper
];

View File

@@ -0,0 +1,15 @@
{
"name": "Get to Know Others by Asking Simple Questions",
"isUpcomingChange": true,
"dashedName": "get-to-know-others-by-asking-simple-questions",
"order": 1,
"superBlock": "a2-professional-spanish",
"challengeOrder": [
{
"id": "6823914bc8a5c9c820230d99",
"title": "Dialogue 1: PLACEHOLDER"
}
],
"helpCategory": "English",
"blockLayout": "dialogue-grid"
}

View File

@@ -0,0 +1,15 @@
{
"name": "Talk About Who You Are by Using Key Verbs",
"isUpcomingChange": true,
"dashedName": "talk-about-who-you-are-by-using-key-verbs",
"order": 0,
"superBlock": "a2-professional-spanish",
"challengeOrder": [
{
"id": "681a8796e5a782fe3459984b",
"title": "Dialogue 1: PLACEHOLDER"
}
],
"helpCategory": "English",
"blockLayout": "dialogue-grid"
}

View File

@@ -0,0 +1,9 @@
---
id: 681a6b22e5a782fe3459984a
title: A2 Professional Spanish Certification
certification: a2-professional-spanish-certification
challengeType: 7
isPrivate: true
tests:
- id: 681a8796e5a782fe3459984b
title: "Dialogue 1: PLACEHOLDER"

View File

@@ -0,0 +1,58 @@
---
id: 6823914bc8a5c9c820230d99
title: "Dialogue 1: PLACEHOLDER"
challengeType: 21
dashedName: dialogue-1-placeholder
---
# --description--
Watch the video below to understand the context of the upcoming lessons.
# --assignment--
Watch the video
# --scene--
```json
{
"setup": {
"background": "chaos.png",
"characters": [
{
"character": "David",
"position": {"x":50,"y":80,"z":8},
"opacity": 0
}
],
"audio": {
"filename": "1.1-1.mp3",
"startTime": 1,
"startTimestamp": 5.7,
"finishTimestamp": 6.48
}
},
"commands": [
{
"character": "David",
"opacity": 1,
"startTime": 0
},
{
"character": "David",
"startTime": 1,
"finishTime": 0.78,
"dialogue": {
"text": "I'm Tom.",
"align": "center"
}
},
{
"character": "Tom",
"opacity": 0,
"startTime": 1.28
}
]
}
```

View File

@@ -0,0 +1,58 @@
---
id: 681a8796e5a782fe3459984b
title: "Dialogue 1: PLACEHOLDER"
challengeType: 21
dashedName: dialogue-1-placeholder
---
# --description--
Watch the video below to understand the context of the upcoming lessons.
# --assignment--
Watch the video
# --scene--
```json
{
"setup": {
"background": "chaos.png",
"characters": [
{
"character": "David",
"position": {"x":50,"y":80,"z":8},
"opacity": 0
}
],
"audio": {
"filename": "1.1-1.mp3",
"startTime": 1,
"startTimestamp": 5.7,
"finishTimestamp": 6.48
}
},
"commands": [
{
"character": "David",
"opacity": 1,
"startTime": 0
},
{
"character": "David",
"startTime": 1,
"finishTime": 0.78,
"dialogue": {
"text": "I'm Tom.",
"align": "center"
}
},
{
"character": "Tom",
"opacity": 0,
"startTime": 1.28
}
]
}
```

View File

@@ -84,7 +84,8 @@ const directoryToSuperblock = {
'22-rosetta-code': 'rosetta-code',
'23-python-for-everybody': 'python-for-everybody',
'24-b1-english-for-developers': 'b1-english-for-developers',
'25-front-end-development': 'full-stack-developer'
'25-front-end-development': 'full-stack-developer',
'26-a2-professional-spanish': 'a2-professional-spanish'
};
function getSuperBlockFromDir(dir) {

View File

@@ -176,7 +176,7 @@ describe('getSuperBlockFromPath', () => {
.filter(item => fs.lstatSync(path.join(englishFolder, item)).isDirectory());
it('handles all the directories in ./challenges/english', () => {
expect.assertions(24);
expect.assertions(25);
for (const directory of directories) {
expect(() => getSuperBlockFromDir(directory)).not.toThrow();
@@ -184,7 +184,7 @@ describe('getSuperBlockFromPath', () => {
});
it("returns valid superblocks (or 'certifications') for all valid arguments", () => {
expect.assertions(24);
expect.assertions(25);
const superBlockPaths = directories.filter(x => x !== '00-certifications');

View File

@@ -29,6 +29,7 @@ export enum Certification {
FullStackDeveloper = 'full-stack-developer-v9',
A2English = 'a2-english-for-developers-v8',
B1English = 'b1-english-for-developers-v8',
A2Spanish = 'a2-professional-spanish-v8',
// Legacy certifications
LegacyFrontEnd = 'legacy-front-end',
JsAlgoDataStruct = 'javascript-algorithms-and-data-structures',
@@ -77,7 +78,8 @@ export const legacyFullStackCertification = [
export const upcomingCertifications = [
Certification.FullStackDeveloper,
Certification.A2English,
Certification.B1English
Certification.B1English,
Certification.A2Spanish
] as const;
export const certTypes = {
@@ -270,6 +272,7 @@ export const superBlockToCertMap: {
[SuperBlocks.FullStackDeveloper]: Certification.FullStackDeveloper,
[SuperBlocks.A2English]: Certification.A2English,
[SuperBlocks.B1English]: Certification.B1English,
[SuperBlocks.A2Spanish]: Certification.A2Spanish,
[SuperBlocks.PythonForEverybody]: null,
[SuperBlocks.CodingInterviewPrep]: null,
[SuperBlocks.ProjectEuler]: null,
@@ -301,7 +304,8 @@ export const linkedInCredentialIds = {
[Certification.FullStackDeveloper]: 'fsd',
[Certification.JsAlgoDataStructNew]: 'jaads',
[Certification.A2English]: 'a2efd',
[Certification.B1English]: 'b1efd'
[Certification.B1English]: 'b1efd',
[Certification.A2Spanish]: 'a2ps'
};
export const oldDataVizId = '561add10cb82ac38a17513b3';

View File

@@ -25,6 +25,7 @@ export enum SuperBlocks {
FullStackDeveloper = 'full-stack-developer',
A2English = 'a2-english-for-developers',
B1English = 'b1-english-for-developers',
A2Spanish = 'a2-professional-spanish',
RosettaCode = 'rosetta-code',
PythonForEverybody = 'python-for-everybody'
}
@@ -99,7 +100,7 @@ export const superBlockStages: StageMap = {
SuperBlocks.PythonForEverybody
],
[SuperBlockStage.Next]: [],
[SuperBlockStage.Upcoming]: []
[SuperBlockStage.Upcoming]: [SuperBlocks.A2Spanish]
};
Object.freeze(superBlockStages);
@@ -124,6 +125,7 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody
],
[Languages.Chinese]: [
@@ -133,6 +135,7 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody
],
[Languages.ChineseTraditional]: [
@@ -142,6 +145,7 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody
],
[Languages.Italian]: [
@@ -151,6 +155,7 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody
],
[Languages.Portuguese]: [
@@ -158,20 +163,23 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody
],
[Languages.Ukrainian]: [
SuperBlocks.JsAlgoDataStructNew,
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English
SuperBlocks.B1English,
SuperBlocks.A2Spanish
],
[Languages.Japanese]: [
SuperBlocks.JsAlgoDataStructNew,
SuperBlocks.TheOdinProject,
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English
SuperBlocks.B1English,
SuperBlocks.A2Spanish
],
[Languages.German]: [
SuperBlocks.RelationalDb,
@@ -187,6 +195,7 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody
],
[Languages.Swahili]: [
@@ -210,6 +219,7 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody
],
[Languages.Korean]: [
@@ -231,6 +241,7 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
SuperBlocks.FullStackDeveloper,
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.A2Spanish,
SuperBlocks.PythonForEverybody,
SuperBlocks.DataVis,
SuperBlocks.RelationalDb,

View File

@@ -54,7 +54,8 @@ const superBlockFolderMap = {
'rosetta-code': '22-rosetta-code',
'python-for-everybody': '23-python-for-everybody',
'b1-english-for-developers': '24-b1-english-for-developers',
'full-stack-developer': '25-front-end-development'
'full-stack-developer': '25-front-end-development',
'a2-professional-spanish': '26-a2-professional-spanish'
};
// Adding types for getChallengesForLang is possible, but not worth the effort

View File

@@ -90,5 +90,9 @@ export const superBlockList = [
{
name: 'Certified Full Stack Developer',
path: '25-front-end-development'
},
{
name: 'A2 Professional Spanish (Beta)',
path: '26-a2-professional-spanish'
}
];

View File

@@ -13,7 +13,8 @@ const stepBasedSuperblocks = [
const taskBasedSuperblocks = [
'21-a2-english-for-developers',
'24-b1-english-for-developers'
'24-b1-english-for-developers',
'26-a2-professional-spanish'
];
const Block = () => {

View File

@@ -26,7 +26,8 @@ export function getSuperBlockSubPath(superBlock: SuperBlocks): string {
[SuperBlocks.RosettaCode]: '22-rosetta-code',
[SuperBlocks.PythonForEverybody]: '23-python-for-everybody',
[SuperBlocks.B1English]: '24-b1-english-for-developers',
[SuperBlocks.FullStackDeveloper]: '25-front-end-development'
[SuperBlocks.FullStackDeveloper]: '25-front-end-development',
[SuperBlocks.A2Spanish]: '26-a2-professional-spanish'
};
return pathMap[superBlock];
}

View File

@@ -44,6 +44,7 @@ export const orderedSuperBlockInfo = [
{ dashedName: SuperBlocks.CollegeAlgebraPy, public: true },
{ dashedName: SuperBlocks.A2English, public: true },
{ dashedName: SuperBlocks.B1English, public: true },
{ dashedName: SuperBlocks.A2Spanish, public: true },
{ dashedName: SuperBlocks.TheOdinProject, public: true },
{ dashedName: SuperBlocks.RespWebDesign, public: true },
{ dashedName: SuperBlocks.PythonForEverybody, public: true },

View File

@@ -103,6 +103,11 @@ export const orderedSuperBlockInfo: Record<
dashedName: SuperBlocks.B1English,
public: true,
title: intros[SuperBlocks.B1English].title
},
{
dashedName: SuperBlocks.A2Spanish,
public: true,
title: intros[SuperBlocks.A2Spanish].title
}
],