Giter Site home page Giter Site logo

curriculumexpansion's Introduction

curriculumexpansion's People

Contributors

01clarian avatar adamisntdead avatar ahmaxed avatar bbsmooth avatar beaucarnes avatar codingk8 avatar dario-dc avatar dingjy94 avatar ethan-arrowood avatar fhsinchy avatar glynl avatar hassaanp avatar hkuz avatar huyenltnguyen avatar jdwilkin4 avatar lionel-rowe avatar lmilliken avatar mesporas1 avatar mot01 avatar padunk avatar pikonha avatar quincylarson avatar rafaeldavish avatar raisedadead avatar scissorsneedfoodtoo avatar shimphillip avatar someder avatar thecodingaviator avatar vkweb avatar zairahira avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curriculumexpansion's Issues

Redux Challenges

@alayek is in charge of coordinating the creation of these challenges, but he needs your help.

Here's a potential list of challenges:

  • Actions
    • Must have a type
    • Action emitted by user interaction
    • Example of Action payload as a JS object
  • Reducers
    • Using Object.assign()
    • Switch statement to parse relevant action
    • (state, action) => state, must not modify state
    • Reducers can rollback state
  • Store
    • Source of truth for all application state
    • Combine various root level reducers with combineReducer()
    • Access state with getState()
    • Update state with dispatch(action)
    • Register listener via `subscribe(listener)
    • Unregister listener
  • One Way Data Flow
    • Dispatching action with store.dispatch(action)
    • Reducer provides the next state
    • Store combines all root level reducers
    • Store saves a snapshot of application state
  • Advanced section: Async [TODO]

Source: Redux Docs

Thanks @EliBei for helping with finalizing these.

Here are the challenges we have currently planned:

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is prepopulated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Automated Testing Challenges

We are seeking a camper to be in charge of coordinating the creation of these challenges.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.

Basic JavaScript Challenges

@alayek is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Here are the challenges we have currently planned (these can be further expanded):

  • Comment your JavaScript Code
  • Declare JavaScript Variables
  • Storing Values with the Assignment Operator
  • Initializing Variables with the Assignment Operator
  • Understanding Uninitialized Variables
  • Understanding Case Sensitivity in Variables
  • Add Two Numbers with JavaScript
  • Subtract One Number from Another with JavaScript
  • Multiply Two Numbers with JavaScript
  • Divide One Number by Another with JavaScript
  • Increment a Number with JavaScript
  • Decrement a Number with JavaScript
  • Create Decimal Numbers with JavaScript
  • Multiply Two Decimals with JavaScript
  • Divide one Decimal by Another with JavaScript
  • Finding a Remainder in JavaScript
  • Compound Assignment With Augmented Addition
  • Compound Assignment With Augmented Subtraction
  • Compound Assignment With Augmented Multiplication
  • Compound Assignment With Augmented Division
  • Convert Celsius to Fahrenheit
  • Declare String Variables
  • Escaping Literal Quotes in Strings
  • Quoting Strings with Single Quotes
  • Escape Sequences in Strings
  • Concatenating Strings with Plus Operator
  • Concatenating Strings with the Plus Equals Operator
  • Constructing Strings with Variables
  • Appending Variables to Strings
  • Find the Length of a String
  • Use Bracket Notation to Find the First Character in a String
  • Understand String Immutability
  • Use Bracket Notation to Find the Nth Character in a String
  • Use Bracket Notation to Find the Last Character in a String
  • Use Bracket Notation to Find the Nth-to-Last Character in a String
  • Word Blanks
  • Store Multiple Values in one Variable using JavaScript Arrays
  • Nest one Array within Another Array
  • Access Array Data with Indexes
  • Modify Array Data With Indexes
  • Access Multi-Dimensional Arrays With Indexes
  • Manipulate Arrays With push()
  • Manipulate Arrays With pop()
  • Manipulate Arrays With shift()
  • Manipulate Arrays With unshift()
  • Shopping List
  • Write Reusable JavaScript with Functions
  • Passing Values to Functions with Arguments
  • Global Scope and Functions
  • Local Scope and Functions
  • Global vs. Local Scope in Functions
  • Return a Value from a Function with Return
  • Assignment with a Returned Value
  • Stand in Line
  • Understanding Boolean Values
  • Use Conditional Logic with If Statements
  • Comparison with the Equality Operator
  • Comparison with the Strict Equality Operator
  • Comparison with the Inequality Operator
  • Comparison with the Strict Inequality Operator
  • Comparison with the Greater Than Operator
  • Comparison with the Greater Than Or Equal To Operator
  • Comparison with the Less Than Operator
  • Comparison with the Less Than Or Equal To Operator
  • Comparisons with the Logical And Operator
  • Comparisons with the Logical Or Operator
  • Introducing Else Statements
  • Introducing Else If Statements
  • Logical Order in If Else Statements
  • Chaining If Else Statements
  • Golf Code
  • Selecting from many options with Switch Statements
  • Adding a default option in Switch statements
  • Multiple Identical Options in Switch Statements
  • Replacing If Else Chains with Switch
  • Returning Boolean Values from Functions
  • Return Early Pattern for Functions
  • Counting Cards
  • Build JavaScript Objects
  • Accessing Objects Properties with the Dot Operator
  • Accessing Objects Properties with Bracket Notation
  • Accessing Objects Properties with Variables
  • Updating Object Properties
  • Add New Properties to a JavaScript Object
  • Delete Properties from a JavaScript Object
  • Using Objects for Lookups
  • Testing Objects for Properties
  • Introducing JavaScript Object Notation (JSON)
  • Accessing Nested Objects in JSON
  • Accessing Nested Arrays in JSON
  • Record Collection
  • Iterate with JavaScript For Loops
  • Iterate Odd Numbers With a For Loop
  • Count Backwards With a For Loop
  • Iterate Through an Array with a For Loop
  • Nesting For Loops
  • Invert Regular Expression Matches with JavaScript
  • Iterate with JavaScript While Loops
  • Profile Lookup
  • Generate Random Fractions with JavaScript
  • Generate Random Whole Numbers with JavaScript
  • Generate Random Whole Numbers within a Range
  • Sift through Text with Regular Expressions
  • Find Numbers with Regular Expressions
  • Find Whitespace with Regular Expressions
  • Using the Conditional(Ternary) Operator
  • Using multiple Conditional(Ternary) Operators
  • Using the parseInt() function
  • Use the parseInt() function with radix

How should we solve the CORS issue when testing API Projects?

The problem

API project apps need to have CORS-headers enabled for the freecodecamp.com site to allow the FCC project pages to run tests.

This could be solved by using JSONP for the API-calls, but it's overly complicated for these simple projects. Additionally, CORS seems to be a more modern solution so we'd suggest to go with that.

Solutions

1. User stories

  • explain CORS to the campers, show links
  • tell them to implement the CORS headers - to allow us to test their API

2. Provide a boilerplate for the API project which enables the CORS headers by default

/*
Example of comment provided in project boilerplate
Uncomment this middleware to make you API testable by Free Code Camp

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*")
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
  next()
})
*/

3. Add challenges to FCC explaining working with APIs (ping #27)

  • Explain JSONP
  • Explain CORS
  • JSONP vs CORS - Explain when to use which solution

4. Use JSONP (harder to implement + requires updated user stories)

Suggestion

Go with 3 - this is a fundamental web concept so it's important to know when doing frontend development.

Sass challenges

@AkiraLaine is in charge of coordinating the creation of our Sass challenges.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Here are the challenges we have currently planned:

  • CSS with Superpowers
  • Storing Data with Sass Variables
  • Nesting your CSS
  • Mixing the Cake
  • Using if and else
  • Continuing with for
  • Expanding with each
  • Wrapping up with while
  • Using Sass Partials
  • Extend your CSS styles

Functional Programming Challenges

@alayek is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Here are the challenges we have currently planned (these can be further expanded):

  • Imperative hazards ⚡
  • Declarative beauty 💃
  • Mapping 👥
  • Functional filtering ⛽
  • Slicing 🔪
    • Introduce Array.prototype.slice()
    • Rewrite code which has splice() over slice()
  • Con-catting 💞
    • Introduce Array.prototype.concat()
    • Replace push() with concat()
  • Reducing to ashes 🔥
    • Introduce Array.prototype.reduce()
    • Teach them how to think of problem solution using reduce()
    • Implement map(), filter() etc. with reduce()
  • Sort Arrays with Array.prototype.sort()
    • Have the camper write a non-mutating version of sort()
  • String problems in the form of Array processing
    • Split Strings with .split
    • Join Strings with .join
    • Some sample String processing problem where previously learned lessons are used.
  • Check Positive ➕
    • Strictly Positive 💪
    • Lenient Positive 🍰
  • Intro to partial and currying :neckbeard:
  • Function composition 🌀
  • Refactor imperative code-base to a functional one

... and a lot of challenges that practice and recombine these functions. Currently, many of these can be solved by copying and pasting from the description. We should make sure that's not possible.

User Experience Design Challenges

We are seeking a camper to be in charge of coordinating the creation of these challenges.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.

Regular Expressions Challenges

We are seeking a camper to be in charge of coordinating the creation of these challenges.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.

Draft Regex Outline

Draft Challenge

## Challenge Title

**Challenge Description**

> Here is a description

**Challenge Seed**
<!-- Initial code presented to the camper -->


**Challenge Tests**
<!-- either assert tests or your ideas for things to be tested -->


**Challenge Solution**
<!-- solution to this challenge -->

D3 Challenges

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.


Edit:

With inputs from @EliBei, these are the topics we would like to cover under D3 [WIP]

Applied Quality Assurance Challenges

We are seeking a camper to be in charge of coordinating the creation of these challenges.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.

ES6 Challenges

@alayek is in charge of coordinating the expansion of these challenges, but he needs your help.

In particular, we would like to highlight the differences between ES6 and ES5; including but not limited to

We have to keep in mind that for IE10 and older browsers; ES6 won't natively work in browser; hence we need to inject some babel in-browser polyfill for this.

Advanced Node and Express Challenges

@Em-Ant is in charge of coordinating the expansion of these challenges, but he needs your help.

We need to create a list of topics we'd like to cover. I suspect we should cover streams and advanced file system methods. Are there any Node.js enthusiasts who would like to contribute to this?

Current challenge list (these need to be converted to proper challenge names and several of these topics will require more than one challenge):

  • cookies
  • sessions
  • make API calls in the server with the http module (or better with request)
  • express.router and structure the app with modules
  • the fs module to read/write files
  • some basic stream/pipe concepts to handle files transmission ❓
  • view engines ❓
  • Authorization with passport

Finalize new challenge sequence and import into seed files

Update September 22
We now have a QA issue. @HKuz is leading our new challenge QA effort. Please message her in Gitter if you'd like to help out. #52

👍 = ready to import into seed files
🎱 = not quite ready

  • imported into seed files and ready to QA

💯 = has been QA'd
💌 = intro text created
🌊 = no changes from master

So far we have made incredible progress. Look at all the 👍 below!

I look forward to recognizing all of you - and highlighting your specific contributions - in the big Medium post announcing this massive curriculum expansion.

Since we are so close to shipping all of these challenges (probably 70% of the challenges that needed to be designed have been designed), I propose that we hold out until every last challenge is designed and QA'd. This means we can introduce all the challenges at once, minimizing confusion among campers (and yes - there's a lot of confusion every time we introduce more challenges, no matter how hard we try to communicate everything).

If you have already finished designing the challenges in your current topic, you should find a topic with a 🎱 , jump in, and ask its topic owner how you can best help.

The highest priority sections right now are React, Redux, and React + Redux. These are mission-critical. They have had a "coming soon" label beside them for nearly 9 months. And now, thanks to @BerkeleyTrue's hard work, we can do React (and ES6) in FCC's code editor with Babel, so we have no excuse not to ship them. 😄

We could also use help with CSS Flexbox and Applied User Experience Design challenges. We haven't even started these. Having a dozen or two challenges for these topics is better than having no challenges. Many campers have requested that we cover these topics, and they will be grateful.

Our current goal is to get these into production by Friday, September 16.

Here's the tentative challenge map we hope to ship next week:

Responsive Web Design

This section involves just HTML and CSS - no JavaScript. It has five required projects.

JavaScript Algorithms and Data Structures

This section involves just JavaScript - nothing that requires a browser view. It has five required projects. Only the Basic and Intermediate algorithm challenges are required.

Front End Libraries

This section teaches additional tools, such as Sass and React. The five required projects can be built using any technologies (including Angular - a popular request). We do away with consuming APIs here and instead cover it in the Data Visualization section.

  • Boostrap 🌊
  • jQuery 🌊
  • Sass 👍💯💌
  • React 🎱
  • Redux 🎱
  • React and Redux 🎱
    Front End Libraries Projects (required - can now be completed with any tools):
  • Random Quote Machine 🌊
  • JavaScript Calculator 🌊
  • Pomodoro Clock 🌊
  • Recipe Box 🌊
  • Conway's Game of Life 🌊

Data Visualization

This section covers working with D3 for data visualization. It also covers how to consume data from APIs. These five required projects should be redesigned to involve consuming APIs.

  • Data Visualization with D3 👍💯💌
  • JSON APIs and AJAX 👍💯💌
    Data Visualization Projects:
  • Bar Chart Visualization 🌊
  • Scatterplot Graph 🌊
  • Heat Map 🌊
  • Force Directed Graph 🌊
  • World Map Visualization 🌊

APIs and Microservices

This section covers building APIs that serve data and Microservices that perform a task. The challenges that cover server-side JavaScript are fully redesigned - we will no longer need Node School (thanks @Em-Ant and @Greenheart). There are five required projects that can be completed with any technology (though we'll strongly recommend using Node/Express running on HyperDev).

Information Security and Quality Assurance

This section will teach some practical security and testing skills. It has five required projects, which should be expanded upon with security and test-focused user stories.

Note: Simon, Tic Tac Toe, Twitch, Wikipedia Viewer, Local Weather, Roguelike Dungeon Crawler, Markdown Previewer and Camper Leaderboard will become just some of many bonus practice projects.

Responsive Web Design Project: Pure CSS Tribute Page

We are introducing a few new front end projects to give campers more experience working just with HTML and CSS before adding JavaScript to the mix.

Here are the agile use stories for this challenge:

  1. I can view a tribute page with an image and text.
  2. I can click on a link that will take me to an external website with further information on the topic.

We are looking for a volunteer who can build a working demo of this on CodePen using only HTML5 and CSS (no libraries). This should be simple and unambitious. We want the result to be in line with what a camper who's new to coding can realistically achieve themselves.

Should FCC's Example API Projects be private on hyperdev?

Keep them private because...

  • If they were, the hyperdev-project's code would be hidden while keeping the example apps themself public - this could keep cheaters out.

Keep them public because...

  • Cheaters only cheat themselves.
  • There will for example be some who benefit from reading the code to gain a deeper understanding or see different solutions

Angular Challenges

I think Angular 2.0 should be fully supported as it is a very good client side option in the MEAN stack.

MEAN & MERN should be fully supported in FCC.

I know you use MERN for FCC, but this does not mean MEAN should be left aside.

React challenges

@BerkeleyTrue is in charge of coordinating the creation of these challenges, but he needs your help.

Here are the challenges we have currently planned:

edit(@berkeley): proptypes/defaultProps added. Some state challenges added

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is prepopulated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Complete Back End Challenge Overhaul

Complete Back End Challenge Overhaul

Mission

Our goal is to create new challenges teaching npm, node, express, and mongoose. These will replace the NodeSchool modules currently in use. There are several reasons behind this decision:

  • Some NodeSchool challenges are unmaintained / buggy
  • The how-to-npm-challenges cover too advanced topics to fit with our curriculum (creating & publishing npm packages)
  • We want to enable as much learning as possible in the browser, without requiring installations or local Dev-environment setup.

Action plan:

  1. Get the npm challenges working with @Greenheart's testing tool as a proof of concept ✅
  2. @Greenheart and @Em-Ant will create the remaining challenges and their tests using @Greenheart's prototype
  3. Then create a version of the HyperDev boilerplate that passes all the tests to ensure they can indeed be passed
  4. Make all those tests fail again by removing necessary code. This will serve as the starting project that campers fork on HyperDev
  5. @QuincyLarson and @BerkeleyTrue will implement the UI for these challenges on FCC's beta branch, which hits the appropriate end points and stores the campers' project URL
  6. Once @BerkeleyTrue and @QuincyLarson have finished preparing FCC, we will transfer the prototype's instructions and tests over to Free Code Camp's JSON seed files so these will replace the existing back end challenges in FCC's curriculum.

We are folding the following issues into this one:
Back End Challenges: #26
Applied InfoSec: #25
Applied QA: #24
Automated testing: #23

Challenge Structure - camper-stories

  • Campers can see each topic (i. e. npm, node, express) as a section in the FCC map
  • Each section on the FCC map corresponds to a base project on hyperdev, containing seed code & utility functions FCC will use to verify challenges. This base project is linked in the instructions for the first challenge of each section.
  • Campers can "remix" a base project on hyperdev to create their own copy.
  • Before they continue learning, they need to enter the URL to their remixed hyperdev project.
  • For each challenge in each section, campers can find instructions on the corresponding FCC challenge page
  • To complete a challenge, campers modify their hyperdev project.
  • A button on the FCC challenge page is used to run tests
  • Campers can see test results and a hardcoded error-messages of what they have failed to yet accomplish

List of Challenges

See #26

1. Manage Node.js projects and npm packages using package.json

Status:

  • Challenge instructions (View them below 💯 ✨ )
  • Tests for every challenge available in tests.js of the backend tester prototype
  • Solutions for every challenge available in tests.js (as a property of every test-object)
  • Seed Code for each challenge (N/A) - Campers start with a minimal package.json that's already in the boilerplate - then all challenges build on top of each other.
  • Boilerplate HyperDev project ready to be remixed by campers

Challenges:

  • Related to #45 Some kind of intro (see notes in the beginning of the npm challenges posted below)
    Teach the difference between npm in hyperdev and npm used from terminal.
    npm is whole ecosystem but we're just touching the fundamental concepts that you need to know right now like adding / removing packages
    Tests: none
  • Introduction to package.json - The Core of Any Node.js Project or npm Package
    This challenge is the introduction to package.json - but has the camper adding an author-field to make it interactive.
    Tests: Author changed in JSON.parse(package.json)
  • Add a Description to Your package.json
    Tests: Description changed in JSON.parse(package.json)
  • Add Keywords to Your package.json
    Tests: Keywords changed in JSON.parse(package.json)
  • Add a License to Your package.json
    Tests: License changed in JSON.parse(package.json)
  • Add a Version to Your package.json
    Tests: Version changed in JSON.parse(package.json)
  • Expand Your Project With External Packages From npm
    Use some simple library (Moment.js)
    Tests: The package is in JSON.parse(package.json)
  • Manage npm Dependencies by Understanding Semantic Versioning
    Tests: whether the package is of a specific older version
  • Use the Tilde-Character to use the Latest Patch Version of a Dependency
  • Use the Caret-Character to Use the Latest Minor Version of a Dependency
  • Remove a Package From Your Dependencies
    Tests: The package is no longer in JSON.parse(package.json)

2. Node and Express

Hello Node! ✅

Requirement : console.log('Hello World')

Basic Express setup ✅

Route: GET /
Respond with: Hello Express

Serve HTML using res.sendFile()

Route: GET /
Respond with: views/index.html (it contains <h1>Hello, HTML!</h1> and has a style link in it)

Serve a Stylesheet with the express.static() middleware ✅

Route: /style.css
Respond with: the css stylesheet. It has the body {...} selector

Respond with JSON ✅

Route: GET /json
Respond with: { "message": "Hello json" }

Use the .env-file to store (secret) configuration ✅

Env var: TEXT_STYLE=uppercase
Route: GET /json
Respond with: if process.env.TEXT_STYLE === upprecase => { "message": "HELLO JSON" } else => { "message": "Hello json" }

App level Middleware - logger ✅

Description: Simple logger, for all the routes. Required format: method route - ip.
Route: all

Simple Time middleware in a route ( Time Server ) ✅

Description :Augment the req object with req.time = new Date in a route middleware
Route: /now
Respond with: {time: req.time.toString()}

The req.params object ✅

Route: GET /:word/echo
Respond with: {echo: <word>}

The req.query object ✅

Route: GET /name?first=<firstname>&last=<lastname>
Respond with: {name: '<firstname> <lastname>'}

Install and configure the body-parser module ✅

Description ideas: differences between urlencoded, json, and multipart (not handled by body-parser).

Receive a POST request and use the req.body

Route: POST /name,
Body: {first: <firstname>, last: <lastname>} url-encoded,
Respond with: {name: '<firstname> <lastname>'}

3. Mongo and Mongoose

Prerequisites:

  • Being able to create an mLab db instance, and get the URI

Introduction ⌛

  • What is an DB?
  • CRUD Operations
  • SQL vs NoSQL
  • What is Mongo DB?
  • What is an ORM?
  • What is Mongoose?

Setup ✅

  • add mongodb and mongoose to package.json
  • import mongoose
  • connect to the DB (the url from earlier setup)

Schemas and Models ✅

  • Schemas map to MongoDB collections.
  • You can combine multiple schemas to create complex Models
  • A Model is a Constructor that allows You to create object instance, called Documents
  • Schema types (String, Number, ...)
  • Basic validation (required, unique)
  • default values

Create ✅

  • Note: Interactions with the db cannot be in the main flow, in the server code. We need to have put code inside callbacks. done() is a callback that tells us that we can proceed after completing an async operation. It should be called as done(null, data) on success or done(err) on error, according to the Node convention.
  • Create then Save - one document at time
  • Create many docs - Model.create([{...},{...},..,]) (useful for seeding the db)

Read ✅

  • Model.find()
  • Model.findOne()
  • Model.findById()

Update ✅

  • Find, Edit then Save
  • findOneAndUpdate() or findbyIdAndUpdate()

Delete ✅

  • Delete one document : findByIdAndRemove() or findOneAndRemove()
  • Delete many documents : Model.remove({criteria: ...}, cb)

Chain Query helpers ✅

  • .limit()
  • .sort()
  • .select()
  • .exec()

4. API projects (already created)

5. Information security with Helmet.js (check this comment) ✅

Helmet.js

Description

It helps to secure Express apps by setting various HTTP headers.
It is a collection of 10 middleware functions that set headers:

Challenges Structure

  • We should not include hpkp because it is only applicable to https with certificates.
  • For each Middleware :
    1. Introduce the vulnerability addressed,
    2. Ask the camper to mount and configure the middleware,
    3. Test the results, checking the response headers, and the middleware stack for the main route.
  • At the end show how the same result can be obtained simply with app.use(helmet({<config>...}))

Note: There is a lot of information that could (should) be added about this argument, e.g. Input sanitization, CSRF, secure cookies settings, RegEx DoS, dependencies auditing (nsp). See Express Security Best Parctices.

6. Quality Assurance and Testing with Chai (check this comment)

7. Dynamic Web Apps (which have additional testable QA and InfoSec stories such as sanitization)

New endpoint for FCC cat API for posting data using AJAX.

@MayankPratap said:

I am planning to add a challenge in "JSON APIs and AJAX" challenges where campers can post data to server using AJAX. Currently FCC has no endpoint for POST. Currently what I have thought is that if user clicks on a button named "Cats" then server should return a page containing image of cats, and if the user clicks on "Dogs" then server should return a page containing image of dogs. So if an endpoint can be made to support this then this challenge can be added. Challenge is simple and has been kept in theme with the existing challenges.

Refer: freeCodeCamp/freeCodeCamp#10191

Challenges that teach debugging

Responsive Web Design Project: Survey Form

We are introducing a few new front end projects to give campers more experience working just with HTML and CSS before adding JavaScript to the mix.

Here are the agile use stories for this challenge:

  1. I can complete a survey that has various questions, and uses check boxes, radio buttons, text inputs and select inputs.
  2. Some of these fields are required and some are optional.
  3. Some of these fields use HTML5 form validation.
  4. When I click the submit button, it redirects me to a submission page on Free Code Camp.

We are looking for a volunteer who can build a working demo of this on CodePen using only HTML5 and CSS (no libraries).

Image Search API Project - Update User Stories

Should we use pagination or a query param specifying the number of results?

It's easier to test that the response has X number of results than to test the pagination. By simplifying testing for us, we can give better and more accurate feedback to campers.

Suggested user stories:

  • (Unchanged) I can get the image URLs, alt text and page urls for a set of images relating to a given search string.
  • I can request a specific number of results by adding the ?results=<a-positive-integer> parameter to the URL.
  • I can get a list of up to 10 of the most recently submitted search strings at the path /latest

Automated Testing Challenges

@Em-Ant is in charge of coordinating the expansion of these challenges, but he needs your help.

These challenges will walk campers through writing tests using the Mocha Chai library's Assert methods.

These challenges will run on HyperDev - not on FreeCodeCamp.com yet. @Em-Ant can fill you in on specific details of this, as he is our resident HyperDev expert.

Ideally, we'll cover all three types of tests: unit, integration, and functional. These are described here.


6. Automated Testing Challenges

Introduction 🎱

  • Why testing is important ?
  • Testing approaches (TDD vs. BDD - see this) & Interface styles
  • Unit, Integration, e2e tests
  • What is a Test Framework (mocha)
  • What is an Assertion Library (chai.js)

Unit Tests - Basic Assertions ✅

Basic Assertions

  • .isNull() - .isNotNull()
  • isUndefined() - isDefined()
  • isOk(truthy) - isNotOk(falsey)
  • isTrue() - isNotTrue()

Equality

  • .equal() - .notEqual()
  • .strictEqual() - .notStrictEqual()
  • .deepEquals() - .notDeepEquals()

Comparisons

  • .isAbove() - .isAtMost()
  • .isBelow() - .isAtLeast()
  • .approximately()

Arrays

  • .isArray() - .isNotArray()
  • .include() - .notInclude()

Strings

  • .isString() - .isNotString()
  • .include() - .notInclude()
  • .match() - .notMatch()

Objects

  • .property()
  • .typeOf()
  • .instanceOf()

API Integration Tests 🚧

  • Test an API endpoint 1 (using chai-http)
  • Test an API endpoint 2
  • Test an API endpoint 3

Functional e2e Tests 🚧

  • Setup the Headless browser (Zombie.js)
  • Setup the Test Suite
  • Test a form on the Homepage 1
  • Test a form on the homepage 2

Back End Challenges

Object Oriented Programming Challenges

@utsab is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Here are the challenges we have currently planned (these can be further expanded):

Objects

  • Create a basic JavaScript object.
  • Use dot notation to access object’s properties.
  • Create a method on an object.
  • Make code more reusable with “this”.

Constructors

  • Define a Constructor Function
  • Use a Constructor to Create Objects
  • Extend Constructors to Receive Arguments
  • Verify an Object's Constructor with instanceof

Prototypes

  • Understand "own" properties
  • Use prototype properties to reduce duplicate code
  • Iterate over all properties
  • Understand the "constructor" property
  • Change the prototype to a new object
  • Remember to set the "constructor" property when changing the prototype
  • Understand where an object’s prototype comes from
  • Understand the prototype chain

Inheritance

  • Don’t Repeat Yourself
  • Inherit behaviors from a supertype
  • Use Inheritance in Constructor Functions
  • Reset the Inherited Constructor Property
  • Add Methods After Inheritance
  • Override Inherited Methods

Other

  • Use a Mixin to add common behavior between unrelated objects
  • Use closure to protect properties within an object from being modified externally.
  • Understand the immediately invoked function Expression (IIFE)
  • Use an IIFE to create a module

Here are the challenges as we originally discussed for archival purposes:

  • Declare JavaScript objects as variables #old
  • Constructors
    • Construct JavaScript objects with functions #old
    • Make instances of objects with constructor functions #old
    • Use instanceof to show the type of an object created with a constructor
    • constructor property of an instance also shows the type of an object
    • Make unique objects by passing in parameters to constructor #old
  • More on this
    • Every function gets a variable this ==> context in which the function was called. Illustrate with exercise.
    • this can refer to the global context. Illustrate with exercise
    • this can refer to a specific object. Illustrate with exercise
    • Explicitly set "this" with the "call", "apply", "bind" methods
    • use strict
  • Prototypes
    • Convert constructor-defined methods, "setGear" and "getGear" to prototype methods. (Explain that two "Bike" instances have the exact same method "setGear" ==> duplicate code ==> prototypes can help eliminate the duplicate code.)
    • Properties defined on prototype are available to all instances. Illustrate with exercise.
    • prototype properties vs. "own" properties
    • Iterate over all properties of an object
    • Iterate over all "own" properties of an object (using hasOwnProperty)
    • Iterate over all prototype properties of an object
    • Is the "constructor" property an "own" property or prototype property? Find out.
    • If instance sets its "own" property, it overrides the prototype's property
  • Prototypes with Constructors
    • Every object has a prototype property, including functions. A constructor function has its own prototype property. Illustrate with exercise.
    • When you create an object using new, the constructor's prototype property is assigned to the object instance's prototype. Exercise ==> print out the instance's "prototype" property
    • Changing a prototype affects all instances
    • Modify a built-in object's prototype, like Array. (Explain why this is not a good idea in production).
    • The constructor's prototype property is created with a "constructor" property equal to the function.
  • Inheritance
    • Objects inherit behavior from other objects via prototype chaining. A prototype chain occurs when one object's prototype is set to another object. Since the prototype itself is an object, it has its own prototype.
    • Objects automatically inherit from Object
    • Introduce concepts subtype and supertype
    • Use instanceof to show that an object is an instance of subtype and supertype
    • Show example where the subtype sets its prototype equal to an instance of the supertype
    • Show that you have to manually set the constructor property to the subtype
    • Calling supertype methods ===> use [SuperTypeName].call and pass in this
    • The obj.prototype is not obj's prototype.
  • Encapsulation (Data hiding)
    • Module pattern for creating private members ===> Immediately invoked function expression (IIFE)
    • Closure
    • Modules are great for single objects. Similar pattern for constructed objects. Reuse "Make object properties private" to show how to make private members within a constructor. #old
    • The underscore before name convention
  • Other
    • Prototypal chaining is not the only way to inherit behavior. ===> mixins
    • Various exercises to manipulate Arrays and Strings #old

Responsive Web Design Project: Technical Documentation Page

We are introducing a few new front end projects to give campers more experience working just with HTML and CSS before adding JavaScript to the mix.

Here are the agile use stories for this challenge:

  1. I can see a list of commands on a sidebar.
  2. The sidebar stays in the same place when I scroll down through the documentation.
  3. When I click a command link on the sidebar, the page scrolls down to that command's documentation entry.
  4. The documentation has a clear visual hierarchy to emphasize important aspects of each documentation entry.
  5. All code snippets are rendered using the "code" html elements

We are looking for a volunteer who can build a working demo of this on CodePen using only HTML5 and CSS (no libraries).

Applied Visual Design Challenges

@atjonathan is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Final Challenges List:

Challenges using a Bootstrap Card (consistent)

Challenges based on position

Challenges based on color

Challenges based on typography

Ungrouped challenges

Challenges based on Animation

Introduction Page

Add an introduction page to introduce sections of the curriculum

The Problem

  • The different sections cover many topics but never give an overview of how everything fits together.
  • Prerequisites - we don't state what's expected of the camper before starting the section.
  • What can they expect from the section - never explicitly stated.

Proposed Solution

We think we need to add an introduction page to each section under the curriculum expansion. This page, for each section, should cover all the necessary info a camper would need to know about the section, such as:

  • when they should complete it
  • how important it is to their goal etc.

For example RegEx, HTML, CSS, Accessibility, ES6 etc. or another clear example: the backend challenges which cover a lot of topics but never give an overview of how the challenges fit together, what's required to know

// @Greenheart and @alayek

Similar introduction course prolgue is found on most other MOOC sites as well.

The introduction is always so hard to fit into the first challenge's content - you don't have time to explain the extremely important "general picture" that learners need before they can focus on the section's details

It should be a simple page, with text and diagram, or even a gif or a video would be fine

Probably a text since it's easier to maintain and keep up to date than a video


Here are the challenges for which we need intro sections :

  • Front-End
    • HTML
    • CSS3
    • Basic JavaScript Challenges
    • Object-Oriented Design
    • User Experience Design Challenges
    • CSS Flexbox Challenges
    • SASS Challenges
    • Pure CSS Portfolio Project
    • Applied Visual Design
    • Accessibility
    • ES6 Challenges
    • Functional Programming
    • RegEx Challenges
    • JSON APIs and AJAX
    • React Challenges
    • Redux Challenges
    • React with Redux Challenges
    • D3 Challenges
  • Backend Challenges
    • Node Modules with NPM
    • Node JS and Express
    • Mongo and Mongoose
    • API Projects
    • Information Security with Helmet JS
    • QA with Chai
    • Dynamic Web Apps
  • Interview topics
    • Advanced Data Structures
    • Advanced Algorithm Design

@FreeCodeCamp/issue-moderators
FYI.

JSON APIs and AJAX

The "JSON APIs and AJAX" challenges have been needing an upgrade for sometime now.

@MayankPratap is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.

Some places to look for content to teach:

Here are the challenges we have planned till now :

  • Trigger Click Events with javaScript
  • Change Text with Click Events
  • Get JSON with the javaScript XMLHttpRequest Method
  • Talk is Cheap, Show me JSON.
  • Convert JSON Data to HTML
  • Render Images from Data Sources
  • Prefilter JSON
  • Get Geo-location Data
  • Posting data using AJAX

You can suggest or add more challenges.

Advanced Data Structure Challenges

@koustuvsinha is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Current status of challenge development:

All API Projects need a strict API path naming convention

Why?

  • Easier testing --> leads to more accurate test results and better feedback
  • Teach a good naming convention for APIs - example.com/api/<api-version>/<some-api-route
    • API version isn't necessary for FCC - But it could be useful to explain this naming convention before pointing out that FCC doesn't require it for these projects.

Responsive Web Design Project: Product Landing Page

We are introducing a few new front end projects to give campers more experience working just with HTML and CSS before adding JavaScript to the mix.

Here are the agile use stories for this challenge:

  1. When I arrive at the product landing page, I can click buttons in the navbar that will take me to the corresponding section of the landing page (features, pricing, email sign up)
  2. I can watch an embedded product video
  3. There is a form field where I can enter an email address.
  4. The form uses HTML5 validation to confirm that the entered text is an email address
  5. Upon clicking the button, it will post to a static page on FCC that confirms the email address entered (and that it posted successfully)

We are looking for a volunteer who can build a working demo of this on CodePen using only HTML5 and CSS (no libraries).

Applied Data Visualization Challenges

We are seeking a camper to be in charge of coordinating the creation of these challenges.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.

CSS Flexbox Challenges

@atjonathan and @alayek are charge of coordinating the expansion of these challenges, but they need your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.


List of challenges:

Here's the final thing we would be building throughout the course:

https://jsfiddle.net/5epums9j/16/

Add QA and Security User Stories to Manage a Book Trading Club project

Here are the current user stories for the project:

User Story: I can view all books posted by every user.
User Story: I can add a new book.
User Story: I can update my settings to store my full name, city, and state.
User Story: I can propose a trade and wait for the other user to accept the trade.

We want to add some testing and security-related stories to this challenge (and perhaps remove some of the existing challenges to keep this project from becoming too time consuming).

Once we add these stories, we need a working demo with stories that require tests like those taught in our QA section (#24) and stories that cover at least one security concern covered in our upcoming security section (#25)

Applied Information Security Challenges

@Greenheart is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

We still need to come up with a list of concepts to cover, where each topic can be taught interactively, then translate these concept into the names of the challenges.

full page map view has independently scrolling sections

The freecodecamp.com/map view has two independently scrolling sections. See screenshot below.

  • As a user, when I scroll down - with mouse anywhere in the view - the map should scroll. Currently, I have to mouse over the central column.
  • As a user, the top map navigation component should always remain fixed at the top (and not be scrollable like in the above picture).

Add QA and Security User Stories to Voting App Project

Here are the current user stories for our voting app project:

User Story: As an authenticated user, I can keep my polls and come back later to access them.
User Story: As an authenticated user, I can share my polls with my friends.
User Story: As an authenticated user, I can see the aggregate results of my polls.
User Story: As an authenticated user, I can delete polls that I decide I don't want anymore.
User Story: As an authenticated user, I can create a poll with any number of possible items.
User Story: As an unauthenticated or authenticated user, I can see and vote on everyone's polls.
User Story: As an unauthenticated or authenticated user, I can see the results of polls in chart form. (This could be implemented using Chart.js or Google Charts.)
User Story: As an authenticated user, if I don't like the options on a poll, I can create a new option.

We want to add some testing and security-related stories to this challenge (and perhaps remove some of the existing challenges to keep this project from becoming too time consuming).

Once we add these stories, we need a working demo with stories that require tests like those taught in our QA section (#24) and stories that cover at least one security concern covered in our upcoming security section (#25)

Add QA and Security User Stories to Chart the Stock Market project

Here are the current user stories for the project:

User Story: I can view a graph displaying the recent trend lines for each added stock.
User Story: I can add new stocks by their symbol name.
User Story: I can remove stocks.
User Story: I can see changes in real-time when any other user adds or removes a stock. For this you will need to use Web Sockets.

We want to add some testing and security-related stories to this challenge (and perhaps remove some of the existing challenges to keep this project from becoming too time consuming).

Once we add these stories, we need a working demo with stories that require tests like those taught in our QA section (#24) and stories that cover at least one security concern covered in our upcoming security section (#25)

Add QA and Security User Stories to Pinterest Clone App Project

Here are the current user stories for our Pinterest clone app project:

User Story: As an unauthenticated user, I can login with Twitter.
User Story: As an authenticated user, I can link to images.
User Story: As an authenticated user, I can delete images that I've linked to.
User Story: As an authenticated user, I can see a Pinterest-style wall of all the images I've linked to.
User Story: As an unauthenticated user, I can browse other users' walls of images.
User Story: As an authenticated user, if I upload an image that is broken, it will be replaced by a placeholder image. (can use jQuery broken image detection)

We want to add some testing and security-related stories to this challenge (and perhaps remove some of the existing challenges to keep this project from becoming too time consuming).

Once we add these stories, we need a working demo with stories that require tests like those taught in our QA section (#24) and stories that cover at least one security concern covered in our upcoming security section (#25)

Responsive Design Challenges

@atjonathan is in charge of coordinating the expansion of these challenges, but he needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Here are the challenges we have currently planned (these can be further expanded):

  • Create a Media Query
    • Set a Responsive Breakpoint
    • Create a Compound Media Query
  • Make an image responsive
  • Use a retina image
  • Make typography responsive

HTML5 and CSS3 challenges

This topic needs an owner.

For each challenge, please reply to this GitHub issue with:

  1. The feature/concept being introduced/reinforced (challenge description)
  2. What the camper is presented with (challenge seed)
  3. How we might test for it (assert tests)

Please copy and paste this template for your idea

**Challenge**

<!-- challenge title your idea is for -->

**Challenge Description**

<!-- your challenge description --> 

**Challenge Seed**

<!-- Initial code presented to the camper -->

**Challenge Tests**

<!-- either assert tests or your ideas for things to be tested -->

**Challenge Solution**

<!-- solution to this challenge -->

Here are the challenges we have currently planned (these can be further expanded):

Introduction to FreeCodeCamp’s Development Environment

  • Ready

Challenge Description:

This is FreeCodeCamp’s in-browser development environment. This is where we will build our web pages with HTML (Hyper Text Markup Language), and style them with CSS (Cascading Style Sheets). Don’t worry if you have never heard of HTML and CSS before, we will got into more detail as you progress through the FreeCodeCamp curriculum.

Quick tour through the IDE - need to know what it will look like to complete this section

To move on to the next challenge, please click the ‘Run Tests’ tests button.

Challenge Seed:
‘’

Challenge Tests:
assert(code == ‘’);

Challenge Solution


Say Hello to HTML Elements

Add Content with the Paragraph Element

Comment out HTML

Fill in the Blank with Placeholder Text

Delete HTML Elements

Introduction to HTML5 Elements

  • Ready

Challenge Description

HTML5 introduces more descriptive HTML tags. These include <code><header>, <footer>, <nav>, <video>,<article></code> and so-on.

These tags not only make your HTML easier to read, it also helps with Search Engine Optimisation (SEO).

The <code><main></code> HTML5 tag helps search engines (google etc...), and other deveplopers, find the main content of your page.

Wrap your paragraph with a opening and closing lt;code><main></code> tag.

Challenge Seed

<h2>CatPhotoApp</h2>

<p>Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.</p>

Challenge Tests

assert(code.match(/<main>\s*?<p>/), message:"Add an opening &lt;code&gt;main&lt;/code&gt; tag before your paragraph");
assert(code.match(/<\/p>\s*?<\/main>/), message:"Add a closing &lt;code&gt;main&lt;/code&gt; tag after your paragraph.");

**Challenge Solution**
```html
<h2>CatPhotoApp</h2>

