From b72d31c2097d55469ce4cbc3cf28a9391a68207a Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Wed, 11 Mar 2026 16:53:10 +0100 Subject: [PATCH] refactor(client): source superblock intros from curriculum (#66328) --- client/config/cert-and-project-map.ts | 4 - client/gatsby-config.js | 12 --- client/gatsby-node.js | 79 +++---------------- client/schema.gql | 54 +------------ .../learn/2022/responsive-web-design/index.md | 20 ----- .../learn/a1-professional-chinese/index.md | 9 --- .../learn/a1-professional-spanish/index.md | 9 --- .../learn/a2-english-for-developers/index.md | 9 --- .../learn/a2-professional-chinese/index.md | 9 --- .../learn/a2-professional-spanish/index.md | 9 --- .../absolute-and-relative-units/index.md | 9 --- .../pages/learn/attribute-selectors/index.md | 9 --- .../learn/b1-english-for-developers/index.md | 9 --- .../back-end-development-and-apis-v9/index.md | 9 --- .../back-end-development-and-apis/index.md | 45 ----------- client/src/pages/learn/basic-css/index.md | 9 --- client/src/pages/learn/basic-html/index.md | 9 --- .../learn/coding-interview-prep/index.md | 11 --- .../college-algebra-with-python/index.md | 13 --- .../src/pages/learn/computer-basics/index.md | 9 --- .../learn/css-and-accessibility/index.md | 9 --- .../src/pages/learn/css-animations/index.md | 9 --- client/src/pages/learn/css-box-model/index.md | 9 --- client/src/pages/learn/css-colors/index.md | 9 --- client/src/pages/learn/css-flexbox/index.md | 9 --- client/src/pages/learn/css-grid/index.md | 9 --- .../src/pages/learn/css-positioning/index.md | 9 --- .../src/pages/learn/css-typography/index.md | 9 --- client/src/pages/learn/css-variables/index.md | 9 --- .../learn/data-analysis-with-python/index.md | 9 --- .../pages/learn/data-visualization/index.md | 9 --- .../learn/design-for-developers/index.md | 9 --- .../src/pages/learn/dev-playground/index.md | 9 --- .../index.md | 9 --- .../index.md | 9 --- .../front-end-development-libraries/index.md | 9 --- .../learn/full-stack-developer-v9/index.md | 9 --- .../src/pages/learn/full-stack-open/index.md | 9 --- .../learn/html-and-accessibility/index.md | 9 --- .../learn/html-forms-and-tables/index.md | 9 --- .../pages/learn/information-security/index.md | 9 --- .../index.md | 13 --- .../pages/learn/introduction-to-bash/index.md | 9 --- .../introduction-to-git-and-github/index.md | 9 --- .../pages/learn/introduction-to-nano/index.md | 9 --- .../index.md | 9 --- .../index.md | 9 --- .../index.md | 9 --- client/src/pages/learn/javascript-v9/index.md | 14 ---- .../learn/lab-book-inventory-app/index.md | 9 --- .../learn/lab-page-of-playing-cards/index.md | 9 --- .../learn/lab-product-landing-page/index.md | 9 --- .../src/pages/learn/lab-survey-form/index.md | 9 --- .../lab-technical-documentation-page/index.md | 9 --- .../pages/learn/learn-bash-scripting/index.md | 11 --- .../learn-prompting-fundamentals/index.md | 9 --- .../learn/learn-python-for-beginners/index.md | 9 --- .../pages/learn/learn-sql-and-bash/index.md | 9 --- .../machine-learning-with-python/index.md | 9 --- client/src/pages/learn/project-euler/index.md | 9 --- .../pseudo-classes-and-elements/index.md | 9 --- .../pages/learn/python-for-everybody/index.md | 9 --- client/src/pages/learn/python-v9/index.md | 9 --- .../pages/learn/quality-assurance/index.md | 9 --- .../pages/learn/relational-database/index.md | 11 --- .../learn/relational-databases-v9/index.md | 9 --- .../pages/learn/responsive-design/index.md | 9 --- .../learn/responsive-web-design-v9/index.md | 14 ---- .../learn/responsive-web-design/index.md | 21 ----- client/src/pages/learn/rosetta-code/index.md | 11 --- .../scientific-computing-with-python/index.md | 14 ---- client/src/pages/learn/semantic-html/index.md | 9 --- client/src/pages/learn/styling-forms/index.md | 9 --- .../src/pages/learn/the-odin-project/index.md | 9 --- client/src/redux/prop-types.ts | 12 --- .../components/cert-challenge.tsx | 15 ++-- .../components/super-block-map.tsx | 19 +---- .../Introduction/super-block-intro.test.tsx | 4 +- .../Introduction/super-block-intro.tsx | 13 +-- client/utils/gatsby/challenge-page-creator.js | 22 +----- 80 files changed, 26 insertions(+), 928 deletions(-) delete mode 100644 client/src/pages/learn/2022/responsive-web-design/index.md delete mode 100644 client/src/pages/learn/a1-professional-chinese/index.md delete mode 100644 client/src/pages/learn/a1-professional-spanish/index.md delete mode 100644 client/src/pages/learn/a2-english-for-developers/index.md delete mode 100644 client/src/pages/learn/a2-professional-chinese/index.md delete mode 100644 client/src/pages/learn/a2-professional-spanish/index.md delete mode 100644 client/src/pages/learn/absolute-and-relative-units/index.md delete mode 100644 client/src/pages/learn/attribute-selectors/index.md delete mode 100644 client/src/pages/learn/b1-english-for-developers/index.md delete mode 100644 client/src/pages/learn/back-end-development-and-apis-v9/index.md delete mode 100644 client/src/pages/learn/back-end-development-and-apis/index.md delete mode 100644 client/src/pages/learn/basic-css/index.md delete mode 100644 client/src/pages/learn/basic-html/index.md delete mode 100644 client/src/pages/learn/coding-interview-prep/index.md delete mode 100644 client/src/pages/learn/college-algebra-with-python/index.md delete mode 100644 client/src/pages/learn/computer-basics/index.md delete mode 100644 client/src/pages/learn/css-and-accessibility/index.md delete mode 100644 client/src/pages/learn/css-animations/index.md delete mode 100644 client/src/pages/learn/css-box-model/index.md delete mode 100644 client/src/pages/learn/css-colors/index.md delete mode 100644 client/src/pages/learn/css-flexbox/index.md delete mode 100644 client/src/pages/learn/css-grid/index.md delete mode 100644 client/src/pages/learn/css-positioning/index.md delete mode 100644 client/src/pages/learn/css-typography/index.md delete mode 100644 client/src/pages/learn/css-variables/index.md delete mode 100644 client/src/pages/learn/data-analysis-with-python/index.md delete mode 100644 client/src/pages/learn/data-visualization/index.md delete mode 100644 client/src/pages/learn/design-for-developers/index.md delete mode 100644 client/src/pages/learn/dev-playground/index.md delete mode 100644 client/src/pages/learn/foundational-c-sharp-with-microsoft/index.md delete mode 100644 client/src/pages/learn/front-end-development-libraries-v9/index.md delete mode 100644 client/src/pages/learn/front-end-development-libraries/index.md delete mode 100644 client/src/pages/learn/full-stack-developer-v9/index.md delete mode 100644 client/src/pages/learn/full-stack-open/index.md delete mode 100644 client/src/pages/learn/html-and-accessibility/index.md delete mode 100644 client/src/pages/learn/html-forms-and-tables/index.md delete mode 100644 client/src/pages/learn/information-security/index.md delete mode 100644 client/src/pages/learn/introduction-to-algorithms-and-data-structures/index.md delete mode 100644 client/src/pages/learn/introduction-to-bash/index.md delete mode 100644 client/src/pages/learn/introduction-to-git-and-github/index.md delete mode 100644 client/src/pages/learn/introduction-to-nano/index.md delete mode 100644 client/src/pages/learn/introduction-to-sql-and-postgresql/index.md delete mode 100644 client/src/pages/learn/javascript-algorithms-and-data-structures-v8/index.md delete mode 100644 client/src/pages/learn/javascript-algorithms-and-data-structures/index.md delete mode 100644 client/src/pages/learn/javascript-v9/index.md delete mode 100644 client/src/pages/learn/lab-book-inventory-app/index.md delete mode 100644 client/src/pages/learn/lab-page-of-playing-cards/index.md delete mode 100644 client/src/pages/learn/lab-product-landing-page/index.md delete mode 100644 client/src/pages/learn/lab-survey-form/index.md delete mode 100644 client/src/pages/learn/lab-technical-documentation-page/index.md delete mode 100644 client/src/pages/learn/learn-bash-scripting/index.md delete mode 100644 client/src/pages/learn/learn-prompting-fundamentals/index.md delete mode 100644 client/src/pages/learn/learn-python-for-beginners/index.md delete mode 100644 client/src/pages/learn/learn-sql-and-bash/index.md delete mode 100644 client/src/pages/learn/machine-learning-with-python/index.md delete mode 100644 client/src/pages/learn/project-euler/index.md delete mode 100644 client/src/pages/learn/pseudo-classes-and-elements/index.md delete mode 100644 client/src/pages/learn/python-for-everybody/index.md delete mode 100644 client/src/pages/learn/python-v9/index.md delete mode 100644 client/src/pages/learn/quality-assurance/index.md delete mode 100644 client/src/pages/learn/relational-database/index.md delete mode 100644 client/src/pages/learn/relational-databases-v9/index.md delete mode 100644 client/src/pages/learn/responsive-design/index.md delete mode 100644 client/src/pages/learn/responsive-web-design-v9/index.md delete mode 100644 client/src/pages/learn/responsive-web-design/index.md delete mode 100644 client/src/pages/learn/rosetta-code/index.md delete mode 100644 client/src/pages/learn/scientific-computing-with-python/index.md delete mode 100644 client/src/pages/learn/semantic-html/index.md delete mode 100644 client/src/pages/learn/styling-forms/index.md delete mode 100644 client/src/pages/learn/the-odin-project/index.md diff --git a/client/config/cert-and-project-map.ts b/client/config/cert-and-project-map.ts index 204467edb29..95e793e1b66 100644 --- a/client/config/cert-and-project-map.ts +++ b/client/config/cert-and-project-map.ts @@ -1028,8 +1028,4 @@ const certsToProjects = allStandardCerts.reduce((acc, curr) => { }; }, {} as CertsToProjects); -export type CertTitle = - | (typeof liveCerts)[number]['title'] - | 'Legacy Full-Stack'; - export { liveCerts, certsToProjects, allCerts }; diff --git a/client/gatsby-config.js b/client/gatsby-config.js index fa47aedc8ac..b1ec33814ef 100644 --- a/client/gatsby-config.js +++ b/client/gatsby-config.js @@ -9,8 +9,6 @@ const { pathPrefix } = require('./utils/gatsby/path-prefix'); const { curriculumLocale, homeLocation } = envData; -const curriculumIntroRoot = path.resolve(__dirname, './src/pages'); - module.exports = { flags: { DEV_SSR: false @@ -55,16 +53,6 @@ module.exports = { curriculumPath: localeChallengesRootDir } }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'introductions', - path: curriculumIntroRoot - } - }, - { - resolve: 'gatsby-transformer-remark' - }, 'gatsby-plugin-remove-serviceworker', { resolve: 'gatsby-plugin-schema-snapshot', diff --git a/client/gatsby-node.js b/client/gatsby-node.js index 09ff2c7574b..3c02cc94bdd 100644 --- a/client/gatsby-node.js +++ b/client/gatsby-node.js @@ -1,25 +1,12 @@ -const { createFilePath } = require('gatsby-source-filesystem'); const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); const webpack = require('webpack'); -const { SuperBlocks } = require('@freecodecamp/shared/config/curriculum'); const env = require('./config/env.json'); const { createSuperBlockIntroPages } = require('./utils/gatsby'); -exports.onCreateNode = function onCreateNode({ node, actions, getNode }) { - const { createNodeField } = actions; - - if (node.internal.type === 'MarkdownRemark') { - const slug = createFilePath({ node, getNode }); - if (!slug.includes('LICENSE')) { - createNodeField({ node, name: 'slug', value: slug }); - } - } -}; - exports.createPages = async function createPages({ - graphql, actions, + graphql, reporter }) { if (!env.algoliaAPIKey || !env.algoliaAppId) { @@ -46,67 +33,21 @@ exports.createPages = async function createPages({ const { createPage } = actions; - const result = await graphql(` + const { + data: { allSuperBlockStructure } + } = await graphql(` { - allChallengeNode( - sort: [ - { challenge: { superOrder: ASC } } - { challenge: { order: ASC } } - { challenge: { challengeOrder: ASC } } - ] - ) { - edges { - node { - challenge { - block - } - } - } - } - allMarkdownRemark { - edges { - node { - fields { - slug - } - frontmatter { - certification - superBlock - title - } - id - } + allSuperBlockStructure { + nodes { + superBlock } } } `); - // Includes upcoming superBlocks - const allSuperBlocks = Object.values(SuperBlocks); - - // Create intro pages - // TODO: Remove allMarkdownRemark (populate from elsewhere) - result.data.allMarkdownRemark.edges.forEach(edge => { - const { - node: { frontmatter, fields } - } = edge; - - if (!fields) { - throw Error( - "'fields' property missing (this should be added in onCreateNode)" - ); - } - const { slug } = fields; - if (slug.includes('LICENCE')) { - return; - } - - if (!allSuperBlocks.includes(frontmatter.superBlock)) { - throw Error(`Unknown superblock ${frontmatter.superBlock}`); - } - - const pageBuilder = createSuperBlockIntroPages(createPage); - pageBuilder(edge); + const superBlocks = allSuperBlockStructure.nodes.map(node => node.superBlock); + superBlocks.forEach(superBlock => { + createSuperBlockIntroPages(createPage)({ superBlock }); }); }; diff --git a/client/schema.gql b/client/schema.gql index d98f85567a4..d3e94f8710e 100644 --- a/client/schema.gql +++ b/client/schema.gql @@ -1,4 +1,4 @@ -### Type definitions saved at 2026-02-12T12:28:08.262Z ### +### Type definitions saved at 2026-03-10T08:56:46.271Z ### enum RemoteFileFit { COVER @@ -201,8 +201,6 @@ type File implements Node @dontInfer { ctime: Date! @dateformat birthtime: Date @deprecated(reason: "Use `birthTime` instead") birthtimeMs: Float @deprecated(reason: "Use `birthTime` instead") - blksize: Int - blocks: Int } type Directory implements Node @dontInfer { @@ -298,54 +296,6 @@ type SiteBuildMetadata implements Node @dontInfer { buildTime: Date @dateformat } -type MarkdownHeading { - id: String - value: String - depth: Int -} - -enum MarkdownHeadingLevels { - h1 - h2 - h3 - h4 - h5 - h6 -} - -enum MarkdownExcerptFormats { - PLAIN - HTML - MARKDOWN -} - -type MarkdownWordCount { - paragraphs: Int - sentences: Int - words: Int -} - -type MarkdownRemark implements Node - @childOf(mimeTypes: ["text/markdown", "text/x-markdown"], types: ["File"]) - @derivedTypes - @dontInfer { - frontmatter: MarkdownRemarkFrontmatter - excerpt: String - rawMarkdownBody: String - fileAbsolutePath: String - fields: MarkdownRemarkFields -} - -type MarkdownRemarkFrontmatter { - title: String - superBlock: String - certification: String -} - -type MarkdownRemarkFields { - slug: String -} - type ChallengeNodeChallengeHooks { afterEach: String beforeAll: String @@ -508,7 +458,7 @@ type ChallengeNodeChallengeQuizzesQuestionsAudioData @derivedTypes { type ChallengeNodeChallengeQuizzesQuestionsAudioDataAudio { filename: String - startTimestamp: Int + startTimestamp: Float finishTimestamp: Float } diff --git a/client/src/pages/learn/2022/responsive-web-design/index.md b/client/src/pages/learn/2022/responsive-web-design/index.md deleted file mode 100644 index fb2f731c148..00000000000 --- a/client/src/pages/learn/2022/responsive-web-design/index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Responsive Web Design -superBlock: 2022/responsive-web-design -certification: responsive-web-design ---- - -## Introduction to Responsive Web Design - -Welcome to Responsive Web Design! - -Let's first take a look at what is in the scope of Responsive Web Design (and what is not). -The Web part of Responsive Web Design means that the content you are creating is designed to be delivered over the web to users' browsers. To do this, you will need to learn the language that browsers use to describe web pages: HTML (Hypertext Markup Language) for content, and CSS (Cascading Style Sheets) for design. - -That brings us to design. Web Design focuses on how websites should look and behave to the end user. There are plenty of additional aspects to websites, including how to host a website so people can access it, how to protect your websites and store your users' data, and the ethos behind what should go on a website in the first place. These are somewhat harder to teach, but do require a good understanding of the capabilities of the web in modern contexts. - -And what of the word Responsive? Well, that brings us to the idea of modern contexts. In today's world, websites are expected to be just as accessible on laptops, tablets and phones. If you compare your user experience on a document-editing program on a computer versus a document-editing program on a mobile, the features on mobile are likely to be far more constrained. This applies in some way to websites as well, but developers have found interesting ways to adapt to the mobile experience, not in the least by harnessing powerful features built for flexible (a.k.a responsive) web displays such as CSS `flexbox` and CSS `grid`. - -Ready to learn about good design practices for the web? Let's get started! - -[Begin Course](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) diff --git a/client/src/pages/learn/a1-professional-chinese/index.md b/client/src/pages/learn/a1-professional-chinese/index.md deleted file mode 100644 index 17ed85f6a9d..00000000000 --- a/client/src/pages/learn/a1-professional-chinese/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: A1 Professional Chinese -superBlock: a1-professional-chinese -certification: a1-professional-chinese ---- - -## Introduction to A1 Professional Chinese - -A1 Professional Chinese diff --git a/client/src/pages/learn/a1-professional-spanish/index.md b/client/src/pages/learn/a1-professional-spanish/index.md deleted file mode 100644 index f522a34a33c..00000000000 --- a/client/src/pages/learn/a1-professional-spanish/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: A1 Professional Spanish -superBlock: a1-professional-spanish -certification: a1-professional-spanish ---- - -## Introduction to A1 Professional Spanish - -A1 Professional Spanish diff --git a/client/src/pages/learn/a2-english-for-developers/index.md b/client/src/pages/learn/a2-english-for-developers/index.md deleted file mode 100644 index 354a0255b4a..00000000000 --- a/client/src/pages/learn/a2-english-for-developers/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: A2 English for Developers -superBlock: a2-english-for-developers -certification: a2-english-for-developers ---- - -## Introduction to A2 English for Developers - -A2 English for Developers diff --git a/client/src/pages/learn/a2-professional-chinese/index.md b/client/src/pages/learn/a2-professional-chinese/index.md deleted file mode 100644 index d482cb78314..00000000000 --- a/client/src/pages/learn/a2-professional-chinese/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: A2 Professional Chinese -superBlock: a2-professional-chinese -certification: a2-professional-chinese ---- - -## Introduction to A2 Professional Chinese - -A2 Professional Chinese diff --git a/client/src/pages/learn/a2-professional-spanish/index.md b/client/src/pages/learn/a2-professional-spanish/index.md deleted file mode 100644 index fbd6f4457e3..00000000000 --- a/client/src/pages/learn/a2-professional-spanish/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: A2 Professional Spanish -superBlock: a2-professional-spanish -certification: a2-professional-spanish ---- - -## Introduction to A2 Professional Spanish - -A2 Professional Spanish diff --git a/client/src/pages/learn/absolute-and-relative-units/index.md b/client/src/pages/learn/absolute-and-relative-units/index.md deleted file mode 100644 index b50f7f9db38..00000000000 --- a/client/src/pages/learn/absolute-and-relative-units/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Absolute and Relative Units in CSS -superBlock: absolute-and-relative-units -certification: absolute-and-relative-units ---- - -## Introduction to Learn Absolute and Relative Units in CSS - -Understand when to use absolute and relative CSS units to build flexible layouts. diff --git a/client/src/pages/learn/attribute-selectors/index.md b/client/src/pages/learn/attribute-selectors/index.md deleted file mode 100644 index 62be8f1892e..00000000000 --- a/client/src/pages/learn/attribute-selectors/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Attribute Selectors -superBlock: attribute-selectors -certification: attribute-selectors ---- - -## Introduction to Learn CSS Attribute Selectors - -Target elements precisely with CSS attribute selectors. diff --git a/client/src/pages/learn/b1-english-for-developers/index.md b/client/src/pages/learn/b1-english-for-developers/index.md deleted file mode 100644 index ccecd6ff324..00000000000 --- a/client/src/pages/learn/b1-english-for-developers/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: B1 English for Developers -superBlock: b1-english-for-developers -certification: b1-english-for-developers ---- - -## Introduction to B1 English for Developers - -B1 English for Developers diff --git a/client/src/pages/learn/back-end-development-and-apis-v9/index.md b/client/src/pages/learn/back-end-development-and-apis-v9/index.md deleted file mode 100644 index feb17a31cfe..00000000000 --- a/client/src/pages/learn/back-end-development-and-apis-v9/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Back-End Development and APIs -superBlock: back-end-development-and-apis-v9 -certification: back-end-development-and-apis-v9 ---- - -## Introduction to Back-End Development and APIs - -This is a stub introduction for Back-End Development and APIs diff --git a/client/src/pages/learn/back-end-development-and-apis/index.md b/client/src/pages/learn/back-end-development-and-apis/index.md deleted file mode 100644 index 2ea2ebbf7b8..00000000000 --- a/client/src/pages/learn/back-end-development-and-apis/index.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Back-End Development and APIs -superBlock: back-end-development-and-apis -certification: back-end-development-and-apis ---- - -## Introduction to Back-End Development and APIs - -This is a stub introduction for Back-End Development and APIs - -## Microservices - -So, what are Microservices? - -Here is a fairly simple definition from [Techtarget](https://searchmicroservices.techtarget.com/definition/microservices) - Microservices, or microservice architecture, is an approach to application development in which a large application is built as a suite of modular components or services. - -Basically, it is an architectural style of developing large applications through a multitude of small, self contained services that interact with one another to provide the overall functionality. The style is best understood by comparing it to a traditional application built as a monolith. - -A monolith typically has the three key components of any application - the UI, Business logic and the Data storage - all bundled up into a single codebase. This is deployed on a server, and managed thereby through change management. As long as the application is small, doesn't change too often and is able to effectively scale easily, managing it is not a problem. However, most applications grow over a period of time, become more complex and are unable to scale very well. While horizontal scaling is one way of scaling monoliths, the issue of managing change and operational efficiency of a large codebase is daunting, at best. - -To overcome some of the issues, one of the suggestions that was made early on was to functionally decompose an application, referred to as the Scale Cube in the book [The Art of Scalability](www.theartofscalability.com). This eventually led to the microservices pattern that we see now. A microservice takes a single bit of functionality and bundles all the layers of technology into it. This means that each microservice has its own UI, business logic and data store. To deliver a larger piece of functionality, microservices talk to one another through common communication methods like APIs or messages. - -## Key benefits - -1. Microservices can be developed and deployed independently of one another, thereby reducing the risk of one wrong piece of code bringing down an entire application -2. Easier to isolate and find where issues lie, while debugging -3. Fits the modern DevOps paradigm, as the architecture is well placed for Continuous Integration/Continuous Deployment -4. Enables developers to choose a language and data store technology best suited for that bit of functionality -5. Ease of automated deployment means it's best suited for the cloud -6. Way easier to scale than monoliths, due to ease in deploying multiple instances of the same service -7. Easy to change, as it encapsulates a single piece of business functionality - -## Key drawbacks - -1. Additional operational overheads to monitor and manage multiple services -2. Manage communications between services -3. Additional effort to build fault tolerance -4. Getting the right balance of functional and data separation is not easy -5. Distributed transaction model comes with its own share of issues regarding data consistency (eventual consistency) - -### Sources - -1. Microservices, a definition - by Martin Fowler and James Lewis : https://www.martinfowler.com/articles/microservices.html -2. Introduction to Microservices - NGINX blog : https://www.nginx.com/blog/introduction-to-microservices/ -3. What are microservices - Smartbear : https://smartbear.com/learn/api-design/what-are-microservices/ diff --git a/client/src/pages/learn/basic-css/index.md b/client/src/pages/learn/basic-css/index.md deleted file mode 100644 index 2d40270a3ec..00000000000 --- a/client/src/pages/learn/basic-css/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Basic CSS -superBlock: basic-css -certification: basic-css ---- - -## Learn Basic CSS - -Learn core CSS concepts and start styling real-world layouts. diff --git a/client/src/pages/learn/basic-html/index.md b/client/src/pages/learn/basic-html/index.md deleted file mode 100644 index e98cef55b84..00000000000 --- a/client/src/pages/learn/basic-html/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Basic HTML -superBlock: basic-html -certification: basic-html ---- - -## Introduction to Learn Basic HTML - -Introduction to Basic HTML. diff --git a/client/src/pages/learn/coding-interview-prep/index.md b/client/src/pages/learn/coding-interview-prep/index.md deleted file mode 100644 index 43e82b6bbf3..00000000000 --- a/client/src/pages/learn/coding-interview-prep/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Coding Interview Prep -superBlock: coding-interview-prep -certification: coding-interview-prep ---- - -## Introduction to Coding Interview Prep - -This introduction is a stub - -Help us make it real on [GitHub](https://github.com/freeCodeCamp/learn/tree/master/src/introductions). diff --git a/client/src/pages/learn/college-algebra-with-python/index.md b/client/src/pages/learn/college-algebra-with-python/index.md deleted file mode 100644 index d3bdeaabdf0..00000000000 --- a/client/src/pages/learn/college-algebra-with-python/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: College Algebra with Python -superBlock: college-algebra-with-python -certification: college-algebra-with-python ---- - -## Introduction to College Algebra with Python - -This course is designed as a one-semester college course. It consists of instructional videos, with Google Colaboratory notebooks to follow along interactively, assignments, and challenging projects. - -As you go through each part of this course in sequence, you will gain a full understanding of Algebra and how to write Python code to solve Algebra problems. - -Throughout this course, you will also build your own Algebra Colab notebook that you will be able to use as your custom calculator. This course (and the code you write here) will give you the foundation for a deeper math and data science understanding. diff --git a/client/src/pages/learn/computer-basics/index.md b/client/src/pages/learn/computer-basics/index.md deleted file mode 100644 index 6116ee1916e..00000000000 --- a/client/src/pages/learn/computer-basics/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Computer Basics -superBlock: computer-basics -certification: computer-basics ---- - -## Learn Computer Basics - -Build a foundation in computer, internet, and tooling basics for web development. diff --git a/client/src/pages/learn/css-and-accessibility/index.md b/client/src/pages/learn/css-and-accessibility/index.md deleted file mode 100644 index ebec77c7fbe..00000000000 --- a/client/src/pages/learn/css-and-accessibility/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS and Accessibility -superBlock: css-and-accessibility -certification: css-and-accessibility ---- - -## Introduction to Learn CSS and Accessibility - -Apply CSS techniques that support accessible and inclusive interfaces. diff --git a/client/src/pages/learn/css-animations/index.md b/client/src/pages/learn/css-animations/index.md deleted file mode 100644 index 829ea4b7dc8..00000000000 --- a/client/src/pages/learn/css-animations/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Animations -superBlock: css-animations -certification: css-animations ---- - -## Introduction to Learn CSS Animations - -Create engaging UI motion with accessible CSS animations. diff --git a/client/src/pages/learn/css-box-model/index.md b/client/src/pages/learn/css-box-model/index.md deleted file mode 100644 index 921503cb5ca..00000000000 --- a/client/src/pages/learn/css-box-model/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn the CSS Box Model -superBlock: css-box-model -certification: css-box-model ---- - -## Introduction to Learn the CSS Box Model - -Master the CSS box model, spacing, and layout effects for precise designs. diff --git a/client/src/pages/learn/css-colors/index.md b/client/src/pages/learn/css-colors/index.md deleted file mode 100644 index 8407d27a2a7..00000000000 --- a/client/src/pages/learn/css-colors/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Colors -superBlock: css-colors -certification: css-colors ---- - -## Introduction to Learn CSS Colors - -Work with CSS color formats and build cohesive color palettes. diff --git a/client/src/pages/learn/css-flexbox/index.md b/client/src/pages/learn/css-flexbox/index.md deleted file mode 100644 index 72445bc9303..00000000000 --- a/client/src/pages/learn/css-flexbox/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Flexbox -superBlock: css-flexbox -certification: css-flexbox ---- - -## Introduction to Learn CSS Flexbox - -Build responsive layouts using the Flexbox model and alignment tools. diff --git a/client/src/pages/learn/css-grid/index.md b/client/src/pages/learn/css-grid/index.md deleted file mode 100644 index 7d3e2bdabde..00000000000 --- a/client/src/pages/learn/css-grid/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Grid -superBlock: css-grid -certification: css-grid ---- - -## Introduction to Learn CSS Grid - -Design complex layouts using the CSS Grid system. diff --git a/client/src/pages/learn/css-positioning/index.md b/client/src/pages/learn/css-positioning/index.md deleted file mode 100644 index 7a3b460a399..00000000000 --- a/client/src/pages/learn/css-positioning/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Positioning -superBlock: css-positioning -certification: css-positioning ---- - -## Introduction to Learn CSS Positioning - -Use positioning and floats to control layout and element flow. diff --git a/client/src/pages/learn/css-typography/index.md b/client/src/pages/learn/css-typography/index.md deleted file mode 100644 index 15ccbfb4632..00000000000 --- a/client/src/pages/learn/css-typography/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Typography -superBlock: css-typography -certification: css-typography ---- - -## Introduction to Learn CSS Typography - -Learn how to style text for readability, hierarchy, and visual balance. diff --git a/client/src/pages/learn/css-variables/index.md b/client/src/pages/learn/css-variables/index.md deleted file mode 100644 index bdee45f0dfc..00000000000 --- a/client/src/pages/learn/css-variables/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Variables -superBlock: css-variables -certification: css-variables ---- - -## Introduction to Learn CSS Variables - -Use CSS variables to build reusable, theme-friendly styles. diff --git a/client/src/pages/learn/data-analysis-with-python/index.md b/client/src/pages/learn/data-analysis-with-python/index.md deleted file mode 100644 index 3a8f87eb1e9..00000000000 --- a/client/src/pages/learn/data-analysis-with-python/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Data Analysis with Python -superBlock: data-analysis-with-python -certification: data-analysis-with-python ---- - -## Introduction to Data Analysis with Python - -Learn the basics of data analysis with Python. diff --git a/client/src/pages/learn/data-visualization/index.md b/client/src/pages/learn/data-visualization/index.md deleted file mode 100644 index c0435dfc0b6..00000000000 --- a/client/src/pages/learn/data-visualization/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Data Visualization -superBlock: data-visualization -certification: data-visualization ---- - -## Introduction to Data Visualization - -This is a stub introduction for Data Visualization diff --git a/client/src/pages/learn/design-for-developers/index.md b/client/src/pages/learn/design-for-developers/index.md deleted file mode 100644 index 8aeece167c0..00000000000 --- a/client/src/pages/learn/design-for-developers/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to UI/UX Design -superBlock: design-for-developers -certification: design-for-developers ---- - -## Introduction to UI/UX Design - -Explore UI design fundamentals and user-centered design principles for developers. diff --git a/client/src/pages/learn/dev-playground/index.md b/client/src/pages/learn/dev-playground/index.md deleted file mode 100644 index d1b8793806a..00000000000 --- a/client/src/pages/learn/dev-playground/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Dev Playground -superBlock: dev-playground -certification: dev-playground ---- - -## Introduction to the Dev Playground - -Playground for creating and testing new challenges diff --git a/client/src/pages/learn/foundational-c-sharp-with-microsoft/index.md b/client/src/pages/learn/foundational-c-sharp-with-microsoft/index.md deleted file mode 100644 index 875ea2cde15..00000000000 --- a/client/src/pages/learn/foundational-c-sharp-with-microsoft/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Foundational C# with Microsoft -superBlock: foundational-c-sharp-with-microsoft -certification: foundational-c-sharp-with-microsoft ---- - -## Introduction to Foundational C# with Microsoft - -Foundational C# with Microsoft diff --git a/client/src/pages/learn/front-end-development-libraries-v9/index.md b/client/src/pages/learn/front-end-development-libraries-v9/index.md deleted file mode 100644 index 891a9c85207..00000000000 --- a/client/src/pages/learn/front-end-development-libraries-v9/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Front-End Development Libraries -superBlock: front-end-development-libraries-v9 -certification: front-end-development-libraries-v9 ---- - -## Introduction to Front-End Development Libraries - -This is a stub introduction for Front-End Development Libraries diff --git a/client/src/pages/learn/front-end-development-libraries/index.md b/client/src/pages/learn/front-end-development-libraries/index.md deleted file mode 100644 index 1946117f9a3..00000000000 --- a/client/src/pages/learn/front-end-development-libraries/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Front-End Development Libraries -superBlock: front-end-development-libraries -certification: front-end-development-libraries ---- - -## Introduction to Front-End Development Libraries - -This is a stub introduction for Front-End Development Libraries diff --git a/client/src/pages/learn/full-stack-developer-v9/index.md b/client/src/pages/learn/full-stack-developer-v9/index.md deleted file mode 100644 index 4c20f9aa927..00000000000 --- a/client/src/pages/learn/full-stack-developer-v9/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Certified Full-Stack Developer -superBlock: full-stack-developer-v9 -certification: full-stack-developer-v9 ---- - -## Certified Full-Stack Developer - -Learn HTML, CSS, JavaScript, Relational Databases, React, and Node.js to become a Certified Full-Stack Developer. diff --git a/client/src/pages/learn/full-stack-open/index.md b/client/src/pages/learn/full-stack-open/index.md deleted file mode 100644 index 834a3801143..00000000000 --- a/client/src/pages/learn/full-stack-open/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Full-Stack Open -superBlock: full-stack-open -certification: full-stack-open ---- - -## Full-Stack Open - -The [Full-Stack Open](https://fullstackopen.com/en/) curriculum, created by the University of Helsinki, covers modern web development with JavaScript. The curriculum focuses on building single page applications with ReactJS that use REST APIs built with Node.js. It also covers GraphQL APIs, TypeScript, and testing. diff --git a/client/src/pages/learn/html-and-accessibility/index.md b/client/src/pages/learn/html-and-accessibility/index.md deleted file mode 100644 index cca108889c6..00000000000 --- a/client/src/pages/learn/html-and-accessibility/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn HTML and Accessibility -superBlock: html-and-accessibility -certification: html-and-accessibility ---- - -## Learn HTML and Accessibility - -Learn how to write inclusive HTML using accessibility best practices and ARIA. diff --git a/client/src/pages/learn/html-forms-and-tables/index.md b/client/src/pages/learn/html-forms-and-tables/index.md deleted file mode 100644 index 74a6dc33deb..00000000000 --- a/client/src/pages/learn/html-forms-and-tables/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn HTML Forms and Tables -superBlock: html-forms-and-tables -certification: html-forms-and-tables ---- - -## Introduction to Learn HTML Forms and Tables - -Learn how to build accessible forms and data tables with semantic HTML. diff --git a/client/src/pages/learn/information-security/index.md b/client/src/pages/learn/information-security/index.md deleted file mode 100644 index 472eac0fea7..00000000000 --- a/client/src/pages/learn/information-security/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Information Security -superBlock: information-security -certification: information-security ---- - -## Introduction to Information Security - -This is a stub introduction for Information Security diff --git a/client/src/pages/learn/introduction-to-algorithms-and-data-structures/index.md b/client/src/pages/learn/introduction-to-algorithms-and-data-structures/index.md deleted file mode 100644 index a8398b8c320..00000000000 --- a/client/src/pages/learn/introduction-to-algorithms-and-data-structures/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Introduction to Algorithms and Data Structures -superBlock: introduction-to-algorithms-and-data-structures -certification: introduction-to-algorithms-and-data-structures ---- - -## Introduction to Algorithms and Data Structures - -Algorithms and Data Structures are the backbone of programming. So it's important to learn how to work with them. - -In this comprehensive course, you will learn about common sorting and searching algorithms including merge sort, quicksort and binary search. - -You will also learn how to work with common data structures including arrays and linked lists. diff --git a/client/src/pages/learn/introduction-to-bash/index.md b/client/src/pages/learn/introduction-to-bash/index.md deleted file mode 100644 index 48805efe292..00000000000 --- a/client/src/pages/learn/introduction-to-bash/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to Bash -superBlock: introduction-to-bash -certification: introduction-to-bash ---- - -## Introduction to Bash - -Bash is a command-line interface that allows you to interact with your computer's operating system. It is a powerful tool that can be used for a variety of tasks, including file management, system administration, and programming. diff --git a/client/src/pages/learn/introduction-to-git-and-github/index.md b/client/src/pages/learn/introduction-to-git-and-github/index.md deleted file mode 100644 index 859f45436d9..00000000000 --- a/client/src/pages/learn/introduction-to-git-and-github/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to Git and GitHub -superBlock: introduction-to-git-and-github -certification: introduction-to-git-and-github ---- - -## Introduction to Git and GitHub - -Git is a distributed version control system that allows developers to track changes in their code and collaborate with others. GitHub is a web-based platform that provides hosting for Git repositories, making it easier for developers to share their code and work together on projects. In this course, you will learn the basics of Git and how to use GitHub to manage your code and collaborate with other developers. By the end of this course, you will have a solid understanding of how to use Git and GitHub effectively for your development projects. diff --git a/client/src/pages/learn/introduction-to-nano/index.md b/client/src/pages/learn/introduction-to-nano/index.md deleted file mode 100644 index 346bb2d9f67..00000000000 --- a/client/src/pages/learn/introduction-to-nano/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to Nano -superBlock: introduction-to-nano -certification: introduction-to-nano ---- - -## Introduction to Nano - -Nano is a simple and user-friendly text editor that runs in the terminal. It is designed to be easy to use, making it a great choice for beginners who are new to command-line interfaces. In this course, you will learn how to use Nano to create and edit text files, navigate through the editor, and perform basic editing tasks. By the end of this course, you will have a solid understanding of how to use Nano effectively for your text editing needs. diff --git a/client/src/pages/learn/introduction-to-sql-and-postgresql/index.md b/client/src/pages/learn/introduction-to-sql-and-postgresql/index.md deleted file mode 100644 index 13020ca227a..00000000000 --- a/client/src/pages/learn/introduction-to-sql-and-postgresql/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to SQL and PostgreSQL -superBlock: introduction-to-sql-and-postgresql -certification: introduction-to-sql-and-postgresql ---- - -## Introduction to SQL and PostgreSQL - -SQL (Structured Query Language) is a programming language used to manage and manipulate relational databases. It allows you to create, read, update, and delete data in a database. PostgreSQL is an open-source relational database management system that uses SQL as its primary query language. It is known for its robustness, scalability, and support for advanced features. In this course, you will learn the basics of SQL and how to use PostgreSQL to manage your databases effectively. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures-v8/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures-v8/index.md deleted file mode 100644 index e467434c10d..00000000000 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures-v8/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: JavaScript Algorithms and Data Structures -superBlock: javascript-algorithms-and-data-structures-v8 -certification: javascript-algorithms-and-data-structures ---- - -## Does it need a title? - -Naomi will put stuff here eventually. diff --git a/client/src/pages/learn/javascript-algorithms-and-data-structures/index.md b/client/src/pages/learn/javascript-algorithms-and-data-structures/index.md deleted file mode 100644 index 4ad4c612df7..00000000000 --- a/client/src/pages/learn/javascript-algorithms-and-data-structures/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Legacy JavaScript Algorithms and Data Structures -superBlock: javascript-algorithms-and-data-structures -certification: javascript-algorithms-and-data-structures ---- - -## Introduction to JavaScript Algorithms and Data Structures - -JavaScript Algorithms and Data Structures will teach you basic JavaScript in a series of challenges. It will teach you how to assign variables, arrays, create functions, and some of the various loop types used in JavaScript. Then it will teach you to apply what you’ve learned in multiple algorithm creation challenges. Once you have completed all the challenges and the required projects you will receive the JavaScript Algorithms and Data Structures Certification. diff --git a/client/src/pages/learn/javascript-v9/index.md b/client/src/pages/learn/javascript-v9/index.md deleted file mode 100644 index 5b1fc680520..00000000000 --- a/client/src/pages/learn/javascript-v9/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: JavaScript Certification -superBlock: javascript-v9 -certification: javascript-v9 ---- - -## Introduction to JavaScript Certification - -This course teaches you core JavaScript programming concepts such as working with variables, functions, objects, arrays, and control flow. You'll also learn how to manipulate the DOM, handle events, and apply techniques like asynchronous programming, functional programming, and accessibility best practices. - -To earn your JavaScript Certification: - -- Complete the five required projects to qualify for the certification exam. -- Pass the JavaScript Certification exam. diff --git a/client/src/pages/learn/lab-book-inventory-app/index.md b/client/src/pages/learn/lab-book-inventory-app/index.md deleted file mode 100644 index b97e4eca3be..00000000000 --- a/client/src/pages/learn/lab-book-inventory-app/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Build a Book Inventory App -superBlock: lab-book-inventory-app -certification: lab-book-inventory-app ---- - -## Build a Book Inventory App - -Build a structured layout for managing a book inventory. diff --git a/client/src/pages/learn/lab-page-of-playing-cards/index.md b/client/src/pages/learn/lab-page-of-playing-cards/index.md deleted file mode 100644 index 0eec4c3126c..00000000000 --- a/client/src/pages/learn/lab-page-of-playing-cards/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Build a Page of Playing Cards -superBlock: lab-page-of-playing-cards -certification: lab-page-of-playing-cards ---- - -## Build a Page of Playing Cards - -Create a multi-card layout to practice flexible CSS composition. diff --git a/client/src/pages/learn/lab-product-landing-page/index.md b/client/src/pages/learn/lab-product-landing-page/index.md deleted file mode 100644 index 74adf6a55d1..00000000000 --- a/client/src/pages/learn/lab-product-landing-page/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Build a Product Landing Page -superBlock: lab-product-landing-page -certification: lab-product-landing-page ---- - -## Build a Product Landing Page - -Build a complete landing page and apply layout, typography, and responsive design. diff --git a/client/src/pages/learn/lab-survey-form/index.md b/client/src/pages/learn/lab-survey-form/index.md deleted file mode 100644 index 6aebf1eeff0..00000000000 --- a/client/src/pages/learn/lab-survey-form/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Build a Survey Form -superBlock: lab-survey-form -certification: lab-survey-form ---- - -## Build a Survey Form - -Create a complete survey form while practicing HTML structure and accessible form controls. diff --git a/client/src/pages/learn/lab-technical-documentation-page/index.md b/client/src/pages/learn/lab-technical-documentation-page/index.md deleted file mode 100644 index 80d498e044b..00000000000 --- a/client/src/pages/learn/lab-technical-documentation-page/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Build a Technical Documentation Page -superBlock: lab-technical-documentation-page -certification: lab-technical-documentation-page ---- - -## Build a Technical Documentation Page - -Create a documentation page and practice responsive structure and layout. diff --git a/client/src/pages/learn/learn-bash-scripting/index.md b/client/src/pages/learn/learn-bash-scripting/index.md deleted file mode 100644 index 8847b34d48a..00000000000 --- a/client/src/pages/learn/learn-bash-scripting/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Learn Bash Scripting -superBlock: learn-bash-scripting -certification: learn-bash-scripting ---- - -## Learn Bash Scripting - -Bash is a command-line interface that allows you to interact with your computer's operating system. - -In this course, you will build several bash programs and get quizzed on what you have learned. diff --git a/client/src/pages/learn/learn-prompting-fundamentals/index.md b/client/src/pages/learn/learn-prompting-fundamentals/index.md deleted file mode 100644 index b4c038b442f..00000000000 --- a/client/src/pages/learn/learn-prompting-fundamentals/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Prompting Fundamentals -superBlock: learn-prompting-fundamentals -certification: learn-prompting-fundamentals ---- - -## Learn Prompting Fundamentals - -In this video course, you will learn about prompting techniques, including zero-shot and few-shot strategies, and learn how to handle AI hallucinations. This course also covers practical applications, best practices, and text embeddings to make your prompts more effective and reliable. diff --git a/client/src/pages/learn/learn-python-for-beginners/index.md b/client/src/pages/learn/learn-python-for-beginners/index.md deleted file mode 100644 index 53edfe49015..00000000000 --- a/client/src/pages/learn/learn-python-for-beginners/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Python for Beginners -superBlock: learn-python-for-beginners -certification: learn-python-for-beginners ---- - -## Introduction to Learn Python for Beginners - -Learn the fundamentals of Python programming from the ground up. Python is one of the most popular programming languages today and is great for beginners. diff --git a/client/src/pages/learn/learn-sql-and-bash/index.md b/client/src/pages/learn/learn-sql-and-bash/index.md deleted file mode 100644 index 27cdad6a217..00000000000 --- a/client/src/pages/learn/learn-sql-and-bash/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn SQL and Bash -superBlock: learn-sql-and-bash -certification: learn-sql-and-bash ---- - -## Learn SQL and Bash - -SQL (Structured Query Language) is a programming language used to manage and manipulate relational databases. It allows you to create, read, update, and delete data in a database. PostgreSQL is an open-source relational database management system that uses SQL as its primary query language. It is known for its robustness, scalability, and support for advanced features. In this course, you will learn the basics of SQL and how to use PostgreSQL to manage your databases effectively. diff --git a/client/src/pages/learn/machine-learning-with-python/index.md b/client/src/pages/learn/machine-learning-with-python/index.md deleted file mode 100644 index c251181def5..00000000000 --- a/client/src/pages/learn/machine-learning-with-python/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Machine Learning with Python -superBlock: machine-learning-with-python -certification: machine-learning-with-python ---- - -## Introduction to Machine Learning with Python - -Learn the basics of Machine Learning with Python. diff --git a/client/src/pages/learn/project-euler/index.md b/client/src/pages/learn/project-euler/index.md deleted file mode 100644 index 874be65f4ca..00000000000 --- a/client/src/pages/learn/project-euler/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Project Euler -superBlock: project-euler -certification: project-euler ---- - -## Project Euler - -Project Euler is a series of challenging mathematical and computational problems that require creative problem-solving and programming skills to solve. It was created by Colin Hughes in 2001 and has since become a popular platform for individuals to test and improve their mathematical and programming abilities. With over 400 problems to solve, Project Euler provides an opportunity for individuals to challenge themselves and learn new concepts in a fun and engaging way. Whether you are a beginner or an experienced programmer, Project Euler has something to offer for everyone, and its growing community of users from around the world makes it a great place to learn, collaborate, and grow. diff --git a/client/src/pages/learn/pseudo-classes-and-elements/index.md b/client/src/pages/learn/pseudo-classes-and-elements/index.md deleted file mode 100644 index 26a3a11d60b..00000000000 --- a/client/src/pages/learn/pseudo-classes-and-elements/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn CSS Pseudo Classes and Elements -superBlock: pseudo-classes-and-elements -certification: pseudo-classes-and-elements ---- - -## Learn CSS Pseudo Classes and Elements - -Use pseudo-classes and pseudo-elements to create richer, more interactive styles. diff --git a/client/src/pages/learn/python-for-everybody/index.md b/client/src/pages/learn/python-for-everybody/index.md deleted file mode 100644 index 85417294e11..00000000000 --- a/client/src/pages/learn/python-for-everybody/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Python for Everybody -superBlock: python-for-everybody -certification: python-for-everybody ---- - -## Introduction to Python for Everybody - -Learn the basics of Python. diff --git a/client/src/pages/learn/python-v9/index.md b/client/src/pages/learn/python-v9/index.md deleted file mode 100644 index 5aa27907370..00000000000 --- a/client/src/pages/learn/python-v9/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Python -superBlock: python-v9 -certification: python-v9 ---- - -## Introduction to Python - -This is a stub introduction for Python diff --git a/client/src/pages/learn/quality-assurance/index.md b/client/src/pages/learn/quality-assurance/index.md deleted file mode 100644 index e3e5affd132..00000000000 --- a/client/src/pages/learn/quality-assurance/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Quality Assurance -superBlock: quality-assurance -certification: quality-assurance ---- - -## Introduction to Quality Assurance - -This is a stub introduction for Quality Assurance diff --git a/client/src/pages/learn/relational-database/index.md b/client/src/pages/learn/relational-database/index.md deleted file mode 100644 index 02c0a75dbd1..00000000000 --- a/client/src/pages/learn/relational-database/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Relational Database -superBlock: relational-database -certification: relational-database ---- - -## Introduction to Relational Database - -This introduction is a stub - -Help us make it real on [GitHub](https://github.com/freeCodeCamp/learn/tree/master/src/introductions). diff --git a/client/src/pages/learn/relational-databases-v9/index.md b/client/src/pages/learn/relational-databases-v9/index.md deleted file mode 100644 index cc4278a8563..00000000000 --- a/client/src/pages/learn/relational-databases-v9/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Relational Database -superBlock: relational-databases-v9 -certification: relational-databases-v9 ---- - -## Introduction to Relational Databases - -This is a stub introduction for Relational Databases diff --git a/client/src/pages/learn/responsive-design/index.md b/client/src/pages/learn/responsive-design/index.md deleted file mode 100644 index d6791729d55..00000000000 --- a/client/src/pages/learn/responsive-design/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Responsive Design -superBlock: responsive-design -certification: responsive-design ---- - -## Introduction to Learn Responsive Design - -Learn responsive design principles and build layouts that adapt to any screen. diff --git a/client/src/pages/learn/responsive-web-design-v9/index.md b/client/src/pages/learn/responsive-web-design-v9/index.md deleted file mode 100644 index 12ce882ba32..00000000000 --- a/client/src/pages/learn/responsive-web-design-v9/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: New Responsive Web Design Certification -superBlock: responsive-web-design-v9 -certification: responsive-web-design-v9 ---- - -## New Responsive Web Design Certification - -This course teaches you the languages that developers use to build webpages: HTML (Hypertext Markup Language) for content, and CSS (Cascading Style Sheets) for design. - -To earn your Responsive Web Design Certification: - -- Complete the five required projects to qualify for the certification exam. -- Pass the Responsive Web Design Certification exam. diff --git a/client/src/pages/learn/responsive-web-design/index.md b/client/src/pages/learn/responsive-web-design/index.md deleted file mode 100644 index eef50f2e72d..00000000000 --- a/client/src/pages/learn/responsive-web-design/index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Responsive Web Design -superBlock: responsive-web-design -certification: responsive-web-design ---- - -## Introduction to Responsive Web Design - -Welcome to Responsive Web Design! - -Let's first take a look at what is in the scope of Responsive Web Design (and what is not). - -The Web part of Responsive Web Design means that the content you are creating is designed to be delivered over the web to users' browsers. To do this, you will need to learn the language that browsers use to describe web pages: HTML (Hypertext Markup Language) for content, and CSS (Cascading Style Sheets) for design. - -That brings us to design. Web Design focuses on how websites should look and behave to the end user. There are plenty of additional aspects to websites, including how to host a website so people can access it, how to protect your websites and store your users' data, and the ethos behind what should go on a website in the first place. These are somewhat harder to teach, but do require a good understanding of the capabilities of the web in modern contexts. - -And what of the word Responsive? Well, that brings us to the idea of modern contexts. In today's world, websites are expected to be just as accessible on laptops, tablets and phones. If you compare your user experience on a document-editing program on a computer versus a document-editing program on a mobile, the features on mobile are likely to be far more constrained. This applies in some way to websites as well, but developers have found interesting ways to adapt to the mobile experience, not in the least by harnessing powerful features built for flexible (a.k.a responsive) web displays such as CSS `flexbox` and CSS `grid`. - -Ready to learn about good design practices for the web? Let's get started! - -[Begin Course](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) diff --git a/client/src/pages/learn/rosetta-code/index.md b/client/src/pages/learn/rosetta-code/index.md deleted file mode 100644 index 793368e958a..00000000000 --- a/client/src/pages/learn/rosetta-code/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Rosetta Code -superBlock: rosetta-code -certification: rosetta-code ---- - -## Rosetta Code - -[The Rosetta Code](https://rosettacode.org) is a list of programming challenges which will help you build your programming skills. - -> "The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another." - _Homepage of the Rosetta Code site_ diff --git a/client/src/pages/learn/scientific-computing-with-python/index.md b/client/src/pages/learn/scientific-computing-with-python/index.md deleted file mode 100644 index 0cd0a10696e..00000000000 --- a/client/src/pages/learn/scientific-computing-with-python/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Scientific Computing with Python -superBlock: scientific-computing-with-python -certification: scientific-computing-with-python ---- - -## Introduction to Scientific Computing with Python - -The Scientific Computing with Python curriculum will equip you with the fundamentals of scientific computing, including data structures and algorithms to solidify your understanding of Python programming. - -Among the projects, you'll learn Python list comprehensions by building a case converter program, and master string manipulation by developing a cipher. The course also includes lessons on working with numbers and strings through implementing the Luhn algorithm and using lambda functions by creating an expense tracker. -The curriculum also covers algorithm design with the shortest path algorithm, recursion with the Tower of Hanoi puzzle, and data structures with the merge sort algorithm. - -In addition to core programming skills, the curriculum emphasizes real-world applications of scientific computing. You'll learn about numerical methods, building a vector space and simulating projectile motion, making you proficient in scientific and analytical programming. diff --git a/client/src/pages/learn/semantic-html/index.md b/client/src/pages/learn/semantic-html/index.md deleted file mode 100644 index adab3b5ed5a..00000000000 --- a/client/src/pages/learn/semantic-html/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn Semantic HTML -superBlock: semantic-html -certification: semantic-html ---- - -## Introduction to Learn Semantic HTML - -In this course, you will learn how to write semantic HTML. diff --git a/client/src/pages/learn/styling-forms/index.md b/client/src/pages/learn/styling-forms/index.md deleted file mode 100644 index d8341051e05..00000000000 --- a/client/src/pages/learn/styling-forms/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Learn How to Style Forms using CSS -superBlock: styling-forms -certification: styling-forms ---- - -## Introduction to Learn How to Style Forms Using CSS - -Apply CSS techniques to create clean, usable form layouts. diff --git a/client/src/pages/learn/the-odin-project/index.md b/client/src/pages/learn/the-odin-project/index.md deleted file mode 100644 index e600d4a7334..00000000000 --- a/client/src/pages/learn/the-odin-project/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: The Odin Project -superBlock: the-odin-project -certification: the-odin-project ---- - -## The Odin project - -The Odin Project is one of those "What I wish I had when I was learning" resources. Not everyone has access to a computer science education or the funds to attend an intensive coding school and neither of those is right for everyone anyway. This project is designed to fill in the gap for people who are trying to hack it on their own but still want a high quality education. diff --git a/client/src/redux/prop-types.ts b/client/src/redux/prop-types.ts index da33d86b0c3..0711ee3449d 100644 --- a/client/src/redux/prop-types.ts +++ b/client/src/redux/prop-types.ts @@ -10,7 +10,6 @@ import type { import type { Chapter } from '@freecodecamp/shared/config/chapters'; import { BlockLayouts, BlockLabel } from '@freecodecamp/shared/config/blocks'; import type { ChallengeFile, Ext } from '@freecodecamp/shared/utils/polyvinyl'; -import { type CertTitle } from '../../config/cert-and-project-map'; import { UserThemes } from './types'; export type { ChallengeFile, Ext }; @@ -29,17 +28,6 @@ export type CurrentCert = { certSlug: string; }; -export type MarkdownRemark = { - frontmatter: { - block: string; - superBlock: SuperBlocks; - certification: Certification; - title: CertTitle; - }; - html: string; - id: string; -}; - type MultipleChoiceAnswer = { answer: string; feedback: string | null; diff --git a/client/src/templates/Introduction/components/cert-challenge.tsx b/client/src/templates/Introduction/components/cert-challenge.tsx index f0c46000df7..13d05382766 100644 --- a/client/src/templates/Introduction/components/cert-challenge.tsx +++ b/client/src/templates/Introduction/components/cert-challenge.tsx @@ -15,14 +15,10 @@ import { userFetchStateSelector } from '../../../redux/selectors'; import { User } from '../../../redux/prop-types'; -import { - type CertTitle, - liveCerts -} from '../../../../config/cert-and-project-map'; +import { liveCerts } from '../../../../config/cert-and-project-map'; import { getCertifications } from '../../../components/profile/components/utils/certification'; interface CertChallengeProps { - certification: Certification; fetchState: { pending: boolean; complete: boolean; @@ -31,7 +27,6 @@ interface CertChallengeProps { }; isSignedIn: boolean; superBlock: SuperBlocks; - title: CertTitle; user: User; } @@ -48,7 +43,6 @@ const mapStateToProps = (state: unknown) => { const CertChallenge = ({ superBlock, - title, fetchState, isSignedIn, user @@ -59,8 +53,10 @@ const CertChallenge = ({ const { currentCerts, legacyCerts } = getCertifications(user); const { username } = user; - const cert = liveCerts.find(x => x.title === title); - if (!cert) throw Error(`Certification ${title} not found`); + const certification = superBlockToCertMap[superBlock]; + + const cert = liveCerts.find(x => x.certSlug === certification); + if (!cert) throw Error(`Certification ${certification} not found`); const certSlug = cert.certSlug; useEffect(() => { @@ -80,6 +76,7 @@ const CertChallenge = ({ )?.show ?? false; const certLocation = `/certification/${username}/${certSlug}`; + const title = t(`certification.title.${certification}`); return (
diff --git a/client/src/templates/Introduction/components/super-block-map.tsx b/client/src/templates/Introduction/components/super-block-map.tsx index 82992b147e5..f6b44d35226 100644 --- a/client/src/templates/Introduction/components/super-block-map.tsx +++ b/client/src/templates/Introduction/components/super-block-map.tsx @@ -7,7 +7,6 @@ import { chapterBasedSuperBlocks, SuperBlocks } from '@freecodecamp/shared/config/curriculum'; -import type { CertTitle } from '../../../../config/cert-and-project-map'; import type { ChapterBasedSuperBlockStructure, User @@ -19,7 +18,6 @@ import type { import { SuperBlockIcon } from '../../../assets/superblock-icon'; import { Link } from '../../../components/helpers'; import { - type Certification, certSlugTypeMap, certificationRequirements, superBlockToCertMap @@ -46,7 +44,6 @@ type Challenge = { }; type SuperBlockMapProps = { - certification: Certification; completedChallengeIds: string[]; disabledBlocks: string[]; initialExpandedBlock: string; @@ -54,25 +51,20 @@ type SuperBlockMapProps = { structure?: ChapterBasedSuperBlockStructure; superBlock: SuperBlocks; superBlockChallenges: Challenge[]; - title: CertTitle; user: User | null; }; const BlockList = ({ - certification, disabledBlocks, showCertification, superBlock, superBlockChallenges, - title, user }: { - certification: Certification; disabledBlocks: string[]; showCertification: boolean; superBlock: SuperBlocks; superBlockChallenges: Challenge[]; - title: CertTitle; user: User | null; }) => { const visibleBlocks = useMemo(() => { @@ -104,19 +96,13 @@ const BlockList = ({ ); })} {showCertification && !!user && ( - + )}
); }; export const SuperBlockMap = ({ - certification, completedChallengeIds, disabledBlocks, initialExpandedBlock, @@ -124,7 +110,6 @@ export const SuperBlockMap = ({ structure, superBlock, superBlockChallenges, - title, user }: SuperBlockMapProps) => { const { t } = useTranslation(); @@ -201,12 +186,10 @@ export const SuperBlockMap = ({ return ( ); diff --git a/client/src/templates/Introduction/super-block-intro.test.tsx b/client/src/templates/Introduction/super-block-intro.test.tsx index 129ecd7051a..cb489d582a2 100644 --- a/client/src/templates/Introduction/super-block-intro.test.tsx +++ b/client/src/templates/Introduction/super-block-intro.test.tsx @@ -257,9 +257,7 @@ const createPageProps = ( signInLoading: false, location: createLocation(), pageContext: { - superBlock, - title: `${superBlock} certification`, - certification: superBlock + superBlock }, resetExpansion: vi.fn(), toggleBlock: vi.fn(), diff --git a/client/src/templates/Introduction/super-block-intro.tsx b/client/src/templates/Introduction/super-block-intro.tsx index 6e57be5c33b..1ab4e74d682 100644 --- a/client/src/templates/Introduction/super-block-intro.tsx +++ b/client/src/templates/Introduction/super-block-intro.tsx @@ -33,11 +33,8 @@ import type { User, ChapterBasedSuperBlockStructure } from '../../redux/prop-types'; -import { CertTitle, liveCerts } from '../../../config/cert-and-project-map'; -import { - type Certification, - superBlockToCertMap -} from '@freecodecamp/shared/config/certification-settings'; +import { liveCerts } from '../../../config/cert-and-project-map'; +import { superBlockToCertMap } from '@freecodecamp/shared/config/certification-settings'; import { BlockLayouts, BlockLabel } from '@freecodecamp/shared/config/blocks'; import LegacyLinks from './components/legacy-links'; import HelpTranslate from './components/help-translate'; @@ -85,8 +82,6 @@ type SuperBlockProps = { location: WindowLocation<{ breadcrumbBlockClick: string }>; pageContext: { superBlock: SuperBlocks; - title: CertTitle; - certification: Certification; }; resetExpansion: () => void; toggleBlock: (arg0: string) => void; @@ -164,7 +159,7 @@ const SuperBlockIntroductionPage = (props: SuperBlockProps) => { currentChallengeId, signInLoading, user, - pageContext: { superBlock, title, certification }, + pageContext: { superBlock }, location } = props; @@ -313,7 +308,6 @@ const SuperBlockIntroductionPage = (props: SuperBlockProps) => { c.id)} disabledBlocks={disabledBlocksFeature} initialExpandedBlock={initialExpandedBlock} @@ -323,7 +317,6 @@ const SuperBlockIntroductionPage = (props: SuperBlockProps) => { } superBlock={superBlock} superBlockChallenges={superBlockChallenges} - title={title} user={user} /> {!isSignedIn && !signInLoading && ( diff --git a/client/utils/gatsby/challenge-page-creator.js b/client/utils/gatsby/challenge-page-creator.js index 5772a745ef8..d54b0e81cdc 100644 --- a/client/utils/gatsby/challenge-page-creator.js +++ b/client/utils/gatsby/challenge-page-creator.js @@ -164,28 +164,12 @@ function getProjectPreviewConfig(challenge, allChallengeNodes) { } exports.createSuperBlockIntroPages = function (createPage) { - return function (edge) { - const { - fields: { slug }, - frontmatter: { superBlock, certification, title } - } = edge.node; - - if (!certification) { - throw Error( - `superBlockIntro page, '${superBlock}' must have certification in frontmatter` - ); - } - - // TODO: throw if it encounters an unknown certification. Also, handle - // coding-interview-prep. it's not a certification, but it is a superBlock. - + return function ({ superBlock }) { createPage({ - path: slug, + path: `/learn/${superBlock}/`, component: superBlockIntro, context: { - certification, - superBlock, - title + superBlock } }); };