feat(tools): remove eslint-plugin-prettier for prettier (#42438)
* feat: remove eslint-plugin-prettier for prettier This removes the annoying lint warnings when all that needs to change is formatting * fix: use .js lint-staged config to ignore properly * fix: lint everything if a lot of files are changed It's faster than making lots of individual linter calls * chore: apply prettier * fix: ignore code in curriculum-file-structure
This commit is contained in:
committed by
GitHub
parent
8518079316
commit
c8d7f0a782
@ -131,7 +131,6 @@
|
||||
"operator-assignment": 0,
|
||||
"padded-blocks": 0,
|
||||
"prefer-object-spread/prefer-object-spread": 2,
|
||||
"prettier/prettier": "error",
|
||||
"quote-props": [2, "as-needed"],
|
||||
"quotes": [2, "single", "avoid-escape"],
|
||||
"radix": 2,
|
||||
|
@ -10,15 +10,14 @@
|
||||
"root": true,
|
||||
"extends": [
|
||||
"./.eslintrc-base.json",
|
||||
"plugin:prettier/recommended",
|
||||
"plugin:import/typescript",
|
||||
"plugin:jsx-a11y/recommended"
|
||||
"plugin:jsx-a11y/recommended",
|
||||
"prettier"
|
||||
],
|
||||
"plugins": [
|
||||
"react",
|
||||
"import",
|
||||
"prefer-object-spread",
|
||||
"prettier",
|
||||
"react-hooks",
|
||||
"jsx-a11y",
|
||||
"jest-dom",
|
||||
@ -58,7 +57,10 @@
|
||||
"plugins": ["@typescript-eslint"]
|
||||
},
|
||||
{
|
||||
"files": ["./tools/ui-components/**/*.test.[jt]s?(x)", "./client/**/*.test.[jt]s?(x)"],
|
||||
"files": [
|
||||
"./tools/ui-components/**/*.test.[jt]s?(x)",
|
||||
"./client/**/*.test.[jt]s?(x)"
|
||||
],
|
||||
"extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"]
|
||||
},
|
||||
{
|
||||
|
12
.github/labeler.yml
vendored
12
.github/labeler.yml
vendored
@ -1,22 +1,22 @@
|
||||
"scope: docs":
|
||||
'scope: docs':
|
||||
- docs/**/*
|
||||
|
||||
"scope: curriculum":
|
||||
'scope: curriculum':
|
||||
- curriculum/challenges/**/*
|
||||
|
||||
"platform: client":
|
||||
'platform: client':
|
||||
- client/**/*
|
||||
|
||||
"platform: api":
|
||||
'platform: api':
|
||||
- api-server/**/*
|
||||
|
||||
"scope: tools/scripts":
|
||||
'scope: tools/scripts':
|
||||
- cypress/**/*
|
||||
- tools/**/*
|
||||
- .github/**/*
|
||||
- utils/**/*
|
||||
|
||||
"scope: i18n":
|
||||
'scope: i18n':
|
||||
- any: ['curriculum/challenges/**/*', '!curriculum/challenges/english/**/*']
|
||||
- docs/i18n/**/*
|
||||
- client/i18n/**/*
|
||||
|
4
.github/workflows/autoclose.yml
vendored
4
.github/workflows/autoclose.yml
vendored
@ -2,9 +2,9 @@ name: Autoclose
|
||||
on:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- "main"
|
||||
- 'main'
|
||||
paths:
|
||||
- ".gitignore"
|
||||
- '.gitignore'
|
||||
|
||||
jobs:
|
||||
autoclose:
|
||||
|
4
.github/workflows/codeql-analysis.yml
vendored
4
.github/workflows/codeql-analysis.yml
vendored
@ -1,4 +1,4 @@
|
||||
name: "CodeQL"
|
||||
name: 'CodeQL'
|
||||
|
||||
on:
|
||||
push:
|
||||
@ -14,7 +14,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: ["javascript"]
|
||||
language: ['javascript']
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# runs everyday at 11:15 AM UTC
|
||||
- cron: "15 11 * * *"
|
||||
- cron: '15 11 * * *'
|
||||
|
||||
jobs:
|
||||
i18n-upload-client-ui-files:
|
||||
|
@ -56,7 +56,6 @@ jobs:
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_CURRICULUM }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }}
|
||||
|
||||
|
||||
# Convert Simplified Chinese to Traditional #
|
||||
- name: Generate Translations
|
||||
uses: ./tools/crowdin/actions/convert-chinese
|
||||
|
@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# runs everyday at 11:30 AM UTC
|
||||
- cron: "30 11 * * *"
|
||||
- cron: '30 11 * * *'
|
||||
|
||||
jobs:
|
||||
i18n-upload-curriculum-files:
|
||||
|
@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# runs everyday at 11:00 AM UTC
|
||||
- cron: "0 11 * * *"
|
||||
- cron: '0 11 * * *'
|
||||
|
||||
jobs:
|
||||
i18n-upload-docs-files:
|
||||
|
1
.github/workflows/cypress.yml
vendored
1
.github/workflows/cypress.yml
vendored
@ -53,7 +53,6 @@ jobs:
|
||||
name: webpack-stats
|
||||
path: client/public/stats.json
|
||||
|
||||
|
||||
cypress-run:
|
||||
name: Test
|
||||
runs-on: ubuntu-18.04
|
||||
|
12
.github/workflows/labeler.yaml
vendored
12
.github/workflows/labeler.yaml
vendored
@ -1,12 +1,12 @@
|
||||
name: "Pull Request Labeler"
|
||||
name: 'Pull Request Labeler'
|
||||
on:
|
||||
- pull_request_target
|
||||
- pull_request_target
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v3
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
sync-labels: true
|
||||
- uses: actions/labeler@v3
|
||||
with:
|
||||
repo-token: '${{ secrets.GITHUB_TOKEN }}'
|
||||
sync-labels: true
|
||||
|
28
.lintstagedrc.js
Normal file
28
.lintstagedrc.js
Normal file
@ -0,0 +1,28 @@
|
||||
const { ESLint } = require('eslint');
|
||||
|
||||
const cli = new ESLint();
|
||||
|
||||
// if a lot of files are changed, it's faster to run prettier/eslint on the
|
||||
// whole project than to run them on each file separately
|
||||
module.exports = {
|
||||
'*.(js|ts|tsx)': files =>
|
||||
files.length > 10
|
||||
? ['eslint --max-warnings=0 --cache --fix .', 'prettier --write .']
|
||||
: [
|
||||
'eslint --max-warnings=0 --cache --fix ' +
|
||||
files.filter(file => !cli.isPathIgnored(file)).join(' '),
|
||||
...files.map(filename => `prettier --write '${filename}'`)
|
||||
],
|
||||
'*.!(js|ts|tsx)': files =>
|
||||
files.length > 10
|
||||
? 'prettier --write .'
|
||||
: files.map(
|
||||
filename => `prettier --write --ignore-unknown '${filename}'`
|
||||
),
|
||||
'./curriculum/challenges/**/*.md': files =>
|
||||
files.length > 10
|
||||
? 'npm run lint:challenges'
|
||||
: files.map(
|
||||
filename => `node ./tools/scripts/lint/index.js '${filename}'`
|
||||
)
|
||||
};
|
@ -1,6 +1,9 @@
|
||||
**/.cache
|
||||
**/public
|
||||
client/static
|
||||
fixtures
|
||||
**/*fixtures*
|
||||
curriculum/challenges/_meta/*/*
|
||||
curriculum/challenges/**/*
|
||||
config/**/*.json
|
||||
client/i18n/**/*.json
|
||||
docs/i18n
|
||||
|
@ -1,2 +1 @@
|
||||
|
||||
> Our Code of Conduct is available here: <https://www.freecodecamp.org/code-of-conduct/>
|
||||
|
@ -1,3 +1,3 @@
|
||||
## Our contributing docs are available here: <https://contribute.freecodecamp.org>.
|
||||
|
||||
Looking to edit these docs? Read [this document](https://contribute.freecodecamp.org/#/how-to-work-on-the-docs-theme) first.
|
||||
Looking to edit these docs? Read [this document](https://contribute.freecodecamp.org/#/how-to-work-on-the-docs-theme) first.
|
||||
|
2
HoF.md
2
HoF.md
@ -4,4 +4,4 @@ We appreciate any responsible disclosure of vulnerabilities that might impact th
|
||||
|
||||
- Mehul Mohan from [codedamn](https://codedamn.com) ([@mehulmpt](https://twitter.com/mehulmpt)) - [Vulnerability Fix](https://github.com/freeCodeCamp/freeCodeCamp/blob/bb5a9e815313f1f7c91338e171bfe5acb8f3e346/client/src/components/Flash/index.js)
|
||||
- Peter Samir https://www.linkedin.com/in/peter-samir/
|
||||
> ### Thank you for your contributions :pray:
|
||||
> ### Thank you for your contributions :pray:
|
||||
|
@ -6,14 +6,14 @@ All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
- Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
- Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
- Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
|
@ -2,9 +2,11 @@
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{"targets": {
|
||||
"node": 10
|
||||
}}
|
||||
{
|
||||
"targets": {
|
||||
"node": 10
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"plugins": [
|
||||
|
@ -1 +1,3 @@
|
||||
&{ @import "./app/index.less"; }
|
||||
& {
|
||||
@import './app/index.less';
|
||||
}
|
||||
|
@ -276,9 +276,7 @@
|
||||
"default": {}
|
||||
},
|
||||
"donationEmails": {
|
||||
"type": [
|
||||
"string"
|
||||
]
|
||||
"type": ["string"]
|
||||
},
|
||||
"isDonating": {
|
||||
"type": "boolean",
|
||||
|
@ -25,10 +25,6 @@
|
||||
"clean": "gatsby clean",
|
||||
"predevelop": "node ../tools/scripts/build/ensure-env.js && npm run build:workers -- --env development",
|
||||
"develop": "node --max_old_space_size=4000 node_modules/gatsby-cli develop --inspect=9230",
|
||||
"format": "npm run format:gatsby && npm run format:src && npm run format:utils",
|
||||
"format:gatsby": "prettier-eslint --write --trailing-comma none --single-quote './gatsby-*.js'",
|
||||
"format:src": "prettier-eslint --write --trailing-comma none --single-quote './src/**/*.js'",
|
||||
"format:utils": "prettier-eslint --write --trailing-comma none --single-quote './utils/**/*.js'",
|
||||
"lint": "node ./i18n/schema-validation.js",
|
||||
"serve": "gatsby serve -p 8000",
|
||||
"serve-ci": "serve -l 8000 -c ../serve.json public",
|
||||
|
@ -3,15 +3,17 @@ title: Introduction to the Back End Development and APIs Projects
|
||||
block: Back End Development and APIs Projects
|
||||
superBlock: Back End Development and APIs
|
||||
---
|
||||
|
||||
## Introduction to the Back End Development and APIs Projects
|
||||
|
||||
Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far including npm packages, basic Node, basic Express, MongoDB, and Mongoose.
|
||||
|
||||
In this section you get the chance to:
|
||||
* Build a Timestamp Microservice
|
||||
* Build a Request Header Parser Microservice
|
||||
* Build a URL Shortener Microservice
|
||||
* Build a Exercise Tracker
|
||||
* Build a File Metadata Microservice
|
||||
|
||||
- Build a Timestamp Microservice
|
||||
- Build a Request Header Parser Microservice
|
||||
- Build a URL Shortener Microservice
|
||||
- Build a Exercise Tracker
|
||||
- Build a File Metadata Microservice
|
||||
|
||||
By the end of this, you would have 5 microservices under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Back End Development and APIs
|
||||
superBlock: back-end-development-and-apis
|
||||
---
|
||||
|
||||
## Introduction to Back End Development and APIs
|
||||
|
||||
This is a stub introduction for Back End Development and APIs
|
||||
@ -19,7 +20,8 @@ A monolith typically has the three key components of any application - the UI, B
|
||||
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
|
||||
|
||||
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
|
||||
@ -28,6 +30,7 @@ To overcome some of the issues, one of the suggestions that was made early on wa
|
||||
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
|
||||
@ -35,6 +38,7 @@ To overcome some of the issues, one of the suggestions that was made early on wa
|
||||
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/
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Algorithms
|
||||
block: Algorithms
|
||||
superBlock: Coding Interview Prep
|
||||
---
|
||||
|
||||
## Introduction to the Coding Interview Prep Algorithms
|
||||
|
||||
These challenges are meant to teach and challenge you with common algorithms that you will encounter in real life. These challenges will be a great learning experience to help improve your programming and logical skills.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Data Structure Questions
|
||||
block: Data Structures
|
||||
superBlock: Coding Interview Prep
|
||||
---
|
||||
|
||||
## Introduction to the Coding Interview Data Structure Questions
|
||||
|
||||
These excercises are meant to help you deal with large or complex data by using many different data types other than your standard objects or arrays.
|
||||
These excercises are meant to help you deal with large or complex data by using many different data types other than your standard objects or arrays.
|
||||
|
@ -3,12 +3,13 @@ title: Introduction to the Project Euler Problems
|
||||
block: Project Euler
|
||||
superBlock: Coding Interview Prep
|
||||
---
|
||||
|
||||
## Introduction to the Project Euler Problems
|
||||
|
||||
[Project Euler](https://projecteuler.net/) (pronounced Oiler) is a series of challenging mathematical/computer programming problems meant to delve into unfamiliar areas and learn new concepts in a fun and recreational manner.
|
||||
|
||||
>The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem.
|
||||
> The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem.
|
||||
>
|
||||
> Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
|
||||
>
|
||||
>_from the Project Euler <a href='https://projecteuler.net/' rel='noopener noreferrer'>home page</a>_
|
||||
> _from the Project Euler <a href='https://projecteuler.net/' rel='noopener noreferrer'>home page</a>_
|
||||
|
@ -3,7 +3,9 @@ title: Introduction to the Rosetta Code Problems
|
||||
block: Rosetta Code
|
||||
superBlock: Coding Interview Prep
|
||||
---
|
||||
|
||||
## Introduction to the Rosetta Code Problems
|
||||
|
||||
[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_
|
||||
|
||||
> "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_
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Take Home Projects
|
||||
block: Take Home Projects
|
||||
superBlock: Coding Interview Prep
|
||||
---
|
||||
|
||||
## Introduction to the Coding Interview Take Home Projects
|
||||
|
||||
Programming interviews have always been stressful. One of the solutions is giving the applicant a take home project to be completed outside of the interview. These types of interviews usually require a lot of work, but they're a great way for employers to see how you might perform on the job.
|
||||
@ -10,9 +11,10 @@ Programming interviews have always been stressful. One of the solutions is givin
|
||||
The interview after the project submission could be a discussion about the applicant’s design decisions, scalability, and what the applicant might have done differently. This approach is more effective when the applicant doesn’t have a lot of publicly available past projects.
|
||||
|
||||
In this section you get the chance to work on many Take Home Projects like:
|
||||
* Show Local Weather using Weather API and Geolocation
|
||||
* Build a Wikipedia Viewer using Wikipedia's API
|
||||
* Build a Pinterest Clone using Masonry.js library
|
||||
and many more!
|
||||
|
||||
- Show Local Weather using Weather API and Geolocation
|
||||
- Build a Wikipedia Viewer using Wikipedia's API
|
||||
- Build a Pinterest Clone using Masonry.js library
|
||||
and many more!
|
||||
|
||||
By the end of this section, you will have plenty of Take Home Projects under your belt. This will boost your confidence and prepare you for Take Home Project Interviews. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Data Analysis with Python Course Lectures
|
||||
block: Data Analysis with Python Course
|
||||
superBlock: Data Analysis with Python
|
||||
---
|
||||
|
||||
## Introduction to the Data Analysis with Python Course Challenges
|
||||
|
||||
Learn Data Analysis with Python in this comprehensive tutorial. Data Analysis has been around for a long time, but up until a few years ago, it was practiced using closed, expensive and limited tools like Excel or Tableau. Python, SQL and other open libraries have changed Data Analysis forever.
|
||||
|
@ -3,19 +3,22 @@ title: Introduction to the Data Analysis with Python Projects
|
||||
block: Data Analysis with Python Projects
|
||||
superBlock: Data Analysis with Python
|
||||
---
|
||||
|
||||
## Introduction to the Data Analysis with Python Projects
|
||||
|
||||
There are many ways to analyze data with Python! By completing these projects, you will demonstrate that you have a good foundational knowledge of data analysis with Python.
|
||||
|
||||
We are working to finish up the interactive Data Analysis instructional content. For now, here are some videos from freeCodeCamp that will help with the projects. You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
||||
* [Python NumPy Video Course](https://www.youtube.com/watch?v=QUT1VHiLmmI) (1 hours)
|
||||
* [Data Science Video Course](https://m.youtube.com/watch?v=ua-CiDNNj30) (6 hours)
|
||||
|
||||
- [Python NumPy Video Course](https://www.youtube.com/watch?v=QUT1VHiLmmI) (1 hours)
|
||||
- [Data Science Video Course](https://m.youtube.com/watch?v=ua-CiDNNj30) (6 hours)
|
||||
|
||||
In this section you will develop the following projects:
|
||||
* Mean-Variance-Standard Deviation Calculator
|
||||
* Demographic Data Analyzer
|
||||
* Medical Data Visualizer
|
||||
* Page View Time Series Visualizer
|
||||
* Sea Level Predictor
|
||||
|
||||
- Mean-Variance-Standard Deviation Calculator
|
||||
- Demographic Data Analyzer
|
||||
- Medical Data Visualizer
|
||||
- Page View Time Series Visualizer
|
||||
- Sea Level Predictor
|
||||
|
||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Data Analysis with Python
|
||||
superBlock: data-analysis-with-python
|
||||
---
|
||||
|
||||
## Introduction to Data Analysis with Python
|
||||
|
||||
Learn the basics of data analysis with Python.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Numpy Lectures
|
||||
block: Numpy
|
||||
superBlock: Data Analysis with Python
|
||||
---
|
||||
|
||||
## Introduction to the Numpy Challenges
|
||||
|
||||
Learn the basics of the NumPy library with the following lectures created by Keith Galli. They provide background information on how NumPy works and how it compares to Python's Built-in lists. They go through how to write code with NumPy, creating arrays, indexing, math, statistics, reshaping, and more!
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the D3 Dashboard
|
||||
block: D3 Dashboard
|
||||
superBlock: Data Visualization
|
||||
---
|
||||
|
||||
## Introduction to the D3 Dashboard
|
||||
|
||||
<dfn>D3 Dashboard</dfn> Placeholder Introduction.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Data Visualization Projects
|
||||
block: Data Visualization Projects
|
||||
superBlock: Data Visualization
|
||||
---
|
||||
|
||||
## Introduction to the Data Visualization Projects
|
||||
|
||||
These challenges let you test your data visualization skills and how to transfer and use data using AJAX technologies.
|
||||
|
@ -3,7 +3,7 @@ title: Introduction to the Data Visualization with D3 Challenges
|
||||
block: Data Visualization with D3
|
||||
superBlock: Data Visualization
|
||||
---
|
||||
|
||||
## Introduction to the Data Visualization with D3 Challenges
|
||||
|
||||
D3.js, or D3, stands for Data Driven Documents. D3 is a JavaScript library to create dynamic and interactive data visualizations in the browser. It's built to work with common web standards, namely HTML, CSS, and Scalable Vector Graphics (SVG).<br><br>D3 takes input data and maps it into a visual representation of that data. It supports many different data formats. D3 lets you bind (or attach) the data to the Document Object Model (DOM). You use HTML or SVG elements with D3's built-in methods to transform the data into a visualization.<br><br>D3 gives you a lot of control over the presentation of data. This section covers the basic functionality and how to create visualizations with the D3 library.
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Data Visualization
|
||||
superBlock: data-visualization
|
||||
---
|
||||
|
||||
## Introduction to Data Visualization
|
||||
|
||||
This is a stub introduction for Data Visualization
|
||||
|
@ -3,7 +3,7 @@ title: Introduction to the JSON APIs and AJAX Challenges
|
||||
block: JSON APIs and Ajax
|
||||
superBlock: Data Visualization
|
||||
---
|
||||
|
||||
## Introduction to the JSON APIs and AJAX Challenges
|
||||
|
||||
Similar to how User Interfaces help people use programs, Application Programming Interfaces (APIs) help programs interact with other programs. APIs are tools that computers use to communicate with one another, in part to send and receive data. You can use API functionality in your page once you understand how to make requests and process data from it. Programmers often use AJAX technologies when working with APIs.<br><br>The term AJAX originated as an acronym for Asynchronous JavaScript And XML. It refers to a group of technologies that make asynchronous requests to a server to transfer data, then load any returned data into the page. An asynchronous process has a couple key properties. The browser does not stop loading a page to wait for the server's response. Also, the browser inserts updated data into part of the page without having to refresh the entire page.<br><br>User experience benefits from asynchronous processes in several ways. Pages load faster since the browser isn't waiting for the server to respond in the middle of a page render. Requests and transfers happen in the background, without interrupting what the user is doing. When the browser receives new data, only the necessary area of the page refreshes. These qualities especially enhance the user experience for single page applications.<br><br>The data transferred between the browser and server is often in a format called JavaScript Object Notation (JSON). JSON resembles JavaScript object literal syntax, except that it's transferred as a string. Once received, it can be converted into an object and used in a script.<br><br>This section covers how to transfer and use data using AJAX technologies with a freeCodeCamp API.
|
||||
|
||||
|
@ -3,14 +3,16 @@ title: Introduction to the Front End Development Libraries Projects
|
||||
block: Front End Development Libraries Projects
|
||||
superBlock: Front End Development Libraries
|
||||
---
|
||||
|
||||
## Introduction to the Front End Development Libraries Projects
|
||||
|
||||
It's now time to test out the frontend skills learned. This will help to bolster your skills, so don't hesitate to showcase your frontend skills in these projects.
|
||||
In this section you will complete the following projects with Bootstrap, jQuery, Sass, React and Redux:
|
||||
* A Random Quote Machine
|
||||
* A Markdown Previewer
|
||||
* A Drum Machine
|
||||
* A JavaScript Calculator
|
||||
* A 25 + 5 Clock
|
||||
|
||||
- A Random Quote Machine
|
||||
- A Markdown Previewer
|
||||
- A Drum Machine
|
||||
- A JavaScript Calculator
|
||||
- A 25 + 5 Clock
|
||||
|
||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Information Security
|
||||
superBlock: information-security
|
||||
---
|
||||
|
||||
## Introduction to Information Security
|
||||
|
||||
This is a stub introduction for Information Security
|
||||
|
@ -3,15 +3,17 @@ title: Introduction to the Information Security Projects
|
||||
block: Information Security Projects
|
||||
superBlock: Information Security
|
||||
---
|
||||
|
||||
## Introduction to the Information Security Projects
|
||||
|
||||
Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Information Security sections.
|
||||
|
||||
In this section you get the chance to:
|
||||
* Build a Stock Price Checker
|
||||
* Build an Anonymous Message Board
|
||||
* Port Scanner
|
||||
* Packet Capturer
|
||||
* Secure Real Time Multiplayer Game
|
||||
|
||||
- Build a Stock Price Checker
|
||||
- Build an Anonymous Message Board
|
||||
- Port Scanner
|
||||
- Packet Capturer
|
||||
- Secure Real Time Multiplayer Game
|
||||
|
||||
When you are done, you will have plenty of Information Security projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to Information Security with HelmetJS Challenges
|
||||
block: Information Security with HelmetJS
|
||||
superBlock: Information Security
|
||||
---
|
||||
|
||||
## Introduction to Information Security with HelmetJS Challenges
|
||||
|
||||
HelmetJS is a type of middleware for Express-based applications that automatically sets HTTP headers to prevent sensitive information from unintentionally being passed between the server and client. While HelmetJS does not account for all situations, it does include support for common ones like Content Security Policy, XSS Filtering, and HTTP Strict Transport Security, among others. HelmetJS can be installed on an Express project from npm, after which each layer of protection can be configured to best fit the project.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Python for Penetration Testing Lectures
|
||||
block: Python for Penetration Testing
|
||||
superBlock: Information Security
|
||||
---
|
||||
|
||||
## Introduction to the Python for Penetration Testing Challenges
|
||||
|
||||
<dfn>Python for Penetration Testing</dfn> Placeholder Introduction.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to Basic Algorithm Scripting
|
||||
block: Basic Algorithm Scripting
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to Basic Algorithm Scripting
|
||||
|
||||
A computer algorithm is a sequence of steps that is followed to achieve a particular outcome. To write an algorithm, you must first understand a problem, and then solve it with coding.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Basic Data Structure Challenges
|
||||
block: Basic Data Structures
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the Basic Data Structure Challenges
|
||||
|
||||
Data can be stored and accessed in many different ways, both in JavaScript and other languages. This section will teach you how to manipulate arrays, as well as access and copy the information within them. It will also teach you how to manipulate and access the data within JavaScript objects, using both dot and bracket notation. When you're done with this section, you should understand the basic properties and differences between arrays and objects, as well as how to choose which to use for a given purpose.
|
||||
Data can be stored and accessed in many different ways, both in JavaScript and other languages. This section will teach you how to manipulate arrays, as well as access and copy the information within them. It will also teach you how to manipulate and access the data within JavaScript objects, using both dot and bracket notation. When you're done with this section, you should understand the basic properties and differences between arrays and objects, as well as how to choose which to use for a given purpose.
|
||||
|
@ -4,6 +4,7 @@ block: Basic JavaScript RPG Game
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
isBeta: true
|
||||
---
|
||||
|
||||
## Introduction to the Basic JavaScript RPG Game
|
||||
|
||||
This is a test for the new project-based curriculum.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to JavaScript
|
||||
block: Basic JavaScript
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to JavaScript
|
||||
|
||||
JavaScript is a high-level programming language that all modern web browsers support. It is also one of the core technologies of the web, along with HTML and CSS that you may have learned previously. This section will cover basic JavaScript programming concepts, which range from variables and arithmetic to objects and loops.
|
||||
|
@ -3,10 +3,12 @@ title: Introduction to the Debugging Challenges
|
||||
block: Debugging
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the Debugging Challenges
|
||||
|
||||
Debugging is a valuable and (unfortunately) necessary tool for programmers. It follows the testing phase of checking if your code works as intended, and discovering it does not. Debugging is the process of finding exactly what isn't working and fixing it.
|
||||
After spending time creating a brilliant block of code, it is tough realizing it may have errors. These issues generally come in three forms:
|
||||
After spending time creating a brilliant block of code, it is tough realizing it may have errors. These issues generally come in three forms:
|
||||
|
||||
1. syntax errors that prevent a program from running
|
||||
2. runtime errors when code fails to execute or has unexpected behavior
|
||||
3. semantic (or logical) errors when code doesn't do what it's meant to.
|
||||
@ -15,7 +17,7 @@ Modern code editors (and experience) can help identify syntax errors. Semantic a
|
||||
Example of a syntax error - often detected by the code editor:
|
||||
|
||||
```js
|
||||
funtcion willNotWork(
|
||||
funtcion willNotWork(
|
||||
console.log("Yuck");
|
||||
}
|
||||
// "function" keyword is misspelled and there's a missing parenthesis
|
||||
@ -25,8 +27,8 @@ Here's an example of a runtime error - often detected while the program executes
|
||||
|
||||
```js
|
||||
function loopy() {
|
||||
while(true) {
|
||||
console.log("Hello, world!");
|
||||
while (true) {
|
||||
console.log('Hello, world!');
|
||||
}
|
||||
}
|
||||
// Calling loopy starts an infinite loop, which may crash your browser
|
||||
@ -43,4 +45,3 @@ let myRectArea = calcAreaOfRect(2, 3);
|
||||
```
|
||||
|
||||
Debugging is frustrating, but it helps to develop (and follow) a step-by-step approach to review your code. This means checking the intermediate values and types of variables to see if they are what they should be. You can start with a simple process of elimination.<br><br>For example, if function A works and returns what it's supposed to, then function B may have the issue. Or start checking values in a block of code from the middle to try to cut the search space in half. A problem in one spot indicates a bug in the first half of the code. If not, it's likely in the second.<br><br>This section will cover a couple helpful tools to find bugs, and some of the common forms they take. Fortunately, debugging is a learnable skill that just requires a little patience and practice to master.
|
||||
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the ES6 Challenges
|
||||
block: ES6
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the ES6 Challenges
|
||||
|
||||
ECMAScript is a standardized version of JavaScript with the goal of unifying the language's specifications and features. As all major browsers and JavaScript-runtimes follow this specification, the term _ECMAScript_ is interchangeable with the term _JavaScript_.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Functional Programming Challenges
|
||||
block: Functional Programming
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the Functional Programming Challenges
|
||||
|
||||
Functional programming is an approach to software development based around the evaluation of functions. Like mathematics, functions in programming map input to output to produce a result. You can combine basic functions in many ways to build more and more complex programs.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Intermediate Algorithm Scripting Challenges
|
||||
block: Intermediate Algorithm Scripting
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the Intermediate Algorithm Scripting Challenges
|
||||
|
||||
The following challenges are part of FCC's Intermediate Algorithm Scripting Challenges. These should prepare you to complete the final challenges for the JavaScript Algorithms And Data Structures Certification.
|
||||
|
@ -4,6 +4,7 @@ block: Intermediate JavaScript Calorie Counter
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
isBeta: true
|
||||
---
|
||||
|
||||
## Introduction to the Intermediate JavaScript Calorie Counter
|
||||
|
||||
This is a stub for the new project-based curriculum.
|
||||
This is a stub for the new project-based curriculum.
|
||||
|
@ -3,16 +3,18 @@ title: Introduction to the JavaScript Algorithms and Data Structures Projects
|
||||
block: JavaScript Algorithms and Data Structures Projects
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the JavaScript Algorithms and Data Structures Projects
|
||||
|
||||
Time to put your new JavaScript skills to work! These challenges will be similar to the algorithm scripting challenges but more difficult. This will allow you to prove how much you have learned.
|
||||
|
||||
In this section you will create the following small JavaScript programs:
|
||||
* Palindrome Checker
|
||||
* Roman Numeral Converter
|
||||
* Caesars Cipher
|
||||
* Telephone Number Validator
|
||||
* Cash Register
|
||||
|
||||
- Palindrome Checker
|
||||
- Roman Numeral Converter
|
||||
- Caesars Cipher
|
||||
- Telephone Number Validator
|
||||
- Cash Register
|
||||
|
||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||
|
||||
|
@ -3,7 +3,7 @@ title: Introduction to the Object Oriented Programming Challenges
|
||||
block: Object Oriented Programming
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the Object Oriented Programming Challenges
|
||||
|
||||
At its core, software development solves a problem or achieves a result with computation. The software development process first defines a problem, then presents a solution. Object oriented programming is one of several major approaches to the software development process.<br><br>As its name implies, object oriented programming organizes code into object definitions. These are sometimes called classes, and they group together data with related behavior. The data is an object's attributes, and the behavior (or functions) are methods.<br><br>The object structure makes it flexible within a program. Objects can transfer information by calling and passing data to another object's methods. Also, new classes can receive, or inherit, all the features from a base or parent class. This helps to reduce repeated code.<br><br>Your choice of programming approach depends on a few factors. These include the type of problem, as well as how you want to structure your data and algorithms. This section covers object oriented programming principles in JavaScript.
|
||||
|
||||
|
@ -3,7 +3,7 @@ title: Introduction to the Regular Expression Challenges
|
||||
block: Regular Expressions
|
||||
superBlock: JavaScript Algorithms and Data Structures
|
||||
---
|
||||
|
||||
## Introduction to the Regular Expression Challenges
|
||||
|
||||
Regular expressions are special strings that represent a search pattern. Also known as "regex" or "regexp", they help programmers match, search, and replace text. Regular expressions can appear cryptic because a few characters have special meaning. The goal is to combine the symbols and text into a pattern that matches what you want, but only what you want. This section will cover the characters, a few shortcuts, and the common uses for writing regular expressions.
|
||||
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the How Neural Networks Work Lectures
|
||||
block: How Neural Networks Work
|
||||
superBlock: Machine Learning with Python
|
||||
---
|
||||
|
||||
## Introduction to the How Neural Networks Work Challenges
|
||||
|
||||
Neural networks are at the core of what we are calling Artificial Intelligence today. They can seem impenetrable, and even mystical, if you are trying to understand them for the first time, but they don't have to.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Machine Learning with Python
|
||||
superBlock: machine-learning-with-python
|
||||
---
|
||||
|
||||
## Introduction to Machine Learning with Python
|
||||
|
||||
Learn the basics of Machine Learning with Python.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Machine Learning Projects
|
||||
block: Machine Learning with Python Projects
|
||||
superBlock: Machine Learning with Python
|
||||
---
|
||||
|
||||
## Introduction to the Machine Learning Projects
|
||||
|
||||
Machine learning has many practical applications. By completing these projects, you will demonstrate that you have a good foundational knowledge of machine learning.
|
||||
@ -10,10 +11,11 @@ Machine learning has many practical applications. By completing these projects,
|
||||
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out the videos in this [machine learning playlist on the freeCodeCamp YouTube channel](https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s). You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
||||
|
||||
In this section you will develop the following projects:
|
||||
* Rock Paper Scissors
|
||||
* Cat and Dog Image Classifier
|
||||
* Book Recommendation Engine using KNN
|
||||
* Linear Regression Health Costs Calculator
|
||||
* Neural Network SMS Text Classifier
|
||||
|
||||
- Rock Paper Scissors
|
||||
- Cat and Dog Image Classifier
|
||||
- Book Recommendation Engine using KNN
|
||||
- Linear Regression Health Costs Calculator
|
||||
- Neural Network SMS Text Classifier
|
||||
|
||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||
|
@ -3,8 +3,9 @@ title: Introduction to the TensorFlow Lectures
|
||||
block: TensorFlow
|
||||
superBlock: Machine Learning with Python
|
||||
---
|
||||
|
||||
## Introduction to the TensorFlow Challenges
|
||||
|
||||
TensorFlow is an open source framework developed by the Google Brain team aimed to make the powers of machine learning and neural networking easier to use.
|
||||
|
||||
The following lectures were created by Tim Ruscica, otherwise known as “Tech With Tim” from his educational programming YouTube channel. They will help you to understand TensorFlow and some of its capabilities.
|
||||
The following lectures were created by Tim Ruscica, otherwise known as “Tech With Tim” from his educational programming YouTube channel. They will help you to understand TensorFlow and some of its capabilities.
|
||||
|
@ -3,10 +3,11 @@ title: Introduction to the Advanced Node and Express Challenges
|
||||
block: Advanced Node and Express
|
||||
superBlock: Quality Assurance
|
||||
---
|
||||
|
||||
## Introduction to Advanced Node and Express Challenges
|
||||
|
||||
*Authentication* is the process or action of verifying the identity of a user or process. Up to this point you have not been able to create an app utilizing this key concept.
|
||||
_Authentication_ is the process or action of verifying the identity of a user or process. Up to this point you have not been able to create an app utilizing this key concept.
|
||||
|
||||
The most common and easiest way to use authentication middleware for Node.js is [Passport](http://passportjs.org/). It is easy to learn, light-weight, and extremely flexible allowing for many *strategies*, which we will talk about in later challenges. In addition to authentication we will also look at template engines which allow for use of *Pug* and web sockets which allow for real time communication between all your clients and your server. Working on these challenges will involve you writing your code on Replit on our starter project. After completing each challenge you can copy your public Replit URL (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing.
|
||||
The most common and easiest way to use authentication middleware for Node.js is [Passport](http://passportjs.org/). It is easy to learn, light-weight, and extremely flexible allowing for many _strategies_, which we will talk about in later challenges. In addition to authentication we will also look at template engines which allow for use of _Pug_ and web sockets which allow for real time communication between all your clients and your server. Working on these challenges will involve you writing your code on Replit on our starter project. After completing each challenge you can copy your public Replit URL (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing.
|
||||
|
||||
Start this project on Replit using [this link](https://replit.com/github/freeCodeCamp/boilerplate-advancednode) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-advancednode/) on GitHub! If you use Replit, remember to save the link to your project somewhere safe.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Quality Assurance
|
||||
superBlock: quality-assurance
|
||||
---
|
||||
|
||||
## Introduction to Quality Assurance
|
||||
|
||||
This is a stub introduction for Quality Assurance
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Quality Assurance with Chai Challenges
|
||||
block: Quality Assurance and Testing with Chai
|
||||
superBlock: Quality Assurance
|
||||
---
|
||||
|
||||
## Introduction to Quality Assurance with Chai Challenges
|
||||
|
||||
As your programs become more complex, you need to test them often to make sure any new code you add doesn't break the program's original functionality. Chai is a JavaScript testing library that helps you check that your program still behaves the way you expect it to after you make changes. Using Chai, you can write tests that describe your program's requirements and see if your program meets them.
|
||||
|
@ -3,15 +3,17 @@ title: Introduction to the Quality Assurance Projects
|
||||
block: Quality Assurance Projects
|
||||
superBlock: Quality Assurance
|
||||
---
|
||||
|
||||
## Introduction to the Quality Assurance Projects
|
||||
|
||||
Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Quality Assurance sections.
|
||||
|
||||
In this section you get the chance to:
|
||||
* Build a Metric-Imperial Converter
|
||||
* Build an Issue Tracker
|
||||
* Build a Personal Library
|
||||
* Sudoku Solver
|
||||
* American British Translator
|
||||
|
||||
- Build a Metric-Imperial Converter
|
||||
- Build an Issue Tracker
|
||||
- Build a Personal Library
|
||||
- Sudoku Solver
|
||||
- American British Translator
|
||||
|
||||
When you are done, you will have plenty of Quality Assurance projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
||||
|
@ -4,6 +4,7 @@ block: accessibility-quiz
|
||||
superBlock: Responsive Web Design
|
||||
isBeta: true
|
||||
---
|
||||
|
||||
## Introduction to the Accessibility Quiz
|
||||
|
||||
This is a test for the new project-based curriculum.
|
||||
This is a test for the new project-based curriculum.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the Applied Accessibility Challenges
|
||||
block: Applied Accessibility
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to the Applied Accessibility Challenges
|
||||
|
||||
"Accessibility" generally means having web content and a user interface that can be understood, navigated, and interacted with by a broad audience. This includes people with visual, auditory, mobility, or cognitive disabilities.
|
||||
|
@ -3,7 +3,7 @@ title: Introduction to the Applied Visual Design Challenges
|
||||
block: Applied Visual Design
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to the Applied Visual Design Challenges
|
||||
|
||||
Visual Design in web development is a broad topic. It combines typography, color theory, graphics, animation, and page layout to help deliver a site's message. The definition of good design is a well-discussed subject, with many books on the theme.<br><br>At a basic level, most web content provides a user with information. The visual design of the page can influence its presentation and a user's experience. In web development, HTML gives structure and semantics to a page's content, and CSS controls the layout and appearance of it.<br><br>This section covers some of the basic tools developers use to create their own visual designs.
|
||||
|
||||
|
@ -4,6 +4,7 @@ block: Basic CSS Cafe Menu
|
||||
superBlock: Responsive Web Design
|
||||
isBeta: true
|
||||
---
|
||||
|
||||
## Introduction to the Basic CSS Cafe Menu
|
||||
|
||||
This is a test for the new project-based curriculum.
|
||||
This is a test for the new project-based curriculum.
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to Basic CSS
|
||||
block: Basic CSS
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to Basic CSS
|
||||
|
||||
Cascading Style Sheets (CSS) tell the browser how to display the text and other content that you write in HTML.
|
||||
@ -18,7 +19,7 @@ CSS has been adopted by all major browsers and allows you to control:
|
||||
- sizing
|
||||
- decorations
|
||||
- transitions
|
||||
|
||||
|
||||
There are three main ways to apply CSS styling. You can apply inline styles directly to HTML elements with the `style` attribute. Alternatively, you can place CSS rules within `style` tags in an HTML document. Finally, you can write CSS rules in an external style sheet, then reference that file in the HTML document. Even though the first two options have their use cases, most developers prefer external style sheets because they keep the styles separate from the HTML elements. This improves the readability and reusability of your code.
|
||||
|
||||
The idea behind CSS is that you can use a selector to target an HTML element in the DOM (Document Object Model) and then apply a variety of attributes to that element to change the way it is displayed on the page.
|
||||
|
@ -3,15 +3,20 @@ title: Introduction to Basic HTML and HTML5
|
||||
block: Basic HTML and HTML5
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to Basic HTML & HTML5
|
||||
|
||||
HTML, or HyperText Markup Language, is a markup language used to describe the structure of a web page. It uses a special syntax or notation to organize and give information about the page to the browser. Elements usually have opening and closing tags that surround and give meaning to content. For example, there are different tag options to place around text to show whether it is a heading, a paragraph, or a list.
|
||||
|
||||
For example:
|
||||
|
||||
```html
|
||||
<h1>Top level heading: Maybe a page title</h1>
|
||||
|
||||
<p>A paragraph of text. Some information we would like to communicate to the viewer. This can be as long or short as we would like.</p>
|
||||
<p>
|
||||
A paragraph of text. Some information we would like to communicate to the
|
||||
viewer. This can be as long or short as we would like.
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>Number one on the list</li>
|
||||
@ -33,8 +38,9 @@ Becomes:
|
||||
</ol>
|
||||
|
||||
---
|
||||
|
||||
The HyperText part of HTML comes from the early days of the web and its original use case. Pages usually contained static documents that contained references to other documents. These references contained hypertext links used by the browser to navigate to the reference document so the user could read the reference document without having to manually search for it.
|
||||
|
||||
As web pages and web applications grow more complex, the W3 Consortium updates the HTML specification to ensure that a webpage can be shown reliably on any browser. The latest version of HTML is HTML5.
|
||||
|
||||
This section introduces how to use HTML elements to give structure and meaning to your web content.
|
||||
This section introduces how to use HTML elements to give structure and meaning to your web content.
|
||||
|
@ -4,6 +4,7 @@ block: Basic HTML Cat Photo App
|
||||
superBlock: Responsive Web Design
|
||||
isBeta: true
|
||||
---
|
||||
|
||||
## Introduction to the Basic HTML Cat Photo App
|
||||
|
||||
This is a test for the new project-based curriculum.
|
||||
This is a test for the new project-based curriculum.
|
||||
|
@ -3,7 +3,7 @@ title: Introduction to the CSS Flexbox Challenges
|
||||
block: CSS Flexbox
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to the CSS Flexbox Challenges
|
||||
|
||||
A website's User Interface ("UI") has two components. First, there are the visual elements, such as colors, fonts, and images. Second, there is the placement or positioning of those elements. In Responsive Web Design, a UI layout must accommodate many different browsers and devices accessing the content.<br><br>CSS3 introduced Flexible Boxes, or flexbox, to create page layouts for a dynamic UI. It is a layout mode that arranges elements in a predictable way for different screen sizes and browsers. While somewhat new, all popular modern browsers support flexbox. This section covers how to use flexbox and the different layout options it offers.
|
||||
|
||||
|
@ -3,7 +3,7 @@ title: Introduction to the CSS Grid Challenges
|
||||
block: CSS Grid
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to the CSS Grid Challenges
|
||||
|
||||
<dfn>CSS Grid</dfn> helps you easily build complex web designs. It works by turning an HTML element into a grid container with rows and columns for you to place children elements where you want within the grid.
|
||||
|
||||
|
@ -3,6 +3,7 @@ title: Introduction to the CSS Variables Skyline
|
||||
block: CSS Variables Skyline
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to the CSS Variables Skyline
|
||||
|
||||
<dfn>CSS Variables Skyline</dfn> Placeholder Introduction.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Responsive Web Design
|
||||
superBlock: responsive-web-design
|
||||
---
|
||||
|
||||
## Introduction to Responsive Web Design
|
||||
|
||||
Welcome to Responsive Web Design!
|
||||
@ -10,7 +11,7 @@ Let's first take a look at what is in the scope of Responsive Web Design (and wh
|
||||
|
||||
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.
|
||||
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`.
|
||||
|
||||
|
@ -3,10 +3,10 @@ title: Introduction to the Responsive Web Design Challenges
|
||||
block: Responsive Web Design Principles
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to the Responsive Web Design Challenges
|
||||
|
||||
Today, there are many types of devices that can access the web. They range from large desktop computers to small mobile phones. These devices have different screen sizes, resolutions, and processing power.
|
||||
Responsive Web Design is an approach to designing web content that responds to the constraints of different devices. The page structure and CSS rules should be flexible to accommodate these differences.
|
||||
In general, design the page's CSS to your target audience. If you expect most of your traffic to be from mobile users, take a 'mobile-first' approach. Then add conditional rules for larger screen sizes. If your visitors are desktop users, then design for larger screens with conditional rules for smaller sizes.
|
||||
CSS gives you the tools to write different style rules, then apply them depending on the device displaying the page. This section will cover the basic ways to use CSS for Responsive Web Design.
|
||||
|
||||
|
@ -3,16 +3,18 @@ title: Introduction to the Responsive Web Design Projects
|
||||
block: Responsive Web Design Projects
|
||||
superBlock: Responsive Web Design
|
||||
---
|
||||
|
||||
## Introduction to the Responsive Web Design Projects
|
||||
|
||||
Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far HTML, CSS, Visual Design, Accessibility, etc.
|
||||
Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far HTML, CSS, Visual Design, Accessibility, etc.
|
||||
|
||||
In this section you get the chance to:
|
||||
* Build a Tribute Page
|
||||
* Build a Survey Form
|
||||
* Build a Product Landing Page
|
||||
* Build a Technical Documentation Page
|
||||
* Build a Personal Portfolio Webpage
|
||||
|
||||
- Build a Tribute Page
|
||||
- Build a Survey Form
|
||||
- Build a Product Landing Page
|
||||
- Build a Technical Documentation Page
|
||||
- Build a Personal Portfolio Webpage
|
||||
|
||||
By the end of this, you would have 5 responsive websites under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Scientific Computing with Python
|
||||
superBlock: scientific-computing-with-python
|
||||
---
|
||||
|
||||
## Introduction to Scientific Computing with Python
|
||||
|
||||
Learn the basics of Python.
|
||||
|
@ -3,10 +3,9 @@ title: Introduction to Python for Everybody
|
||||
block: Python for Everybody
|
||||
superBlock: Scientific Computing with Python
|
||||
---
|
||||
|
||||
## Introduction to Python for Everybody
|
||||
|
||||
Python for Everybody is a video course that teaches the basics of programming computers using Python 3.
|
||||
|
||||
The course was created by Dr. Charles Severance (a.k.a. Dr. Chuck). He is a Clinical Professor at the University of Michigan School of Information, where he teaches various technology-oriented courses including programming, database design, and Web development.
|
||||
|
||||
|
||||
|
@ -3,19 +3,22 @@ title: Introduction to the Scientific Computing with Python Projects
|
||||
block: Scientific Computing with Python Projects
|
||||
superBlock: Scientific Computing with Python
|
||||
---
|
||||
|
||||
## Introduction to the Scientific Computing with Python Projects
|
||||
|
||||
Time to put your Python skills to the test! By completing these projects, you will demonstrate that you have a good foundational knowledge of Python.
|
||||
|
||||
We are working to finish up the interactive Python instructional content. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete these projects:
|
||||
* [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours)
|
||||
* [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/) (4 hours)
|
||||
|
||||
- [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours)
|
||||
- [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/) (4 hours)
|
||||
|
||||
In this section you will develop the following projects:
|
||||
* Arithmetic Formatter
|
||||
* Time Calculator
|
||||
* Budget App
|
||||
* Polygon Area Calculator
|
||||
* Probability Calculator
|
||||
|
||||
- Arithmetic Formatter
|
||||
- Time Calculator
|
||||
- Budget App
|
||||
- Polygon Area Calculator
|
||||
- Probability Calculator
|
||||
|
||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"include": [
|
||||
"./i18n/**/*",
|
||||
"./plugins/**/*",
|
||||
"./src/**/*",
|
||||
"./utils/**/*"
|
||||
],
|
||||
"include": ["./i18n/**/*", "./plugins/**/*", "./src/**/*", "./utils/**/*"],
|
||||
"compilerOptions": {
|
||||
"target": "es2020",
|
||||
"module": "es2020",
|
||||
@ -18,10 +13,6 @@
|
||||
"noEmit": true,
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
"jest",
|
||||
"@testing-library/jest-dom"
|
||||
]
|
||||
"types": ["node", "jest", "@testing-library/jest-dom"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,18 @@
|
||||
"project_id_env": "CROWDIN_PROJECT_ID"
|
||||
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
|
||||
"base_path_env": "CROWDIN_BASE_PATH"
|
||||
"base_url_env": "CROWDIN_BASE_URL"
|
||||
'project_id_env': 'CROWDIN_PROJECT_ID'
|
||||
'api_token_env': 'CROWDIN_PERSONAL_TOKEN'
|
||||
'base_path_env': 'CROWDIN_BASE_PATH'
|
||||
'base_url_env': 'CROWDIN_BASE_URL'
|
||||
|
||||
"preserve_hierarchy": true
|
||||
'preserve_hierarchy': true
|
||||
|
||||
files: [
|
||||
{
|
||||
"source" : "/client/i18n/locales/english/intro.json",
|
||||
"translation" : "/client/i18n/locales/%language%/%original_file_name%"
|
||||
},
|
||||
{
|
||||
"source" : "/client/i18n/locales/english/translations.json",
|
||||
"translation" : "/client/i18n/locales/%language%/%original_file_name%"
|
||||
}
|
||||
]
|
||||
files:
|
||||
[
|
||||
{
|
||||
'source': '/client/i18n/locales/english/intro.json',
|
||||
'translation': '/client/i18n/locales/%language%/%original_file_name%'
|
||||
},
|
||||
{
|
||||
'source': '/client/i18n/locales/english/translations.json',
|
||||
'translation': '/client/i18n/locales/%language%/%original_file_name%'
|
||||
}
|
||||
]
|
||||
|
@ -1,19 +1,21 @@
|
||||
"project_id_env": "CROWDIN_PROJECT_ID"
|
||||
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
|
||||
"base_path_env": "CROWDIN_BASE_PATH"
|
||||
"base_url_env": "CROWDIN_BASE_URL"
|
||||
'project_id_env': 'CROWDIN_PROJECT_ID'
|
||||
'api_token_env': 'CROWDIN_PERSONAL_TOKEN'
|
||||
'base_path_env': 'CROWDIN_BASE_PATH'
|
||||
'base_url_env': 'CROWDIN_BASE_URL'
|
||||
|
||||
"preserve_hierarchy": true
|
||||
'preserve_hierarchy': true
|
||||
|
||||
files: [
|
||||
{
|
||||
"source" : "/docs/*.md",
|
||||
"translation" : "/docs/i18n/%language%/%original_file_name%",
|
||||
"ignore" : [
|
||||
"/docs/_coverpage.md",
|
||||
"/docs/_navbar.md",
|
||||
"/docs/_translations.md",
|
||||
"/docs/README.md",
|
||||
files:
|
||||
[
|
||||
{
|
||||
'source': '/docs/*.md',
|
||||
'translation': '/docs/i18n/%language%/%original_file_name%',
|
||||
'ignore':
|
||||
[
|
||||
'/docs/_coverpage.md',
|
||||
'/docs/_navbar.md',
|
||||
'/docs/_translations.md',
|
||||
'/docs/README.md'
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -33,7 +33,7 @@ exhaustive, and do not form part of our licenses.
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
@ -50,7 +50,7 @@ exhaustive, and do not form part of our licenses.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More_considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
@ -67,82 +67,80 @@ such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
@ -202,7 +200,7 @@ Section 2 -- Scope.
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
@ -222,13 +220,12 @@ Section 2 -- Scope.
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
@ -270,7 +267,7 @@ following conditions.
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
@ -289,68 +286,66 @@ following conditions.
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
|
||||
including for purposes of Section 3(b); and
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
@ -362,48 +357,45 @@ Section 6 -- Term and Termination.
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
=======================================================================
|
||||
|
||||
|
@ -5,4 +5,4 @@ services:
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '${CLIENT_PORT:-8000}:${CLIENT_PORT:-8000}'
|
||||
command: ["-l", "${CLIENT_PORT:-8000}"]
|
||||
command: ['-l', '${CLIENT_PORT:-8000}']
|
||||
|
@ -81,7 +81,7 @@ If you have queries about the stack, architecture of the codebase, translations,
|
||||
| Nicholas Carrigan | [@nhcarrigan](https://forum.freecodecamp.org/u/nhcarrigan) |
|
||||
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
|
||||
| Rafael D Hernandez | [@RafaelHernandez](https://forum.freecodecamp.org/u/rafaelhernandez) |
|
||||
| Shaun Hamilton | [@sky020](https://forum.freecodecamp.org/u/sky020) |
|
||||
| Shaun Hamilton | [@sky020](https://forum.freecodecamp.org/u/sky020) |
|
||||
| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
|
||||
|
||||
**You can email our developer staff at: `dev[at]freecodecamp.org`**
|
||||
|
@ -1,3 +1,3 @@
|
||||
## Our contributing docs are available here: <https://contribute.freecodecamp.org>.
|
||||
|
||||
Looking to edit these docs? Read [this document](how-to-work-on-the-docs-theme.md) first.
|
||||
Looking to edit these docs? Read [this document](how-to-work-on-the-docs-theme.md) first.
|
||||
|
@ -15,6 +15,7 @@ There are a few terms we use when discussing our curriculum content.
|
||||
|
||||
Using those terms, here is how the file structure would be defined:
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```md
|
||||
|
||||
curriculum/
|
||||
@ -64,7 +65,7 @@ When renaming a certification, you will likely want to rename the associated sup
|
||||
Also, you will likely want to rename the certificate and the `{superBlock}-projects` block when you rename a superBlock since they all shares a name. To rename only a superBlock you need to:
|
||||
|
||||
1. Rename the superBlock folder in the `curriculum/challenges/english` directory.
|
||||
1. Rename the superBlock folder in *all* other `curriculum/challenges/{language}` directories.
|
||||
1. Rename the superBlock folder in _all_ other `curriculum/challenges/{language}` directories.
|
||||
1. For each block within that superBlock, update the `superBlock` value in the `meta.json` file to its dashedName. You don't need to rename any folders here. Do that when renaming a block.
|
||||
1. Rename the superblock folder in `client/src/pages/learn`.
|
||||
1. Update the `index.md` file in the above folder, changing the `title` and `superBlock` values to the new name.
|
||||
@ -81,7 +82,7 @@ Also, you will likely want to rename the certificate and the `{superBlock}-proje
|
||||
When renaming a curriculum block, you need to:
|
||||
|
||||
1. Change the name of the block folder in the `curriculum/challenges/english/{superBlock}` directory.
|
||||
1. Change the name of the same block folder in *all* of the other language directories to match. These must all be the same as the English structure or the build will error out.
|
||||
1. Change the name of the same block folder in _all_ of the other language directories to match. These must all be the same as the English structure or the build will error out.
|
||||
1. Change the name of the block folder in the `_meta` directory.
|
||||
1. Update the `name` and `dashedName` property for that block's `meta.json` file.
|
||||
1. Update the `client/utils/help-category-map.json` to use the new block name as the key.
|
||||
@ -96,7 +97,7 @@ When renaming a single challenge file, you need to:
|
||||
|
||||
1. Change the name of the challenge file in the `curriculum/challenges/english` directory.
|
||||
1. Change the name of the `title` and `dashedName` within that file.
|
||||
1. Change the name of the file, and the `dashedName` in those files for *all* of the other language directories to match.
|
||||
1. Change the name of the file, and the `dashedName` in those files for _all_ of the other language directories to match.
|
||||
1. Update the name of the challenge in the relevant `meta.json` file. The challenge names here are not used in the build, but provide a user-friendly way to identify the challenge order.
|
||||
1. If the challenge is a certificate project, update the YAML file in `curriculum/english/12-certificates/<superBlock>` to the new name.
|
||||
1. If the challenge is a certificate project, update the `title` and `link` in `client/src/resources/cert-and-project-map.ts`
|
||||
|
@ -30,6 +30,7 @@ docker stop mailhog
|
||||
to stop it.
|
||||
|
||||
When the installation completes, you can start [using MailHog](#using-mailhog).
|
||||
|
||||
</details>
|
||||
|
||||
<details><summary>Installing MailHog on macOS</summary>
|
||||
@ -44,6 +45,7 @@ brew services start mailhog
|
||||
The above commands will start a mailhog service in the background.
|
||||
|
||||
When the installation completes, you can start [using MailHog](#using-mailhog).
|
||||
|
||||
</details>
|
||||
|
||||
<details><summary>Installing MailHog on Windows</summary>
|
||||
@ -55,6 +57,7 @@ When the download completes, click to open the file. A Windows firewall notifica
|
||||
Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file.
|
||||
|
||||
Start [using MailHog](#using-mailhog).
|
||||
|
||||
</details>
|
||||
|
||||
<details><summary>Installing MailHog on Linux</summary>
|
||||
@ -96,6 +99,7 @@ mailhog
|
||||
```
|
||||
|
||||
Start [using MailHog](#using-mailhog).
|
||||
|
||||
</details>
|
||||
|
||||
## Using MailHog
|
||||
|
@ -8,7 +8,6 @@ The video challenge pages are created by members of the freeCodeCamp team. YouTu
|
||||
|
||||
You can help by creating multiple-choice questions related to video sections and adding the questions to the markdown files for the video challenges.
|
||||
|
||||
|
||||
## Challenge Template
|
||||
|
||||
Below is a template of what the challenge markdown files look like.
|
||||
@ -27,9 +26,7 @@ forumTopicId: 12345
|
||||
Challenge description text, in markdown
|
||||
|
||||
```html
|
||||
<div>
|
||||
example code
|
||||
</div>
|
||||
<div>example code</div>
|
||||
```
|
||||
|
||||
# --question--
|
||||
@ -55,7 +52,6 @@ More answers
|
||||
## --video-solution--
|
||||
|
||||
The number for the correct answer goes here.
|
||||
|
||||
````
|
||||
|
||||
## Creating questions for video challenges
|
||||
@ -76,6 +72,7 @@ Pick a challenge markdown file from the options above.
|
||||
First, find the videoId.
|
||||
|
||||
For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be laid out in a table format.
|
||||
|
||||
```
|
||||
---
|
||||
id: 5e9a093a74c4063ca6f7c14d
|
||||
@ -86,7 +83,7 @@ videoId: nVAaxZ34khk
|
||||
```
|
||||
|
||||
Next, access the YouTube video with that `videoId`. The URL for the video will be:
|
||||
https://www.youtube.com/watch?v=[videoId] (replace `videoId` in the URL with the video's ID - without square brackets)
|
||||
https://www.youtube.com/watch?v=[videoId] (replace `videoId` in the URL with the video's ID - without square brackets)
|
||||
|
||||
In the example above, the URL is https://www.youtube.com/watch?v=nVAaxZ34khk
|
||||
|
||||
@ -122,12 +119,14 @@ More answers
|
||||
1
|
||||
```
|
||||
|
||||
Add/Update the question text under the part that shows:
|
||||
Add/Update the question text under the part that shows:
|
||||
|
||||
```
|
||||
# --question--
|
||||
|
||||
## --text--
|
||||
```
|
||||
|
||||
Add/Update answers (`Answer 1`, `Answer 2`, and so on) under `## --answers--`. Make sure to update the number under `## --video-solution--` with the correct answer number. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks.
|
||||
|
||||
### Question examples
|
||||
@ -136,14 +135,16 @@ Add/Update answers (`Answer 1`, `Answer 2`, and so on) under `## --answers--`. M
|
||||
# --question--
|
||||
|
||||
## --text--
|
||||
|
||||
What does this JavaScript code log to the console?
|
||||
|
||||
```js
|
||||
console.log('hello world');
|
||||
```
|
||||
|
||||
## --answers--
|
||||
|
||||
hello *world*
|
||||
hello _world_
|
||||
|
||||
---
|
||||
|
||||
@ -156,11 +157,11 @@ hello world
|
||||
---
|
||||
|
||||
## --video-solution--
|
||||
|
||||
3
|
||||
````
|
||||
|
||||
````md
|
||||
|
||||
# --question--
|
||||
|
||||
## --text--
|
||||
|
@ -19,12 +19,12 @@ When opening a Pull Request(PR), you can use the below to determine the type, sc
|
||||
|
||||
**Type:**
|
||||
|
||||
| Type | When to select |
|
||||
| :---- | :--------------------------------------------------------------------------- |
|
||||
| Type | When to select |
|
||||
| :---- | :------------------------------------------------------------------------------- |
|
||||
| fix | Changed or updated/improved functionality, tests, the verbiage of a lesson, etc. |
|
||||
| feat | Only if you are adding new functionality, tests, etc. |
|
||||
| chore | Changes that are not related to code, tests, or verbiage of a lesson. |
|
||||
| docs | Changes to `/docs` directory or the contributing guidelines, etc. |
|
||||
| feat | Only if you are adding new functionality, tests, etc. |
|
||||
| chore | Changes that are not related to code, tests, or verbiage of a lesson. |
|
||||
| docs | Changes to `/docs` directory or the contributing guidelines, etc. |
|
||||
|
||||
**Scope:**
|
||||
|
||||
@ -135,37 +135,37 @@ When you are working on features for our upcoming curriculum `next-*` branches,
|
||||
|
||||
a. Either delete your local branch after taking a backup (if you still have it locally):
|
||||
|
||||
```console
|
||||
git checkout <pr-branch-name>
|
||||
```console
|
||||
git checkout <pr-branch-name>
|
||||
|
||||
# example:
|
||||
# git checkout feat/add-numpy-video-question
|
||||
# example:
|
||||
# git checkout feat/add-numpy-video-question
|
||||
|
||||
git checkout -b <backup-branch-name>
|
||||
git checkout -b <backup-branch-name>
|
||||
|
||||
# example:
|
||||
# git checkout -b backup-feat/add-numpy-video-question
|
||||
# example:
|
||||
# git checkout -b backup-feat/add-numpy-video-question
|
||||
|
||||
git branch -D <pr-branch-name>
|
||||
```
|
||||
git branch -D <pr-branch-name>
|
||||
```
|
||||
|
||||
b. Or just a backup of your pr branch (if you do not have it locally):
|
||||
|
||||
```console
|
||||
git checkout -b <backup-branch-name> origin/<pr-branch-name>
|
||||
```console
|
||||
git checkout -b <backup-branch-name> origin/<pr-branch-name>
|
||||
|
||||
# example:
|
||||
# git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
|
||||
```
|
||||
# example:
|
||||
# git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
|
||||
```
|
||||
|
||||
4. Start off with a clean slate:
|
||||
3. Start off with a clean slate:
|
||||
|
||||
```console
|
||||
git checkout -b <pr-branch-name> next-python-projects
|
||||
git cherry-pick <commit-hash>
|
||||
```
|
||||
|
||||
5. Resolve any conflicts, and cleanup, install run tests
|
||||
4. Resolve any conflicts, and cleanup, install run tests
|
||||
|
||||
```console
|
||||
npm run clean
|
||||
@ -179,7 +179,7 @@ When you are working on features for our upcoming curriculum `next-*` branches,
|
||||
|
||||
```
|
||||
|
||||
6. If everything looks good push back to the PR
|
||||
5. If everything looks good push back to the PR
|
||||
|
||||
```console
|
||||
git push --force origin <pr-branch-name>
|
||||
|
@ -49,7 +49,7 @@ We highly recommend installing [Visual Studio Code](https://code.visualstudio.co
|
||||
|
||||
Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows.
|
||||
|
||||
If you use [IntelliJ Idea](https://www.jetbrains.com/idea/), you may need to update your Node interpreter and Npm package manager to what is installed on your WSL distro.
|
||||
If you use [IntelliJ Idea](https://www.jetbrains.com/idea/), you may need to update your Node interpreter and Npm package manager to what is installed on your WSL distro.
|
||||
|
||||
You can check these settings by going to Settings > Languages & Frameworks > Node.js and NPM.
|
||||
|
||||
|
@ -144,7 +144,7 @@ For the video challenges, you need to change a few things. First add the new loc
|
||||
...
|
||||
```
|
||||
|
||||
Then add an id for the new language to any video challenge in an audited block. For example, if `auditedCerts` in `all-langs.js` includes `scientific-computing-with-python` for `dothraki`, then you must add a `dothraki` entry in `videoLocaleIds`. The frontmatter should then look like this:
|
||||
Then add an id for the new language to any video challenge in an audited block. For example, if `auditedCerts` in `all-langs.js` includes `scientific-computing-with-python` for `dothraki`, then you must add a `dothraki` entry in `videoLocaleIds`. The frontmatter should then look like this:
|
||||
|
||||
```yml
|
||||
videoLocaleIds:
|
||||
|
@ -12,4 +12,4 @@ If you see messages like
|
||||
bash: change_volumes_owner.sh: No such file or directory
|
||||
```
|
||||
|
||||
when you `npm run docker:init` this is likely the culprit.
|
||||
when you `npm run docker:init` this is likely the culprit.
|
||||
|
@ -287,7 +287,7 @@ Challenges should have the minimum number of tests necessary to verify that a ca
|
||||
|
||||
Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point.
|
||||
|
||||
Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. In addition, the `__helpers` object exposes several functions that simplify the process of writing tests. The available functions are defined in _client/src/utils/curriculum-helpers.ts_.
|
||||
Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. In addition, the `__helpers` object exposes several functions that simplify the process of writing tests. The available functions are defined in _client/src/utils/curriculum-helpers.ts_.
|
||||
|
||||
## Formatting seed code
|
||||
|
||||
|
@ -84,6 +84,7 @@ One really neat trick is that you can also create custom one-off templates just
|
||||
```sh
|
||||
npm run zip
|
||||
```
|
||||
|
||||
## Other Reference and resources
|
||||
|
||||
### PostCSS Features Used
|
||||
|
@ -1,6 +1,7 @@
|
||||
This page describes how to contribute to the freeCodeCamp tutorials and projects that are completed using the CodeRoad VS Code extension.
|
||||
|
||||
## How the tutorials work
|
||||
|
||||
The freeCodeCamp tutorials that use CodeRoad each have their own repo under the freeCodeCamp GitHub organization. They all start with `learn-`. For example, `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`.
|
||||
|
||||
Each tutorial repo has a `main` branch and a "version" branch, e.g. `v1.0.0`.
|
||||
@ -20,11 +21,13 @@ In order to make changes to commits on a version branch, you would need to rebas
|
||||
## How to contribute
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Install the [CodeRoad CLI tools](https://www.npmjs.com/package/@coderoad/cli) with `npm install -g @coderoad/cli`.
|
||||
|
||||
There have been some issues with the latest version. If `coderoad --version` doesn't work after installing, downgrade to `0.7.0` with `npm install -g @coderoad/cli@0.7.0`.
|
||||
|
||||
### Working on `main`
|
||||
|
||||
This set of instructions is for PRs that only make minor changes on `main` to **existing lessons**. That mainly consists of typo, grammar, hint, and instructional changes or fixes in the `TUTORIAL.md` file.
|
||||
|
||||
For everything else, including adding or deleting lessons, follow the [working on a version branch instructions](#working-on-version-branch). You will not need to create a new version branch for this - you can create a PR following the instructions below.
|
||||
@ -47,12 +50,14 @@ Follow these instructions to make a PR, keeping in mind that instructions usuall
|
||||
- Make a PR
|
||||
|
||||
### Testing changes on `main`
|
||||
|
||||
If you want to test your changes to `main` after using the above instructions, follow these instructions:
|
||||
|
||||
- Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container
|
||||
- Start the tutorial using the `tutorial.json` file on the new branch
|
||||
|
||||
### Reviewing PR's to `main`
|
||||
|
||||
If reviewing a PR that only changes `main` with instructional or grammar issues as described above, the changes in `TUTORIAL.md` should match the changes in `tutorial.json`.
|
||||
|
||||
The `tutorial.json` file should not have changes to commit hashes, or step/level ids. Startup or level commands or file watchers likely should not be changed either. There are exceptions if there's an issue with a step, but they should be treated with more caution.
|
||||
@ -60,6 +65,7 @@ The `tutorial.json` file should not have changes to commit hashes, or step/level
|
||||
Also, keep in mind that instructions usually use the lessons around them for context, so make sure they make sense.
|
||||
|
||||
### Working on version branch
|
||||
|
||||
> [!WARNING]
|
||||
>
|
||||
> Reminder: Never make or push changes to a version branch that is on one of the freeCodeCamp repos. Always create a new one
|
||||
@ -86,10 +92,12 @@ Follow these instructions to create a new version:
|
||||
- Leave it here for reviewers
|
||||
|
||||
### Testing changes to a version branch
|
||||
|
||||
- Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container
|
||||
- Start the tutorial using the `tutorial.json` file on whatever fork the changes are on. Make sure to use the file on the `feat: version-X.X.Y` branch and not the `main` branch
|
||||
|
||||
### Pushing a new version
|
||||
|
||||
Before pushing a new version, view the new `feat/version-vX.X.Y` (will be merged to `main`) branch on the user's fork. Make sure there are additions to the `CHANGELOG.md` file that include the new changes, and the version in the two spots of `coderoad.yaml` matches the new version branch.
|
||||
|
||||
If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG` and `coderoad.yaml` files, have tested the changes using the instructions above, and want to push a new version of a tutorial:
|
||||
@ -114,13 +122,17 @@ If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG`
|
||||
- Finally, if any PRs for this version exists, close them
|
||||
|
||||
### How to revert to a previous version
|
||||
|
||||
- Create a new branch off the latest `main` with `git checkout -b revert/to-version-X.X.X`
|
||||
- Revert all commits on this branch up to and including the commit of the version after the one you want to revert to. For example, you may have commits that look like this:
|
||||
|
||||
```
|
||||
fix: typo
|
||||
release: version 1.0.1
|
||||
fix: typo
|
||||
release: version 1.0.0
|
||||
```
|
||||
|
||||
If you want to revert to v1.0.0, revert all the commits from `release: version 1.0.1` and after
|
||||
|
||||
- Create a PR. Give it a title of `revert: to version X.X.X`
|
||||
|
24
package-lock.json
generated
24
package-lock.json
generated
@ -12055,15 +12055,6 @@
|
||||
"integrity": "sha1-J/uRhTaQzOs65hAdnIrsxqZ6QCw=",
|
||||
"dev": true
|
||||
},
|
||||
"eslint-plugin-prettier": {
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz",
|
||||
"integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prettier-linter-helpers": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"eslint-plugin-react": {
|
||||
"version": "7.26.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz",
|
||||
@ -12645,12 +12636,6 @@
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||
"dev": true
|
||||
},
|
||||
"fast-diff": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
|
||||
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
|
||||
"dev": true
|
||||
},
|
||||
"fast-glob": {
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
||||
@ -20365,15 +20350,6 @@
|
||||
"integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==",
|
||||
"dev": true
|
||||
},
|
||||
"prettier-linter-helpers": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
|
||||
"integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-diff": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"pretty-bytes": {
|
||||
"version": "5.6.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
|
||||
|
15
package.json
15
package.json
@ -56,19 +56,18 @@
|
||||
"e2e:prd:run": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:run",
|
||||
"e2e:prd:watch": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:watch",
|
||||
"ensure-env": "cross-env DEBUG=fcc:* node ./tools/scripts/build/ensure-env.js",
|
||||
"format": "npm-run-all -p format:*",
|
||||
"format:css": "npm run prettier -- --write",
|
||||
"format:js": "npm run lint:js -- --fix",
|
||||
"format": "run-s format:eslint format:prettier",
|
||||
"format:eslint": "eslint . --fix",
|
||||
"format:prettier": "prettier --write .",
|
||||
"hooks:install": "node node_modules/husky/husky.js install",
|
||||
"hooks:uninstall": "node node_modules/husky/husky.js uninstall",
|
||||
"lint": "npm-run-all ensure-env -p lint:*",
|
||||
"lint:challenges": "cd ./curriculum && npm run lint",
|
||||
"lint:css": "npm run prettier -- --check",
|
||||
"lint:js": "eslint --max-warnings 0 .",
|
||||
"lint:ts": "tsc -p client && tsc -p tools/ui-components",
|
||||
"lint:translations": "cd ./client && npm run lint",
|
||||
"lint:prettier": "prettier --list-different .",
|
||||
"postinstall": "npm run bootstrap",
|
||||
"prettier": "prettier \"**/*.css\"",
|
||||
"seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser",
|
||||
"seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser certUser",
|
||||
"serve:client": "cd ./client && npm run serve",
|
||||
@ -89,11 +88,6 @@
|
||||
"test-ui-components": "jest tools/ui-components",
|
||||
"prepare": "husky install"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.css": "prettier --write",
|
||||
"*.(js|ts|tsx)": "eslint --max-warnings 0 --cache --fix",
|
||||
"./curriculum/challenges/**/*.md": "node ./tools/scripts/lint/index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "10.0.0",
|
||||
"invariant": "2.2.4"
|
||||
@ -121,7 +115,6 @@
|
||||
"eslint-plugin-jest-dom": "3.9.2",
|
||||
"eslint-plugin-jsx-a11y": "6.4.1",
|
||||
"eslint-plugin-prefer-object-spread": "1.2.1",
|
||||
"eslint-plugin-prettier": "3.4.1",
|
||||
"eslint-plugin-react": "7.26.1",
|
||||
"eslint-plugin-react-hooks": "2.5.1",
|
||||
"eslint-plugin-testing-library": "4.12.4",
|
||||
|
@ -14,7 +14,11 @@
|
||||
},
|
||||
{
|
||||
"groupName": "Monaco Editor",
|
||||
"matchPackageNames": ["monaco-editor", "monaco-editor-webpack-plugin", "react-monaco-editor"]
|
||||
"matchPackageNames": [
|
||||
"monaco-editor",
|
||||
"monaco-editor-webpack-plugin",
|
||||
"react-monaco-editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"matchPackageNames": ["normalize-url"],
|
||||
@ -22,9 +26,7 @@
|
||||
},
|
||||
{
|
||||
"groupName": "CodeSee",
|
||||
"matchPackagePrefixes": [
|
||||
"@codesee/"
|
||||
],
|
||||
"matchPackagePrefixes": ["@codesee/"],
|
||||
"automerge": true
|
||||
}
|
||||
],
|
||||
|
@ -28,7 +28,7 @@ Second hint with <code>code</code>
|
||||
// more test code
|
||||
```
|
||||
|
||||
Third *hint* with <code>code</code> and `inline code`
|
||||
Third _hint_ with <code>code</code> and `inline code`
|
||||
|
||||
```js
|
||||
// more test code
|
||||
@ -43,8 +43,7 @@ if(let x of xs) {
|
||||
|
||||
```html
|
||||
<html>
|
||||
<body>
|
||||
</body>
|
||||
<body></body>
|
||||
</html>
|
||||
```
|
||||
|
||||
@ -62,15 +61,13 @@ body {
|
||||
var x = 'y';
|
||||
```
|
||||
|
||||
|
||||
# --solutions--
|
||||
|
||||
![html-key]()
|
||||
|
||||
```html
|
||||
<html>
|
||||
<body>
|
||||
</body>
|
||||
<body></body>
|
||||
</html>
|
||||
```
|
||||
|
||||
@ -82,4 +79,5 @@ body {
|
||||
|
||||
```js
|
||||
var x = 'y';
|
||||
``
|
||||
``;
|
||||
```
|
||||
|
@ -2,4 +2,4 @@
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none"
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user