<main><p>Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.</p></main>

Change the Color of Text

Use CSS Selectors to Style Elements

Use a CSS Class to Style an Element

Style Multiple Elements with a CSS Class

Change the Font Size of an Element

Set the Font Family of an Element

Import a Google Font

Specify How Fonts Should Degrade

Add Images to your Website

Size your Images

Add Borders Around your Elements

Add Rounded Corners with a Border Radius

Make Circular Images with a Border Radius

Link to External Pages with Anchor Elements

Nest an Anchor Element within a Paragraph

Make Dead Links using the Hash Symbol

Turn an Image into a Link

Add Alt Text to an Image for Accessibility

Create a Bulleted Unordered List

Create an Ordered List

Create a Text Field

Add Placeholder Text to a Text Field

Create a Form Element

Add a Submit Button to a Form

Use HTML5 to Require a Field

Create a Set of Radio Buttons

Create a Set of Checkboxes

Check Radio Buttons and Checkboxes by Default

Nest Many Elements within a Single Div Element

Give a Background Color to a Div Element

Set the ID of an Element

Use an ID Attribute to Style an Element

Adjusting the Padding of an Element

Adjust the Margin of an Element

Add a Negative Margin to an Element

Add Different Padding to Each Side of an Element

Add Different Margins to Each Side of an Element

Use Clockwise Notation to Specify the Padding of an Element

Use Clockwise Notation to Specify the Margin of an Element

Style the HTML Body Element

Inherit Styles from the Body Element

Prioritise One Style Over Another

Override Styles in Subsequent CSS

Override Class Declarations by Styling ID Attributes

Override Class Declarations with Inline Styles

Override All Other Styles by using Important

Use Hex Code for Specific Colors

Use Hex Code to Mix Colors

Use Abbreviated Hex Code

Use RGB values to Color Elements

Use RGB to Mix Colors

Applied Accessibility Challenges

@HKuz is in charge of coordinating the expansion of these challenges, but needs your help.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Here are the challenges we have currently planned (these can be further expanded):

I found this website quite helpful in constructing this list: http://www.html5accessibility.com

Request Header Parser API Project - How should we verify UA strings?

As @Rafase282 wrote in the CoreTeam room earlier today:

on the header parser topic, HTTP_USER_AGENT: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/51.0.2704.79 Chrome/51.0.2704.79 Safari/537.36 from there, I personally used the X11; Linux x86_64 and from HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.8,es-419;q=0.6,es;q=0.4,de;q=0.2 I used en-US but besides the fact that depending on the OS the user agent looks different entirelly, there are just too many ways someone could come up with the software information.


Solutions to be able to verify the user agent string

  1. Use external service/API to verify for us
  2. Use https://www.npmjs.com/package/user-agent-parser
  3. Ignore UA verification (It's the learner who lose at cheating)

Suggestion

  • Go with 3 for now, maybe 2 in the future (will improve quality, but only for a single test so it's not worth too much effort at the moment)

File Metadata API Project - Should it be moved to the Dynamic Web Application Projects?

This project requires the user to work with either an HTML form or some JS in order to access the API. It's not possible to simply use an URL request.

Since this project is on the border to being a simple dynamic web application - maybe we should move it to those projects?


On the other hand, it's interesting to have an API where it's possible to POST to.
If we disregard the frontend parts - the backend works like an API so it could still fit after all.

Any thoughts?

React with Redux Challenges

@alayek is in charge of coordinating the creation of these challenges.

Here are the challenges we have currently planned:

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is prepopulated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Applied Algorithm Design Challenges

We are seeking a camper to be in charge of coordinating the expansion of these challenges.

For each challenge, please reply to this GitHub issue with:

  1. Challenge description text
  2. Test suite (using the assert method)
  3. The seed code, which is pre-populated in the editor at the beginning of the challenge
  4. A working solution that makes all tests pass

Here are the challenges we have currently planned (these can be further expanded):

Responsive Web Design Project: Pure CSS Portfolio Page

We are introducing a few new front end projects to give campers more experience working just with HTML and CSS before adding JavaScript to the mix.

Here are the agile use stories for this challenge:

  1. I can access all of the portfolio webpage's content just by scrolling.
  2. I can click different buttons that will take me to the portfolio creator's different social media pages.
  3. I can see thumbnail images of different projects the portfolio creator has built (if you haven't built any websites before, use placeholders.)
  4. I can navigate to different sections of the webpage by clicking buttons in the navigation.

We are looking for a volunteer who can build a working demo of this on CodePen using only HTML5 and CSS (no libraries). This should be simple and unambitious. We want the result to be in line with what a camper who's new to coding can realistically achieve themselves.

Add QA and Security User Stories to Build a Nightlife Coordination App

Here are the current user stories for the project:

User Story: As an unauthenticated user, I can view all bars in my area.
User Story: As an authenticated user, I can add myself to a bar to indicate I am going there tonight.
User Story: As an authenticated user, I can remove myself from a bar if I no longer want to go there.
User Story: As an unauthenticated user, when I login I should not have to search again.

We want to add some testing and security-related stories to this challenge (and perhaps remove some of the existing challenges to keep this project from becoming too time consuming).

Once we add these stories, we need a working demo with stories that require tests like those taught in our QA section (#24) and stories that cover at least one security concern covered in our upcoming security section (#25)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.