fix: remove old views (#36677)
This commit is contained in:
committed by
mrugesh
parent
e9d753fc09
commit
f8a603d182
30
client/src/__mocks__/gatsby.js
Normal file
30
client/src/__mocks__/gatsby.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* eslint-disable no-unused-vars */
|
||||||
|
/* eslint-disable no-undef */
|
||||||
|
const React = require('react');
|
||||||
|
|
||||||
|
const gatsby = jest.requireActual('gatsby');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
...gatsby,
|
||||||
|
graphql: jest.fn(),
|
||||||
|
Link: jest.fn().mockImplementation(
|
||||||
|
// these props are invalid for an `a` tag
|
||||||
|
({
|
||||||
|
activeClassName,
|
||||||
|
activeStyle,
|
||||||
|
getProps,
|
||||||
|
innerRef,
|
||||||
|
partiallyActive,
|
||||||
|
ref,
|
||||||
|
replace,
|
||||||
|
to,
|
||||||
|
...rest
|
||||||
|
}) =>
|
||||||
|
React.createElement('a', {
|
||||||
|
...rest,
|
||||||
|
href: to
|
||||||
|
})
|
||||||
|
),
|
||||||
|
StaticQuery: jest.fn(),
|
||||||
|
useStaticQuery: jest.fn()
|
||||||
|
};
|
@ -18,8 +18,7 @@ function ShowUnsubscribed({ unsubscribeId }) {
|
|||||||
<Grid>
|
<Grid>
|
||||||
<main>
|
<main>
|
||||||
<FullWidthRow>
|
<FullWidthRow>
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<Panel bsStyle='primary' className='text-center'>
|
<Panel bsStyle='primary' className='text-center'>
|
||||||
<Spacer />
|
<Spacer />
|
||||||
<h2>You have successfully been unsubscribed</h2>
|
<h2>You have successfully been unsubscribed</h2>
|
||||||
@ -38,6 +37,7 @@ function ShowUnsubscribed({ unsubscribeId }) {
|
|||||||
</Button>
|
</Button>
|
||||||
</FullWidthRow>
|
</FullWidthRow>
|
||||||
) : null}
|
) : null}
|
||||||
|
<Spacer size={2} />
|
||||||
</main>
|
</main>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
|
@ -97,8 +97,7 @@ class ShowUser extends Component {
|
|||||||
return (
|
return (
|
||||||
<main>
|
<main>
|
||||||
<FullWidthRow>
|
<FullWidthRow>
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<Panel bsStyle='info'>
|
<Panel bsStyle='info'>
|
||||||
<Panel.Heading>
|
<Panel.Heading>
|
||||||
<Panel.Title componentClass='h3'>
|
<Panel.Title componentClass='h3'>
|
||||||
@ -132,8 +131,7 @@ class ShowUser extends Component {
|
|||||||
<title>Report a users profile | freeCodeCamp.org</title>
|
<title>Report a users profile | freeCodeCamp.org</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<FullWidthRow>
|
<FullWidthRow>
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<Col md={8} mdOffset={2}>
|
<Col md={8} mdOffset={2}>
|
||||||
<h2>
|
<h2>
|
||||||
Do you want to report {username}
|
Do you want to report {username}
|
||||||
|
13
client/src/components/Footer/Footer.test.js
Normal file
13
client/src/components/Footer/Footer.test.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/* global expect */
|
||||||
|
import React from 'react';
|
||||||
|
import renderer from 'react-test-renderer';
|
||||||
|
import 'jest-dom/extend-expect';
|
||||||
|
|
||||||
|
import Footer from './';
|
||||||
|
|
||||||
|
describe('<Footer />', () => {
|
||||||
|
it('renders to the DOM', () => {
|
||||||
|
const tree = renderer.create(<Footer />).toJSON();
|
||||||
|
expect(tree).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
});
|
41
client/src/components/Footer/FooterCol.js
Normal file
41
client/src/components/Footer/FooterCol.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
|
import Link from '../helpers/Link';
|
||||||
|
import { footerLinks } from './footerLinks';
|
||||||
|
|
||||||
|
import './footer.css';
|
||||||
|
|
||||||
|
function FooterCol({ colNum, title }) {
|
||||||
|
// if the column number is not applicable return an empty div
|
||||||
|
if (colNum < 1 || colNum > footerLinks + 1) return <div></div>;
|
||||||
|
|
||||||
|
let linksRow = footerLinks[colNum - 1].map(function(item, i) {
|
||||||
|
if (item.interal)
|
||||||
|
return (
|
||||||
|
<Link key={i} to={item.to}>
|
||||||
|
{item.text}
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<Link external={true} key={i} to={item.to}>
|
||||||
|
{item.text}
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<div className={`footer-col-${colNum}`}>
|
||||||
|
<div className='col-header'>{title}</div>
|
||||||
|
{linksRow}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const propTypes = {
|
||||||
|
colNum: PropTypes.number,
|
||||||
|
title: PropTypes.string
|
||||||
|
};
|
||||||
|
|
||||||
|
FooterCol.propTypes = propTypes;
|
||||||
|
FooterCol.displayName = 'FooterCol';
|
||||||
|
export default FooterCol;
|
408
client/src/components/Footer/__snapshots__/Footer.test.js.snap
Normal file
408
client/src/components/Footer/__snapshots__/Footer.test.js.snap
Normal file
@ -0,0 +1,408 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`<Footer /> renders to the DOM 1`] = `
|
||||||
|
<footer
|
||||||
|
className="site-footer"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="footer-container"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="footer-row"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="footer-desc-col"
|
||||||
|
>
|
||||||
|
<p>
|
||||||
|
freeCodeCamp is a donor-supported tax-exempt 501(c)(3) nonprofit organization (United States Federal Tax Identification Number: 82-0779546)
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Our mission: to help people learn to code for free. We accomplish this by creating thousands of videos, articles, and interactive coding lessons - all freely available to the public. We also have thousands of freeCodeCamp study groups around the world.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Donations to freeCodeCamp go toward our education initiatives, and help pay for servers, services, and staff. You can
|
||||||
|
<a
|
||||||
|
className="inline"
|
||||||
|
href="/donate"
|
||||||
|
>
|
||||||
|
make a tax-deductible donation here
|
||||||
|
</a>
|
||||||
|
.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="footer-col-1"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="col-header"
|
||||||
|
>
|
||||||
|
Our Nonprofit
|
||||||
|
</div>
|
||||||
|
<a
|
||||||
|
href="/news/about/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
About
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/donate"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Donate
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/shop/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Shop
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="https://www.linkedin.com/school/free-code-camp/people/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Alumni Network
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="https://github.com/freeCodeCamp/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Open Source
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/support/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Support
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/sponsors/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Sponsors
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/academic-honesty-policy/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Academic Honesty
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/code-of-conduct/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Code of Conduct
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/privacy-policy/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Privacy Policy
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/terms-of-service/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Terms of Service
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/copyright-policy/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Copyright Policy
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="footer-col-2"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="col-header"
|
||||||
|
>
|
||||||
|
Best Tutorials
|
||||||
|
</div>
|
||||||
|
<a
|
||||||
|
href="/news/best-python-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Python Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-git-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Git Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-best-linux-tutorials/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Linux Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-javascript-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
JavaScript Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-react-javascript-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
React Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-html-html5-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
HTML Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-css-and-css3-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
CSS Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-sql-database-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
SQL Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-java-8-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Java Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-angular-tutorial-angularjs/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Angular Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-wordpress-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
WordPress Tutorial
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/best-bootstrap-tutorial-responsive-web-design/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Bootstrap Tutorial
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="footer-col-3"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="col-header"
|
||||||
|
>
|
||||||
|
Best Examples
|
||||||
|
</div>
|
||||||
|
<a
|
||||||
|
href="/news/python-example/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Python Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/javascript-example/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
JavaScript Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/react-examples-reactjs/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
React Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/linux-example-bash-command-line/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Linux Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/html-and-html5-example/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
HTML Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/css-example-css3/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
CSS Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/sql-example/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
SQL Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/java-example/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Java Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-best-angular-examples/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Angular Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-best-jquery-examples/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
jQuery Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-best-bootstrap-examples/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Bootstrap Example
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-best-php-examples/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
PHP Example
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="footer-col-4"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="col-header"
|
||||||
|
>
|
||||||
|
Trending Reference
|
||||||
|
</div>
|
||||||
|
<a
|
||||||
|
href="/news/2019-web-developer-roadmap/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
2019 Web Developer Roadmap
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/linux-command-line-bash-tutorial/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Linux Command Line Guide
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-git-reset-and-git-revert/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Git Reset and Git Revert
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-git-merge-and-git-rebase/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Git Merge and Git Rebase
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-javascript-array-methods-map/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
JavaScript Array Map
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-javascript-array-methods-reduce/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
JavaScript Array Reduce
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-javascript-date-and-moment-js/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
JavaScript Date
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-javascript-string-methods-split/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
JavaScript String Split
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/understanding-flexbox-everything-you-need-to-know-b4013d4dc9af/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
CSS Flexbox Guide
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/11-things-i-learned-reading-the-css-grid-specification-fb3983aa5e0/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
CSS Grid Guide
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-linux-creating-a-sudo-user/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Create a Linux Sudo User
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/news/the-ultimate-guide-to-ssh-setting-up-ssh-keys/"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
How to Set Up SSH Keys
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
`;
|
@ -5,6 +5,7 @@
|
|||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
font-family: 'Lato', sans-serif;
|
font-family: 'Lato', sans-serif;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
margin-top: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-container {
|
.footer-container {
|
||||||
|
129
client/src/components/Footer/footerLinks.json
Normal file
129
client/src/components/Footer/footerLinks.json
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"footerLinks": [
|
||||||
|
[
|
||||||
|
{ "to": "/news/about/", "text": "About" },
|
||||||
|
{ "to": "/donate", "text": "Donate", "internal": true },
|
||||||
|
{ "to": "/news/shop/", "text": "Shop" },
|
||||||
|
{
|
||||||
|
"to": "https://www.linkedin.com/school/free-code-camp/people/",
|
||||||
|
"text": "Alumni Network"
|
||||||
|
},
|
||||||
|
{ "to": "https://github.com/freeCodeCamp/", "text": "Open Source" },
|
||||||
|
{ "to": "/news/support/", "text": "Support" },
|
||||||
|
{ "to": "/news/sponsors/", "text": "Sponsors" },
|
||||||
|
{ "to": "/news/academic-honesty-policy/", "text": "Academic Honesty" },
|
||||||
|
{ "to": "/news/code-of-conduct/", "text": "Code of Conduct" },
|
||||||
|
{ "to": "/news/privacy-policy/", "text": "Privacy Policy" },
|
||||||
|
{ "to": "/news/terms-of-service/", "text": "Terms of Service" },
|
||||||
|
{ "to": "/news/copyright-policy/", "text": "Copyright Policy" }
|
||||||
|
],
|
||||||
|
|
||||||
|
[
|
||||||
|
{ "to": "/news/best-python-tutorial/", "text": "Python Tutorial" },
|
||||||
|
{ "to": "/news/best-git-tutorial/", "text": "Git Tutorial" },
|
||||||
|
{ "to": "/news/the-best-linux-tutorials/", "text": "Linux Tutorial" },
|
||||||
|
{
|
||||||
|
"to": "/news/best-javascript-tutorial/",
|
||||||
|
"text": "JavaScript Tutorial"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"to": "/news/best-react-javascript-tutorial/",
|
||||||
|
"text": "React Tutorial"
|
||||||
|
},
|
||||||
|
{ "to": "/news/best-html-html5-tutorial/", "text": "HTML Tutorial" },
|
||||||
|
{ "to": "/news/best-css-and-css3-tutorial/", "text": "CSS Tutorial" },
|
||||||
|
{ "to": "/news/best-sql-database-tutorial/", "text": "SQL Tutorial" },
|
||||||
|
{ "to": "/news/best-java-8-tutorial/", "text": "Java Tutorial" },
|
||||||
|
{
|
||||||
|
"to": "/news/best-angular-tutorial-angularjs/",
|
||||||
|
"text": "Angular Tutorial"
|
||||||
|
},
|
||||||
|
{ "to": "/news/best-wordpress-tutorial/", "text": "WordPress Tutorial" },
|
||||||
|
{
|
||||||
|
"to": "/news/best-bootstrap-tutorial-responsive-web-design/",
|
||||||
|
"text": "Bootstrap Tutorial"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{ "to": "/news/python-example/", "text": "Python Example" },
|
||||||
|
{ "to": "/news/javascript-example/", "text": "JavaScript Example" },
|
||||||
|
{ "to": "/news/react-examples-reactjs/", "text": "React Example" },
|
||||||
|
{
|
||||||
|
"to": "/news/linux-example-bash-command-line/",
|
||||||
|
"text": "Linux Example"
|
||||||
|
},
|
||||||
|
{ "to": "/news/html-and-html5-example/", "text": "HTML Example" },
|
||||||
|
{ "to": "/news/css-example-css3/", "text": "CSS Example" },
|
||||||
|
{ "to": "/news/sql-example/", "text": "SQL Example" },
|
||||||
|
{ "to": "/news/java-example/", "text": "Java Example" },
|
||||||
|
{ "to": "/news/the-best-angular-examples/", "text": "Angular Example" },
|
||||||
|
{ "to": "/news/the-best-jquery-examples/", "text": "jQuery Example" },
|
||||||
|
{
|
||||||
|
"to": "/news/the-best-bootstrap-examples/",
|
||||||
|
"text": "Bootstrap Example"
|
||||||
|
},
|
||||||
|
{ "to": "/news/the-best-php-examples/", "text": "PHP Example" }
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"to": "/news/2019-web-developer-roadmap/",
|
||||||
|
"text": "2019 Web Developer Roadmap"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/linux-command-line-bash-tutorial/",
|
||||||
|
"text": "Linux Command Line Guide"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-git-reset-and-git-revert/",
|
||||||
|
"text": "Git Reset and Git Revert"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-git-merge-and-git-rebase/",
|
||||||
|
"text": "Git Merge and Git Rebase"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-javascript-array-methods-map/",
|
||||||
|
"text": "JavaScript Array Map"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-javascript-array-methods-reduce/",
|
||||||
|
"text": "JavaScript Array Reduce"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-javascript-date-and-moment-js/",
|
||||||
|
"text": "JavaScript Date"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-javascript-string-methods-split/",
|
||||||
|
"text": "JavaScript String Split"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/understanding-flexbox-everything-you-need-to-know-b4013d4dc9af/",
|
||||||
|
"text": "CSS Flexbox Guide"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/11-things-i-learned-reading-the-css-grid-specification-fb3983aa5e0/",
|
||||||
|
"text": "CSS Grid Guide"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-linux-creating-a-sudo-user/",
|
||||||
|
"text": "Create a Linux Sudo User"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"to": "/news/the-ultimate-guide-to-ssh-setting-up-ssh-keys/",
|
||||||
|
"text": "How to Set Up SSH Keys"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
@ -2,6 +2,7 @@ import React from 'react';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
import Link from '../helpers/Link';
|
import Link from '../helpers/Link';
|
||||||
|
import FootCol from './FooterCol';
|
||||||
|
|
||||||
import './footer.css';
|
import './footer.css';
|
||||||
|
|
||||||
@ -36,169 +37,16 @@ function Footer() {
|
|||||||
<p>
|
<p>
|
||||||
Donations to freeCodeCamp go toward our education initiatives, and
|
Donations to freeCodeCamp go toward our education initiatives, and
|
||||||
help pay for servers, services, and staff. You can
|
help pay for servers, services, and staff. You can
|
||||||
<Link
|
<Link className='inline' to='/donate'>
|
||||||
className='inline'
|
|
||||||
external={true}
|
|
||||||
to='https://freecodecamp.org/donate'
|
|
||||||
>
|
|
||||||
make a tax-deductible donation here
|
make a tax-deductible donation here
|
||||||
</Link>
|
</Link>
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className='footer-col-1'>
|
<FootCol colNum={1} title={'Our Nonprofit'} />
|
||||||
<div className='col-header'>Our Nonprofit</div>
|
<FootCol colNum={2} title={'Best Tutorials'} />
|
||||||
<Link to='https://www.freecodecamp.org/news/about-freecodecamp/'>
|
<FootCol colNum={3} title={'Best Examples'} />
|
||||||
About
|
<FootCol colNum={4} title={'Trending Reference'} />
|
||||||
</Link>
|
|
||||||
<Link to='https://freecodecamp.org/donate'>Donate</Link>
|
|
||||||
<Link external={true} to='https://www.freecodecamp.org/news/shop/'>
|
|
||||||
Shop
|
|
||||||
</Link>
|
|
||||||
<Link
|
|
||||||
external={true}
|
|
||||||
to='https://www.linkedin.com/school/free-code-camp/people/'
|
|
||||||
>
|
|
||||||
Alumni Network
|
|
||||||
</Link>
|
|
||||||
<Link to='https://github.com/freeCodeCamp/'>Open Source</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/support/'>Support</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/our-sponsors/'>
|
|
||||||
Sponsors
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/academic-honesty-policy/'>
|
|
||||||
Academic Honesty
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/code-of-conduct/'>
|
|
||||||
Code of Conduct
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/privacy-policy/'>
|
|
||||||
Privacy Policy
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/freecodecamps-terms-of-service/'>
|
|
||||||
Terms of Service
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/copyright-policy/'>
|
|
||||||
Copyright Policy
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
<div className='footer-col-2'>
|
|
||||||
<div className='col-header'>Best Tutorials</div>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-python-tutorial/'>
|
|
||||||
Python Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-git-tutorial/'>
|
|
||||||
Git Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-best-linux-tutorials/'>
|
|
||||||
Linux Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-javascript-tutorial/'>
|
|
||||||
JavaScript Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-react-javascript-tutorial/'>
|
|
||||||
React Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-html-html5-tutorial/'>
|
|
||||||
HTML Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-css-and-css3-tutorial/'>
|
|
||||||
CSS Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-sql-database-tutorial/'>
|
|
||||||
SQL Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-java-8-tutorial/'>
|
|
||||||
Java Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-angular-tutorial-angularjs/'>
|
|
||||||
Angular Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-wordpress-tutorial/'>
|
|
||||||
WordPress Tutorial
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/best-bootstrap-tutorial-responsive-web-design/'>
|
|
||||||
Bootstrap Tutorial
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
<div className='footer-col-3'>
|
|
||||||
<div className='col-header'>Best Examples</div>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/python-example/'>
|
|
||||||
Python Example{' '}
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/javascript-example/'>
|
|
||||||
JavaScript Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/react-examples-reactjs/'>
|
|
||||||
React Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/linux-example-bash-command-line/'>
|
|
||||||
Linux Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/html-and-html5-example/'>
|
|
||||||
HTML Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/css-example-css3/'>
|
|
||||||
CSS Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/sql-example/'>
|
|
||||||
SQL Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/java-example/'>
|
|
||||||
Java Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-best-angular-examples/'>
|
|
||||||
Angular Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-best-jquery-examples/'>
|
|
||||||
jQuery Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-best-bootstrap-examples/'>
|
|
||||||
Bootstrap Example
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-best-php-examples/'>
|
|
||||||
PHP Example
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
<div className='footer-col-4'>
|
|
||||||
<div className='col-header'>Trending Reference</div>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/2019-web-developer-roadmap/'>
|
|
||||||
2019 Web Developer Roadmap
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/linux-command-line-bash-tutorial/'>
|
|
||||||
Linux Command Line Guide
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-git-reset-and-git-revert/'>
|
|
||||||
Git Reset and Git Revert
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-git-merge-and-git-rebase/'>
|
|
||||||
Git Merge and Git Rebase
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-javascript-array-methods-map/'>
|
|
||||||
JavaScript Array Map
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-javascript-array-methods-reduce/'>
|
|
||||||
JavaScript Array Reduce
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-javascript-date-and-moment-js/'>
|
|
||||||
JavaScript Date
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-javascript-string-methods-split/'>
|
|
||||||
JavaScript String Split
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/understanding-flexbox-everything-you-need-to-know-b4013d4dc9af/'>
|
|
||||||
CSS Flexbox Guide
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/11-things-i-learned-reading-the-css-grid-specification-fb3983aa5e0/'>
|
|
||||||
CSS Grid Guide
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-linux-creating-a-sudo-user/'>
|
|
||||||
Create a Linux Sudo User
|
|
||||||
</Link>
|
|
||||||
<Link to='https://www.freecodecamp.org/news/the-ultimate-guide-to-ssh-setting-up-ssh-keys/'>
|
|
||||||
How to Set Up SSH Keys
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -75,12 +75,12 @@ exports[`<Block expanded snapshot: block-expanded 1`] = `
|
|||||||
<span
|
<span
|
||||||
className="badge map-badge"
|
className="badge map-badge"
|
||||||
/>
|
/>
|
||||||
<Unknown
|
<mockConstructor
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
to="/super-block-one/block-a"
|
to="/super-block-one/block-a"
|
||||||
>
|
>
|
||||||
Introduction to Block A
|
Introduction to Block A
|
||||||
</Unknown>
|
</mockConstructor>
|
||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
className="map-challenge-title map-challenge-title-completed"
|
className="map-challenge-title map-challenge-title-completed"
|
||||||
@ -98,12 +98,12 @@ exports[`<Block expanded snapshot: block-expanded 1`] = `
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<Unknown
|
<mockConstructor
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
to="/super-block-one/block-a/challenge-one"
|
to="/super-block-one/block-a/challenge-one"
|
||||||
>
|
>
|
||||||
Challenge One
|
Challenge One
|
||||||
</Unknown>
|
</mockConstructor>
|
||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
className="map-challenge-title"
|
className="map-challenge-title"
|
||||||
@ -121,12 +121,12 @@ exports[`<Block expanded snapshot: block-expanded 1`] = `
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<Unknown
|
<mockConstructor
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
to="/super-block-one/block-a/challenge-two"
|
to="/super-block-one/block-a/challenge-two"
|
||||||
>
|
>
|
||||||
Challenge Two
|
Challenge Two
|
||||||
</Unknown>
|
</mockConstructor>
|
||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
className="map-challenge-title"
|
className="map-challenge-title"
|
||||||
@ -144,12 +144,12 @@ exports[`<Block expanded snapshot: block-expanded 1`] = `
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<Unknown
|
<mockConstructor
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
to="/super-block-one/block-a/challenge-one"
|
to="/super-block-one/block-a/challenge-one"
|
||||||
>
|
>
|
||||||
Challenge One
|
Challenge One
|
||||||
</Unknown>
|
</mockConstructor>
|
||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
className="map-challenge-title map-challenge-title-completed"
|
className="map-challenge-title map-challenge-title-completed"
|
||||||
@ -167,12 +167,12 @@ exports[`<Block expanded snapshot: block-expanded 1`] = `
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<Unknown
|
<mockConstructor
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
to="/super-block-one/block-a/challenge-two"
|
to="/super-block-one/block-a/challenge-two"
|
||||||
>
|
>
|
||||||
Challenge Two
|
Challenge Two
|
||||||
</Unknown>
|
</mockConstructor>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
25
client/src/components/helpers/Link.test.js
Normal file
25
client/src/components/helpers/Link.test.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* global expect */
|
||||||
|
import React from 'react';
|
||||||
|
import renderer from 'react-test-renderer';
|
||||||
|
import 'jest-dom/extend-expect';
|
||||||
|
|
||||||
|
import Link from './Link';
|
||||||
|
|
||||||
|
describe('<Link />', () => {
|
||||||
|
const externalLink = renderer
|
||||||
|
.create(<Link external={true} to='/home' />)
|
||||||
|
.toJSON();
|
||||||
|
const gatsbyLink = renderer.create(<Link to='/home' />).toJSON();
|
||||||
|
|
||||||
|
it('renders to the DOM', () => {
|
||||||
|
expect(gatsbyLink).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets target for external links', () => {
|
||||||
|
expect(externalLink.props.target).toEqual('_blank');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not specify target in gatsbyLink', () => {
|
||||||
|
expect(gatsbyLink.props.target).toBeFalsy();
|
||||||
|
});
|
||||||
|
});
|
@ -19,9 +19,12 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.default-layout {
|
.default-layout {
|
||||||
display: block;
|
|
||||||
margin-top: var(--header-height);
|
margin-top: var(--header-height);
|
||||||
background: var(--secondary-background);
|
background: var(--secondary-background);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: var(--header-height);
|
||||||
|
min-height: calc(100vh - var(--header-height));
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
@ -327,3 +330,7 @@ pre {
|
|||||||
.has-success.checkbox-inline label {
|
.has-success.checkbox-inline label {
|
||||||
color: var(--highlight-color);
|
color: var(--highlight-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.panel-primary {
|
||||||
|
border-color: var(--primary-color);
|
||||||
|
}
|
||||||
|
@ -1,213 +0,0 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import Helmet from 'react-helmet';
|
|
||||||
import { Grid, Col, Row } from '@freecodecamp/react-bootstrap';
|
|
||||||
|
|
||||||
import { Link, Spacer } from '../components/helpers';
|
|
||||||
|
|
||||||
import './common-pages.css';
|
|
||||||
|
|
||||||
/* eslint-disable max-len */
|
|
||||||
const AboutPage = () => {
|
|
||||||
return (
|
|
||||||
<Fragment>
|
|
||||||
<Helmet title='About the freeCodeCamp community | freeCodeCamp.org' />
|
|
||||||
<Spacer />
|
|
||||||
<Grid>
|
|
||||||
<Row>
|
|
||||||
<Col
|
|
||||||
className='questions'
|
|
||||||
md={6}
|
|
||||||
mdOffset={3}
|
|
||||||
sm={10}
|
|
||||||
smOffset={1}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<h2 className='text-center'>Frequently Asked Questions</h2>
|
|
||||||
<hr />
|
|
||||||
<h4>What is freeCodeCamp?</h4>
|
|
||||||
<p>
|
|
||||||
We’re a community that helps you learn to code, then get
|
|
||||||
experience by contributing to open source projects used by
|
|
||||||
nonprofits.
|
|
||||||
</p>
|
|
||||||
<h4>How can you help me learn to code?</h4>
|
|
||||||
<p>
|
|
||||||
You'll learn to code by completing coding challenges and building
|
|
||||||
projects. You'll also earn verified certifications along the way.
|
|
||||||
We also encourage you to join a study group in your city so you
|
|
||||||
can code in-person with other people.
|
|
||||||
</p>
|
|
||||||
<h4>Is freeCodeCamp really free?</h4>
|
|
||||||
<p>Yes. Every aspect of freeCodeCamp is 100% free.</p>
|
|
||||||
<h4>Can freeCodeCamp help me get a job as a software developer?</h4>
|
|
||||||
<p>
|
|
||||||
Yes. Every year, thousands of people who join the freeCodeCamp
|
|
||||||
community get their first software developer job. If you're
|
|
||||||
curious, you can{' '}
|
|
||||||
<Link to='https://www.linkedin.com/school/4831032/alumni/'>
|
|
||||||
browse our alumni network on LinkedIn here
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>How big is the freeCodeCamp community?</h4>
|
|
||||||
<p>
|
|
||||||
If you add up all the people who use our learning platform, read
|
|
||||||
our <Link to='/news'>news articles</Link>, watch our{' '}
|
|
||||||
<Link to='https://youtube.com/freecodecamp'>YouTube channel</Link>
|
|
||||||
, and post on{' '}
|
|
||||||
<Link external={true} to='/forum'>
|
|
||||||
our forum
|
|
||||||
</Link>
|
|
||||||
, each month we help millions of people learn about coding and
|
|
||||||
technology.
|
|
||||||
</p>
|
|
||||||
<h4>Is freeCodeCamp a nonprofit?</h4>
|
|
||||||
<p>
|
|
||||||
Yes, we are a 501(c)(3){' '}
|
|
||||||
<Link to='/donate'>donor-supported public charity</Link>. You can{' '}
|
|
||||||
<Link to='https://s3.amazonaws.com/freecodecamp/Free+Code+Camp+Inc+IRS+Determination+Letter.pdf'>
|
|
||||||
download our IRS Determination Letter here
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
Does freeCodeCamp accept donations in Bitcoin or other crypto
|
|
||||||
currencies?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Yes. Our cryptographically signed wallet details are{' '}
|
|
||||||
<Link to='https://twitter.com/freeCodeCamp/status/939512108449959936'>
|
|
||||||
here
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
How long will it take me to finish each of freeCodeCamp's
|
|
||||||
certifications?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Each certification takes around 300 hours of dedicated learning.
|
|
||||||
Some people may take longer. These certifications are completely
|
|
||||||
self-paced, so take as long as you need.
|
|
||||||
</p>
|
|
||||||
<h4>Is freeCodeCamp a coding bootcamp?</h4>
|
|
||||||
<p>
|
|
||||||
No. A lot of coding bootcamps use freeCodeCamp as part of their
|
|
||||||
curriculum, though.
|
|
||||||
</p>
|
|
||||||
<h4>Is freeCodeCamp a replacement for a 4-year degree?</h4>
|
|
||||||
<p>
|
|
||||||
No. Please don’t drop out of college just to pursue freeCodeCamp.
|
|
||||||
You can pursue both concurrently. Even though you don’t need a
|
|
||||||
4-year degree to work as a software developer, it still helps a
|
|
||||||
lot.
|
|
||||||
</p>
|
|
||||||
<h4>Should I complete all of the coding challenges in order?</h4>
|
|
||||||
<p>
|
|
||||||
We’ve put a lot of thought into how we introduce concepts. But
|
|
||||||
you’re free to jump around.
|
|
||||||
</p>
|
|
||||||
<h4>Do I have to use CodePen for the front end projects?</h4>
|
|
||||||
<p>
|
|
||||||
As long as your code is publicly viewable somewhere on the
|
|
||||||
internet, and you have a live demo, you can use whatever tools you
|
|
||||||
want.
|
|
||||||
</p>
|
|
||||||
<h4>How did freeCodeCamp get started?</h4>
|
|
||||||
<p>
|
|
||||||
<Link to='https://www.twitter.com/ossia'>Quincy</Link> started the
|
|
||||||
freeCodeCamp community in 2014. He is now just one of thousands of
|
|
||||||
active contributors.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
I'm a teacher. Is freeCodeCamp an appropriate resource for my
|
|
||||||
className?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Yes. Many high school, college, and adult ed programs incorporate
|
|
||||||
freeCodeCamp into their coursework. We're open source, so no
|
|
||||||
license or special permission from us is necessary. We're even
|
|
||||||
building special tools for teachers.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
Can I live-stream myself working on freeCodeCamp challenges and
|
|
||||||
projects? Can I blog about how I solved them?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Yes. We welcome this. Also, don't be shy about "spoiling" projects
|
|
||||||
or challenges. The solutions to all of these challenges are
|
|
||||||
already all over the internet.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
Can I create apps or tools based around the freeCodeCamp community
|
|
||||||
and platform?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Yes. freeCodeCamp is open source (BSD-3 license), and most
|
|
||||||
non-sensitive freeCodeCamp data is publicly available. But you
|
|
||||||
must make it clear that you don't represent freeCodeCamp itself,
|
|
||||||
and that your project is not officially endorsed by freeCodeCamp.
|
|
||||||
</p>
|
|
||||||
<h4>Does freeCodeCamp have a mobile app?</h4>
|
|
||||||
<p>
|
|
||||||
You can learn on the go by listening to the{' '}
|
|
||||||
<Link to='https://podcast.freecodecamp.org'>
|
|
||||||
freeCodeCamp Podcast
|
|
||||||
</Link>{' '}
|
|
||||||
or watching{' '}
|
|
||||||
<Link to='https://youtube.com/freecodecamp'>
|
|
||||||
freeCodeCamp's YouTube channel
|
|
||||||
</Link>
|
|
||||||
. And if you want a mobile app designed specifically for learning
|
|
||||||
to code, we recommend Grasshopper. It's free and designed by a
|
|
||||||
freeCodeCamp contributor and her team. You can download it on{' '}
|
|
||||||
<Link to='https://itunes.apple.com/us/app/id1354133284'>iOS</Link>{' '}
|
|
||||||
or{' '}
|
|
||||||
<Link to='https://play.google.com/store/apps/details?id=com.area120.grasshopper&hl=en'>
|
|
||||||
Android
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>Can I get a job at freeCodeCamp?</h4>
|
|
||||||
<p>
|
|
||||||
We're a small donor-supported nonprofit. We've hired several
|
|
||||||
prominent contributors from within the freeCodeCamp community, but
|
|
||||||
you're much more likely to get a job at{' '}
|
|
||||||
<Link to='https://www.linkedin.com/school/free-code-camp/alumni/'>
|
|
||||||
one of the hundreds of companies
|
|
||||||
</Link>{' '}
|
|
||||||
where freeCodeCamp alumni work.
|
|
||||||
</p>
|
|
||||||
<h4>Can my company advertise on freeCodeCamp?</h4>
|
|
||||||
<p>We don’t show ads.</p>
|
|
||||||
<h4>How can I support the freeCodeCamp community?</h4>
|
|
||||||
<p>
|
|
||||||
You can{' '}
|
|
||||||
<Link to='/donate'>
|
|
||||||
set up a monthly donation to our nonprofit that you can afford
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
Where can I get technical support for using the freeCodeCamp.org
|
|
||||||
platform?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Here are{' '}
|
|
||||||
<Link to='/support'>
|
|
||||||
answers to common technical support questions
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
<Spacer size={2} />
|
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
/* eslint-enable max-len */
|
|
||||||
|
|
||||||
AboutPage.displayName = 'AboutPage';
|
|
||||||
|
|
||||||
export default AboutPage;
|
|
@ -1,29 +0,0 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import { Grid } from '@freecodecamp/react-bootstrap';
|
|
||||||
import Helmet from 'react-helmet';
|
|
||||||
|
|
||||||
import Spacer from '../components/helpers/Spacer';
|
|
||||||
import FullWidthRow from '../components/helpers/FullWidthRow';
|
|
||||||
import HonestyPolicy from '../resources/honesty-policy';
|
|
||||||
|
|
||||||
function AcademicHonesty() {
|
|
||||||
return (
|
|
||||||
<Fragment>
|
|
||||||
<Helmet>
|
|
||||||
<title>Academic Honesty Policy | freeCodeCamp.org</title>
|
|
||||||
</Helmet>
|
|
||||||
<Grid>
|
|
||||||
<FullWidthRow>
|
|
||||||
<Spacer />
|
|
||||||
<h2 className='text-center'>Academic Honesty Policy</h2>
|
|
||||||
<hr />
|
|
||||||
<HonestyPolicy />
|
|
||||||
</FullWidthRow>
|
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
AcademicHonesty.displayName = 'AcademicHonesty';
|
|
||||||
|
|
||||||
export default AcademicHonesty;
|
|
@ -78,8 +78,7 @@ class AcceptPrivacyTerms extends Component {
|
|||||||
<Row>
|
<Row>
|
||||||
<Col xs={12}>
|
<Col xs={12}>
|
||||||
<div className='text-center'>
|
<div className='text-center'>
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<h3>
|
<h3>
|
||||||
Please review our updated privacy policy and the terms of
|
Please review our updated privacy policy and the terms of
|
||||||
service.
|
service.
|
||||||
@ -103,7 +102,7 @@ class AcceptPrivacyTerms extends Component {
|
|||||||
onChange={this.createHandleChange('termsOfService')}
|
onChange={this.createHandleChange('termsOfService')}
|
||||||
>
|
>
|
||||||
I accept the{' '}
|
I accept the{' '}
|
||||||
<Link external={true} to='/terms-of-service'>
|
<Link external={true} to='/news/terms-of-service'>
|
||||||
terms of service
|
terms of service
|
||||||
</Link>{' '}
|
</Link>{' '}
|
||||||
(required)
|
(required)
|
||||||
@ -121,7 +120,7 @@ class AcceptPrivacyTerms extends Component {
|
|||||||
onChange={this.createHandleChange('privacyPolicy')}
|
onChange={this.createHandleChange('privacyPolicy')}
|
||||||
>
|
>
|
||||||
I accept the{' '}
|
I accept the{' '}
|
||||||
<Link external={true} to='/privacy-policy'>
|
<Link external={true} to='/news/privacy-policy'>
|
||||||
privacy policy
|
privacy policy
|
||||||
</Link>{' '}
|
</Link>{' '}
|
||||||
(required)
|
(required)
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import Helmet from 'react-helmet';
|
|
||||||
import { Grid, Col, Row } from '@freecodecamp/react-bootstrap';
|
|
||||||
|
|
||||||
import { Link, Spacer } from '../components/helpers';
|
|
||||||
|
|
||||||
const CodeOfConductPage = () => {
|
|
||||||
return (
|
|
||||||
<Fragment>
|
|
||||||
<Helmet title='Code of Conduct | freeCodeCamp.org' />
|
|
||||||
<Spacer />
|
|
||||||
<Grid>
|
|
||||||
<Row>
|
|
||||||
<Col md={6} mdOffset={3} sm={10} smOffset={1} xs={12}>
|
|
||||||
<h2 className='text-center'>Code of Conduct</h2>
|
|
||||||
<hr />
|
|
||||||
<p>
|
|
||||||
freeCodeCamp is a friendly place to learn to code. We’re committed
|
|
||||||
to keeping it that way.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
By using freeCodeCamp, you agree that you'll follow this code of
|
|
||||||
conduct.
|
|
||||||
</p>
|
|
||||||
<p>In short: Be nice. No harassment, trolling, or spamming.</p>
|
|
||||||
<ul style={{ 'margin-top': '0', 'margin-bottom': '10px' }}>
|
|
||||||
<li>
|
|
||||||
<strong>Harassment</strong> includes sexual language and
|
|
||||||
imagery, deliberate intimidation, stalking, name-calling,
|
|
||||||
unwelcome attention, libel, and any malicious hacking or social
|
|
||||||
engineering. freeCodeCamp should be a harassment-free experience
|
|
||||||
for everyone, regardless of gender, gender identity and
|
|
||||||
expression, age, sexual orientation, disability, physical
|
|
||||||
appearance, body size, race, national origin, or religion (or
|
|
||||||
lack thereof).
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<strong>Trolling</strong> includes posting inflammatory comments
|
|
||||||
to provoke an emotional response or disrupt discussions.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<strong>Spamming</strong> includes posting off-topic messages to
|
|
||||||
disrupt discussions, promoting a product, soliciting donations,
|
|
||||||
advertising a job / internship / gig, or flooding discussions
|
|
||||||
with files or text.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<p>
|
|
||||||
If you see someone harass, troll, or spam anywhere in the
|
|
||||||
freeCodeCamp community (forum, chat, YouTube, Facebook, etc.),
|
|
||||||
notify us in the{' '}
|
|
||||||
<Link to='https://gitter.im/freecodecamp/admin'>
|
|
||||||
admin chat room
|
|
||||||
</Link>{' '}
|
|
||||||
- preferably with a screen shot of the offense. The moderator team
|
|
||||||
will take any action we deem appropriate, up to and including
|
|
||||||
banning the offender from freeCodeCamp.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Also, no bots are allowed in the freeCodeCamp community without
|
|
||||||
prior written permission from{' '}
|
|
||||||
<Link to='https://gitter.im/quincylarson'>Quincy Larson</Link>.
|
|
||||||
</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
CodeOfConductPage.displayName = 'CodeOfConductPage';
|
|
||||||
|
|
||||||
export default CodeOfConductPage;
|
|
@ -30,8 +30,7 @@ const IndexPage = () => (
|
|||||||
<Helmet>
|
<Helmet>
|
||||||
<title>Learn to code | freeCodeCamp.org</title>
|
<title>Learn to code | freeCodeCamp.org</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<Grid className='text-center'>
|
<Grid className='text-center'>
|
||||||
<Row>
|
<Row>
|
||||||
<h1 className='big-heading'>Learn to code for free.</h1>
|
<h1 className='big-heading'>Learn to code for free.</h1>
|
||||||
@ -81,8 +80,7 @@ const IndexPage = () => (
|
|||||||
<p className='large-p'>Get experience by coding for nonprofits.</p>
|
<p className='large-p'>Get experience by coding for nonprofits.</p>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<BigCallToAction />
|
<BigCallToAction />
|
||||||
<Spacer />
|
<Spacer />
|
||||||
<h2>As featured in:</h2>
|
<h2>As featured in:</h2>
|
||||||
@ -234,8 +232,7 @@ const IndexPage = () => (
|
|||||||
</p>
|
</p>
|
||||||
<Spacer />
|
<Spacer />
|
||||||
<BigCallToAction />
|
<BigCallToAction />
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
|
@ -38,8 +38,7 @@ const IndexPage = ({
|
|||||||
<LearnLayout>
|
<LearnLayout>
|
||||||
<div className='learn-page-wrapper'>
|
<div className='learn-page-wrapper'>
|
||||||
<Helmet title='Learn | freeCodeCamp.org' />
|
<Helmet title='Learn | freeCodeCamp.org' />
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<h1 className='text-center'>Welcome to the freeCodeCamp curriculum</h1>
|
<h1 className='text-center'>Welcome to the freeCodeCamp curriculum</h1>
|
||||||
<p>
|
<p>
|
||||||
We have thousands of coding lessons to help you improve your skills.
|
We have thousands of coding lessons to help you improve your skills.
|
||||||
|
@ -1,267 +0,0 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import Helmet from 'react-helmet';
|
|
||||||
import { Grid, Col, Row } from '@freecodecamp/react-bootstrap';
|
|
||||||
|
|
||||||
import { Link, Spacer } from '../components/helpers';
|
|
||||||
|
|
||||||
import './common-pages.css';
|
|
||||||
|
|
||||||
const PrivacyPolicyPage = () => {
|
|
||||||
return (
|
|
||||||
<Fragment>
|
|
||||||
<Helmet title='Privacy Policy | freeCodeCamp.org' />
|
|
||||||
<Spacer />
|
|
||||||
<Grid>
|
|
||||||
<Row>
|
|
||||||
<Col
|
|
||||||
className='questions'
|
|
||||||
md={6}
|
|
||||||
mdOffset={3}
|
|
||||||
sm={10}
|
|
||||||
smOffset={1}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<h2 className='text-center'>
|
|
||||||
freeCodeCamp.org Privacy Policy: Questions and Answers
|
|
||||||
</h2>
|
|
||||||
<hr />
|
|
||||||
<p>
|
|
||||||
We take your privacy seriously. And we give you full control over
|
|
||||||
your data.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
freeCodeCamp doesn't show you ads or sell your data to anyone. Our
|
|
||||||
nonprofit is instead supported by thousands of donors - many of
|
|
||||||
whom have learned to code on freeCodeCamp, gotten developer jobs,
|
|
||||||
and want to help you do the same.
|
|
||||||
</p>
|
|
||||||
<h4>Does freeCodeCamp collect anonymous data?</h4>
|
|
||||||
<p>
|
|
||||||
When you use use the freeCodeCamp.org website, we may collect some
|
|
||||||
anonymous data so we can understand how people are using
|
|
||||||
freeCodeCamp, and basic facts like which browser they're using.
|
|
||||||
</p>
|
|
||||||
<h4>In what situations does freeCodeCamp collect personal data?</h4>
|
|
||||||
<p>
|
|
||||||
If you create a freeCodeCamp account, we will collect some
|
|
||||||
personal data so we can follow your progress toward earning
|
|
||||||
developer certifications, and so you can customize your developer
|
|
||||||
portfolio.
|
|
||||||
</p>
|
|
||||||
<h4>Can I use freeCodeCamp anonymously?</h4>
|
|
||||||
<p>
|
|
||||||
Yes. You can access all of freeCodeCamp's articles, videos,
|
|
||||||
podcasts, and interactive coding lessons without creating an
|
|
||||||
account. And if you don't create an account, we won't collect any
|
|
||||||
personal data about you.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
This said, if you want to earn freeCodeCamp's developer
|
|
||||||
certifications, you will need to create an account so we can
|
|
||||||
follow your progress through our curriculum.
|
|
||||||
</p>
|
|
||||||
<h4>If I create an account, what data will you collect?</h4>
|
|
||||||
<p>
|
|
||||||
We'll ask you for your email address so you can use it to sign
|
|
||||||
into freeCodeCamp, and so we can send you announcements and
|
|
||||||
helpful programming-related links.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
When you create an account on freeCodeCamp, we publish a developer
|
|
||||||
portfolio page for you on freeCodeCamp.org. If you want, you can
|
|
||||||
add details about yourself, like your name, geographic location,
|
|
||||||
and a link to your personal website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
By default, your developer portfolio will show which freeCodeCamp
|
|
||||||
lessons you have completed and when you completed them. It will
|
|
||||||
also show your code solutions for our algorithm challenges, links
|
|
||||||
any projects you've submitted, and any developer certifications
|
|
||||||
you've earned.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You have full control over your data, and can set any of these
|
|
||||||
details to private, or delete them at any time.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
You said I have full control over my data. What does that mean,
|
|
||||||
exactly?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
It means that at any time, you can download all of your data in a
|
|
||||||
convenient JSON format.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You can control which data shows up on your developer portfolio.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You can also delete any of your personal data, or even delete your
|
|
||||||
entire account.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
When I delete my personal data from freeCodeCamp, is it really
|
|
||||||
deleted from freeCodeCamp's servers?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Yes. When you delete personal data from freeCodeCamp, we
|
|
||||||
immediately delete it from our servers.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
We make emergency backups of our database every day, and we delete
|
|
||||||
each of these backups after a few days. So within a few days, your
|
|
||||||
personal data won't even exist in our backups.
|
|
||||||
</p>
|
|
||||||
<h4>Does freeCodeCamp meet Europe's GDPR privacy regulations?</h4>
|
|
||||||
<p>
|
|
||||||
Yes. freeCodeCamp respects the privacy rights covered by
|
|
||||||
Regulation (EU) 2016/679 - the European Union's General Data
|
|
||||||
Protection Regulation (GDPR). Our legal team has studied the GDPR,
|
|
||||||
and we've built new features to comply with all of its rules.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Even though GDPR only protects European citizens, freeCodeCamp is
|
|
||||||
extending these protections to everyone all over the world.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
freeCodeCamp has organized all the information that GDPR requires
|
|
||||||
us to give you into this easy-to-read question-and-answer format.
|
|
||||||
Our goal is to inform you of your specific rights to access data,
|
|
||||||
erase it, port it, rectify it, and object to automated
|
|
||||||
decision-making.
|
|
||||||
</p>
|
|
||||||
<h4>Who has access to my personal data?</h4>
|
|
||||||
<p>
|
|
||||||
Even though freeCodeCamp has thousands of volunteers, none of
|
|
||||||
those people have access to your private data.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
freeCodeCamp has a few full-time staff, some of whom work directly
|
|
||||||
on our databases. They have the ability to view your private data,
|
|
||||||
but only do so when providing you with technical support.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
As for the personal data that you choose to share on your
|
|
||||||
developer portfolio, anyone on the internet can see it by
|
|
||||||
navigating to your developer portfolio's public URL. Again, we've
|
|
||||||
given you full control over what parts of your developer profile
|
|
||||||
are public.
|
|
||||||
</p>
|
|
||||||
<h4>What is freeCodeCamp's Donor Privacy Policy?</h4>
|
|
||||||
<p>
|
|
||||||
freeCodeCamp will not share our donors' names or personal
|
|
||||||
information with anyone outside of our nonprofit organization's
|
|
||||||
team. Donors may choose to display that they are donating to
|
|
||||||
freeCodeCamp on their freeCodeCamp profile. Otherwise, donor
|
|
||||||
information will only be used to process donations and send email
|
|
||||||
confirmations. This policy applies to any written, verbal, or
|
|
||||||
electronic communication.
|
|
||||||
</p>
|
|
||||||
<h4>Can any other organizations access my data?</h4>
|
|
||||||
<p>
|
|
||||||
We don't sell your data to anyone. In order to provide service to
|
|
||||||
you, your data does pass through some other services. All of these
|
|
||||||
companies are based in the United States.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
We use Amazon Web Services, Azure, and mLab for our servers and
|
|
||||||
databases. You can read the privacy policy for{' '}
|
|
||||||
<Link to='https://aws.amazon.com/privacy/'>
|
|
||||||
Amazon Web Services
|
|
||||||
</Link>
|
|
||||||
,{' '}
|
|
||||||
<Link to='https://privacy.microsoft.com/en-us/privacystatement'>
|
|
||||||
Microsoft Azure
|
|
||||||
</Link>
|
|
||||||
, and{' '}
|
|
||||||
<Link to='https://mlab.com/company/legal/privacy/'>mLab</Link>.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
We use Stripe and PayPal to process donations. You can read the
|
|
||||||
privacy policy for{' '}
|
|
||||||
<Link to='https://stripe.com/us/privacy'>Stripe</Link> and for{' '}
|
|
||||||
<Link to='https://www.paypal.com/us/webapps/mpp/ua/privacy-full'>
|
|
||||||
PayPal
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
We use the CloudFlare and Netlify Content Delivery Networks so
|
|
||||||
that freeCodeCamp is fast in all parts of the world. You can read
|
|
||||||
the privacy policy for{' '}
|
|
||||||
<Link to='https://www.cloudflare.com/privacypolicy/'>
|
|
||||||
CloudFlare
|
|
||||||
</Link>{' '}
|
|
||||||
and <Link to='https://www.netlify.com/privacy/'>Netlify</Link>{' '}
|
|
||||||
online.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
We use Auth0 to sign you into freeCodeCamp. You can read{' '}
|
|
||||||
<Link to='https://auth0.com/privacy'>
|
|
||||||
the privacy policy for Auth0 online
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
We use Google Analytics to help us understand the demographics of
|
|
||||||
our community and how people are using freeCodeCamp. You can opt
|
|
||||||
out of Google Analytics on freeCodeCamp by{' '}
|
|
||||||
<Link to='https://tools.google.com/dlpage/gaoptout'>
|
|
||||||
installing this browser plugin
|
|
||||||
</Link>
|
|
||||||
. You can read{' '}
|
|
||||||
<Link to='https://www.google.com/analytics/terms/'>
|
|
||||||
the privacy policy for Google Analytics online
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
For your convenience, we give you the option to sign in using
|
|
||||||
GitHub, Google, or Facebook if you don't want to use your email
|
|
||||||
address to sign in. If you choose to use one of these sign in
|
|
||||||
options, some of your freeCodeCamp data will be shared with these
|
|
||||||
companies. You can read{' '}
|
|
||||||
<Link to='https://help.github.com/articles/github-privacy-statement/'>
|
|
||||||
the privacy policy for GitHub
|
|
||||||
</Link>{' '}
|
|
||||||
and for{' '}
|
|
||||||
<Link to='https://policies.google.com/privacy'>Google</Link> and
|
|
||||||
for <Link to='https://www.facebook.com/policy.php'>Facebook</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>I have questions about my privacy on freeCodeCamp.</h4>
|
|
||||||
<p>
|
|
||||||
We're happy to answer them. Email us at{' '}
|
|
||||||
<a href='mailto:privacy@freecodecamp.org'>
|
|
||||||
privacy@freecodecamp.org
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>How can I find out about changes?</h4>
|
|
||||||
<p>
|
|
||||||
This version of freeCodeCamp’s privacy questions and answers took
|
|
||||||
effect May 25, 2018.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
freeCodeCamp will announce the next version by email. In the
|
|
||||||
meantime, freeCodeCamp may update its contact information in these
|
|
||||||
questions and answers by updating this page
|
|
||||||
(https://www.freecodecamp.org/privacy-policy).
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
freeCodeCamp may change how it announces changes in a future
|
|
||||||
version of these questions and answers.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
That's all, folks. Know your privacy rights, and stay safe out
|
|
||||||
there!
|
|
||||||
</h4>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
PrivacyPolicyPage.displayName = 'PrivacyPolicyPage';
|
|
||||||
|
|
||||||
export default PrivacyPolicyPage;
|
|
@ -11,8 +11,7 @@ function SoftwareResourcesForNonProfits() {
|
|||||||
<Helmet>
|
<Helmet>
|
||||||
<title>Software Resources for Nonprofits | freeCodeCamp.org</title>
|
<title>Software Resources for Nonprofits | freeCodeCamp.org</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<Spacer />
|
<Spacer size={2} />
|
||||||
<Spacer />
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<FullWidthRow>
|
<FullWidthRow>
|
||||||
<h2 className='text-center'>Software Resources for Nonprofits</h2>
|
<h2 className='text-center'>Software Resources for Nonprofits</h2>
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
.sls {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sl {
|
|
||||||
max-height: 80px;
|
|
||||||
background-color: white;
|
|
||||||
padding: 5px;
|
|
||||||
border-radius: 10px;
|
|
||||||
width: 150px;
|
|
||||||
height: 100px;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-bottom: 50px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
@ -1,112 +0,0 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import Helmet from 'react-helmet';
|
|
||||||
import { Grid, Col, Row } from '@freecodecamp/react-bootstrap';
|
|
||||||
|
|
||||||
import { Link, Spacer } from '../components/helpers';
|
|
||||||
|
|
||||||
import './sponsors.css';
|
|
||||||
|
|
||||||
const SponsorsPage = () => {
|
|
||||||
return (
|
|
||||||
<Fragment>
|
|
||||||
<Helmet
|
|
||||||
title={
|
|
||||||
'Sponsors who help freeCodeCamp through financial and in-kind ' +
|
|
||||||
'sponsorship | freeCodeCamp.org'
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<Spacer />
|
|
||||||
<Grid>
|
|
||||||
<Row className='text-center'>
|
|
||||||
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
|
|
||||||
<h2>Financial Sponsors</h2>
|
|
||||||
<h3>
|
|
||||||
These companies give supporting donations to freeCodeCamp.org
|
|
||||||
</h3>
|
|
||||||
<hr />
|
|
||||||
<Row className='sls'>
|
|
||||||
<Link className='sl' to='https://www.class-central.com'>
|
|
||||||
<img
|
|
||||||
alt="Class Central's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/class-central-logo.jpg'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link className='sl' to='https://www.tsugicloud.org'>
|
|
||||||
<img
|
|
||||||
alt="TsugiCloud's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/tsugicloud-logo.png'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</Row>
|
|
||||||
<h2>In-kind sponsors</h2>
|
|
||||||
<h3>These companies donate their services to freeCodeCamp.org</h3>
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<Row className='sls'>
|
|
||||||
<Col md={4} xs={6}>
|
|
||||||
<Link className='sl' to='https://netlify.com'>
|
|
||||||
<img
|
|
||||||
alt="Netlify's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/netlify-logo.jpg'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</Col>
|
|
||||||
<Col md={4} xs={6}>
|
|
||||||
<Link className='sl' to='https://www.mlab.com/'>
|
|
||||||
<img
|
|
||||||
alt="mLab's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/mLab-logo.png'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</Col>
|
|
||||||
<Col md={4} xs={6}>
|
|
||||||
<Link className='sl' to='https://auth0.com'>
|
|
||||||
<img
|
|
||||||
alt="Auth0's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/auth0-logo.png'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</Col>
|
|
||||||
<Col md={4} xs={6}>
|
|
||||||
<Link className='sl' to='https://www.discourse.org/'>
|
|
||||||
<img
|
|
||||||
alt="Discourse's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/discourse-logo.png'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</Col>
|
|
||||||
<Col md={4} xs={6}>
|
|
||||||
<Link className='sl' to='https://algolia.com'>
|
|
||||||
<img
|
|
||||||
alt="Algolia's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/algolia-logo.jpg'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</Col>
|
|
||||||
<Col md={4} xs={6}>
|
|
||||||
<Link className='sl' to='https://cloudflare.com'>
|
|
||||||
<img
|
|
||||||
alt="Cloudflare's logo"
|
|
||||||
className='img-responsive img-center'
|
|
||||||
src='https://s3.amazonaws.com/freecodecamp/cloudflare-logo.jpg'
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
SponsorsPage.displayName = 'SponsorsPage';
|
|
||||||
|
|
||||||
export default SponsorsPage;
|
|
@ -1,126 +0,0 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import Helmet from 'react-helmet';
|
|
||||||
import { Grid, Col, Row } from '@freecodecamp/react-bootstrap';
|
|
||||||
|
|
||||||
import { Link, Spacer } from '../components/helpers';
|
|
||||||
|
|
||||||
import './common-pages.css';
|
|
||||||
|
|
||||||
/* eslint-disable max-len */
|
|
||||||
const SupportPage = () => {
|
|
||||||
return (
|
|
||||||
<Fragment>
|
|
||||||
<Helmet title='Support | freeCodeCamp.org' />
|
|
||||||
<Spacer />
|
|
||||||
<Grid>
|
|
||||||
<Row>
|
|
||||||
<Col
|
|
||||||
className='questions'
|
|
||||||
md={6}
|
|
||||||
mdOffset={3}
|
|
||||||
sm={10}
|
|
||||||
smOffset={1}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<h2 className='text-center'>Common Technical Support Questions</h2>
|
|
||||||
<hr />
|
|
||||||
<h4 id='faq_progress'>
|
|
||||||
I just signed into my account and I don't see any of my past
|
|
||||||
progress.
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
You have created a duplicate account.{' '}
|
|
||||||
<Link to='/settings'>Sign out of your account</Link> and try
|
|
||||||
signing in using a different service (Google, GitHub, Facebook)
|
|
||||||
that you may have used to in the past. Or try signing in using an
|
|
||||||
email address you may have used on freeCodeCamp in the past.
|
|
||||||
</p>
|
|
||||||
<h4 id='faq_donation'>
|
|
||||||
I set up a monthly donation, but I need to update or cancel the
|
|
||||||
monthly recurrence. How can I do this?
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
We are working on a dashboard for you to be able to update or
|
|
||||||
cancel your donations right from your settings page. In the
|
|
||||||
meantime, if you need to update or cancel your monthly donation,
|
|
||||||
forward an invoice you received in your email to{' '}
|
|
||||||
{
|
|
||||||
/* prettier-ignore */
|
|
||||||
}
|
|
||||||
<a href='mailto:team@freecodecamp.org'>
|
|
||||||
team@freecodecamp.org
|
|
||||||
</a>{' '}
|
|
||||||
and tell us what you'd like us to do, and we'll take care of it
|
|
||||||
for you in our database.
|
|
||||||
</p>
|
|
||||||
<h4 id='faq_solutions'>How can I view my past solutions?</h4>
|
|
||||||
<p>
|
|
||||||
We have archived the millions of solutions from prior to June
|
|
||||||
2018, and are working on a sustainable way to host them and future
|
|
||||||
solutions.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You can meanwhile use the download my solution button to view and
|
|
||||||
copy the solution after you complete a challenge, from the local
|
|
||||||
copy on your browser.
|
|
||||||
</p>
|
|
||||||
<h4 id='faq_streak'>My streak on my portfolio is inaccurate.</h4>
|
|
||||||
<p>
|
|
||||||
We are working on fixing a number of issues with the streaks on
|
|
||||||
freeCodeCamp. Thanks for your patience.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
When I go to <Link to='/learn'>Learning Curriculum</Link> the
|
|
||||||
challenges are completely blank.
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Do a hard refresh of the website by pressing control+shift+r in
|
|
||||||
Windows or command+shift+r on Mac/Linux. If that doesn't work, you
|
|
||||||
may need to clear your cookies. Here is{' '}
|
|
||||||
<Link external={true} to='/forum/t/205075'>
|
|
||||||
how to clear specific cookies
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>
|
|
||||||
One of my freeCodeCamp challenges freezes and crashes when I open
|
|
||||||
it.
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
This is caused by an infinite loop in your code editor.{' '}
|
|
||||||
<Link external={true} to='/forum/t/19550'>
|
|
||||||
Here's how to fix this
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h4>I cannot pass a challenge, but I think my code is correct</h4>
|
|
||||||
<p>
|
|
||||||
Some browser extensions can interfere with challenge tests. If you
|
|
||||||
are using any, try disabling them and running the tests again. If
|
|
||||||
the problem remains, click the challenge's 'Ask for Help' button
|
|
||||||
to post on the forum. You will need to create a forum account if
|
|
||||||
you don't already have one.
|
|
||||||
</p>
|
|
||||||
<h4>I have a support question that isn't answered here.</h4>
|
|
||||||
<p>
|
|
||||||
You can ask for help on our forum, and the freeCodeCamp volunteer
|
|
||||||
contributor team will do their best to help you. Note that for
|
|
||||||
privacy and security reasons, they don't have access to your
|
|
||||||
account in the freeCodeCamp database. Also note that you will need
|
|
||||||
to create a forum account if you don't already have one.{' '}
|
|
||||||
<Link external={true} to='/forum/new-topic?category=support'>
|
|
||||||
Click here to ask your support question
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
/* eslint-enable max-len */
|
|
||||||
|
|
||||||
SupportPage.displayName = 'SupportPage';
|
|
||||||
|
|
||||||
export default SupportPage;
|
|
@ -1,428 +0,0 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import Helmet from 'react-helmet';
|
|
||||||
import { Grid, Col, Row } from '@freecodecamp/react-bootstrap';
|
|
||||||
|
|
||||||
import { Link, Spacer } from '../components/helpers';
|
|
||||||
|
|
||||||
import './common-pages.css';
|
|
||||||
|
|
||||||
const TermsOfServicePage = () => {
|
|
||||||
return (
|
|
||||||
<Fragment>
|
|
||||||
<Helmet title='Terms of Service | freeCodeCamp.org' />
|
|
||||||
<Spacer />
|
|
||||||
<Grid>
|
|
||||||
<Row>
|
|
||||||
<Col
|
|
||||||
className='questions'
|
|
||||||
md={6}
|
|
||||||
mdOffset={3}
|
|
||||||
sm={10}
|
|
||||||
smOffset={1}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<h2 className='text-center'>freeCodeCamp's Terms of Service</h2>
|
|
||||||
<hr />
|
|
||||||
<p>
|
|
||||||
These terms govern use of the website{' '}
|
|
||||||
<Link to='https://www.freecodecamp.org'>
|
|
||||||
https://www.freecodecamp.org
|
|
||||||
</Link>
|
|
||||||
. To use the website, you must agree to these terms with Free Code
|
|
||||||
camp, Inc., the nonprofit company that runs the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The company may offer other products and services, under different
|
|
||||||
terms. These terms apply only to use of the website.
|
|
||||||
</p>
|
|
||||||
<h4>Skip to:</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href='#important-terms'>Important Terms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#permission'>Your Permission to Use the Website</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#conditions'>Conditions for Use of the Website</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#acceptable-use'>Acceptable Use</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#content-standards'>Content Standards</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#enforcement'>Enforcement</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#your-account'>Your Account</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#your-content'>Your Content</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#your-responsibility'>Your Responsibility</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#disclaimers'>Disclaimers</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#limits-on-liability'>Limits on Liability</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#feedback'>Feedback</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#termination'>Termination</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#disputes'>Disputes</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#general-terms'>General Terms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#contact'>Contact</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href='#changes'>Changes</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h4 id='important-terms'>Important Terms</h4>
|
|
||||||
<p>
|
|
||||||
These terms include a number of important provisions that affect
|
|
||||||
your rights and responsibilities, such as the disclaimers in
|
|
||||||
Disclaimers, limits on the company’s liability to you in Limits on
|
|
||||||
Liability, your agreement to cover the company for damages caused
|
|
||||||
by your misuse of the website in Responsibility for Your Use, and
|
|
||||||
an agreement to arbitrate disputes in Disputes.
|
|
||||||
</p>
|
|
||||||
<h4 id='permission'>Your Permission to Use the Website</h4>
|
|
||||||
<p>
|
|
||||||
Subject to these terms, the company gives you permission to use
|
|
||||||
the website. That permission isn’t exclusive to you, and you can’t
|
|
||||||
transfer it to anyone else. Others need to agree to these terms
|
|
||||||
for themselves to use the website.
|
|
||||||
</p>
|
|
||||||
<h4 id='conditions'>Conditions for Use of the Website</h4>
|
|
||||||
<p>
|
|
||||||
Your permission to use the website is subject to the following
|
|
||||||
conditions:
|
|
||||||
</p>
|
|
||||||
<p>You must be at least thirteen years old.</p>
|
|
||||||
<p>
|
|
||||||
You may no longer use the website if the company contacts you
|
|
||||||
directly to say that you may not.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You must use the website in accordance with Acceptable Use and
|
|
||||||
Content Standards.
|
|
||||||
</p>
|
|
||||||
<h4 id='acceptable-use'>Acceptable Use</h4>
|
|
||||||
<p>You may not break the law using the website.</p>
|
|
||||||
<p>
|
|
||||||
You may not use or try to use another’s account on the website
|
|
||||||
without their specific permission.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not buy, sell, or otherwise trade in user names or other
|
|
||||||
unique identifiers on the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not send advertisements, chain letters, or other
|
|
||||||
solicitations through the website, or use the website to gather
|
|
||||||
addresses for commercial mailing lists.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not automate access to the website, or monitor the
|
|
||||||
website, such as with a web crawler, browser plug-in or add-on, or
|
|
||||||
other computer program that is not a web browser. You may crawl
|
|
||||||
the website to index it for a publicly available search engine.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not use the website to send e-mail to distribution lists,
|
|
||||||
newsgroups, or group mail aliases.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not falsely imply that you’re affiliated with or endorsed
|
|
||||||
by the company.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not hyperlink to images or other non-hypertext content on
|
|
||||||
the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not remove any marks showing proprietary ownership from
|
|
||||||
materials you download from the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not show any part of the website on other websites with
|
|
||||||
using iframes.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not disable, avoid, or circumvent any security or access
|
|
||||||
restrictions of the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not strain infrastructure of the website with an
|
|
||||||
unreasonable volume of requests, or requests designed to impose an
|
|
||||||
unreasonable load on information systems underlying the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not encourage or help anyone in violation of these terms.
|
|
||||||
</p>
|
|
||||||
<p>You may not impersonate others through the website.</p>
|
|
||||||
<h4 id='content-standards'>Content Standards</h4>
|
|
||||||
<p>
|
|
||||||
You may not submit content to the website that is illegal,
|
|
||||||
offensive, or otherwise harmful to others. This includes content
|
|
||||||
that is harassing, inappropriate, or abusive.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not submit content to the website that violates the law,
|
|
||||||
infringes anyone’s intellectual property rights, violates anyone’s
|
|
||||||
privacy, or breaches agreements you have with others.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not submit content to the website containing malicious
|
|
||||||
computer code, such as computer viruses or spyware.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not submit content to the website as a mere placeholder,
|
|
||||||
to hold a particular address, user name, or other unique
|
|
||||||
identifier.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not use the website to disclose information that you don’t
|
|
||||||
have the right to disclose, like others’ confidential information.
|
|
||||||
</p>
|
|
||||||
<h4 id='enforcement'>Enforcement</h4>
|
|
||||||
<p>
|
|
||||||
The company may investigate and prosecute violations of these
|
|
||||||
terms to the fullest legal extent. The company may notify and
|
|
||||||
cooperate with law enforcement authorities in prosecuting
|
|
||||||
violations of the law and these terms.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The company reserves the right to change, redact, and delete
|
|
||||||
content on the website for any reason. If you believe someone has
|
|
||||||
submitted content to the website in violation of these terms,
|
|
||||||
please contact us immediately.
|
|
||||||
</p>
|
|
||||||
<h4 id='your-account'>Your Account</h4>
|
|
||||||
<p>
|
|
||||||
You must create and log into an account to use some features of
|
|
||||||
the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
To create an account, you must provide some information about
|
|
||||||
yourself. If you create an account, you agree to provide, at a
|
|
||||||
minimum, a valid e-mail address, and to keep that address
|
|
||||||
up-to-date. You may close your account at any time by logging into
|
|
||||||
your account and clicking the button on your account settings
|
|
||||||
page.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You agree to be responsible for all action taken using your
|
|
||||||
account, whether authorized by you or not, until you either close
|
|
||||||
your account or notify the company that your account has been
|
|
||||||
compromised. You agree to notify the company immediately if you
|
|
||||||
suspect your account has been compromised. You agree to select a
|
|
||||||
secure password for your account, and keep it secret.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The company may restrict, suspend, or close your account on the
|
|
||||||
website according to its policy for handling copyright-related
|
|
||||||
takedown requests, or if the company reasonably believes that
|
|
||||||
you’ve breached these terms.
|
|
||||||
</p>
|
|
||||||
<h4 id='your-content'>Your Content</h4>
|
|
||||||
<p>
|
|
||||||
Nothing in these terms gives the company any ownership rights in
|
|
||||||
intellectual property that you share with the website, such as
|
|
||||||
your account information or other content you submit to the
|
|
||||||
website. Nothing in these terms gives you any ownership rights in
|
|
||||||
the company’s intellectual property, either.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Between you and the company, you remain solely responsible for
|
|
||||||
content you submit to the website. You agree not to wrongly imply
|
|
||||||
that content you submit to the website is sponsored or approved by
|
|
||||||
the company. These terms do not obligate the company to store,
|
|
||||||
maintain, or provide copies of content you submit.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Content you submit to the website belongs to you, and you decide
|
|
||||||
what permission to give others for it. But at a minimum, you
|
|
||||||
license the company to provide content that you submit to the
|
|
||||||
website to other users of the website. That special license allows
|
|
||||||
the company to copy, publish, and analyze content you submit to
|
|
||||||
the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
When content you submit is removed from the website, whether by
|
|
||||||
you or by the company, the company’s special license ends when the
|
|
||||||
last copy disappears from the company’s backups, caches, and other
|
|
||||||
systems. Other licenses you apply to content you submit may
|
|
||||||
continue after your content is removed. Those licenses may give
|
|
||||||
others, or the company itself, the right to share your content
|
|
||||||
through the website again.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Others who receive content you submit to the website may violate
|
|
||||||
the terms on which you license your content. You agree that the
|
|
||||||
company will not be liable to you for those violations or their
|
|
||||||
consequences.
|
|
||||||
</p>
|
|
||||||
<h4 id='your-responsibility'>Your Responsibility</h4>
|
|
||||||
<p>
|
|
||||||
You agree to indemnify the company from legal claims by others
|
|
||||||
related to your breach of these terms, or breach of these terms by
|
|
||||||
others using your account on the website. Both you and the company
|
|
||||||
agree to notify the other side of any legal claims for which you
|
|
||||||
might have to indemnify the company as soon as possible. If the
|
|
||||||
company fails to notify you of a legal claim promptly, you won’t
|
|
||||||
have to indemnify the company for damages that you could have
|
|
||||||
defended against or mitigated with prompt notice. You agree to
|
|
||||||
allow the company to control investigation, defense, and
|
|
||||||
settlement of legal claims for which you would have to indemnify
|
|
||||||
the company, and to cooperate with those efforts. The company
|
|
||||||
agrees not to agree to any settlement that admits fault for you or
|
|
||||||
imposes obligations on you without your prior agreement.
|
|
||||||
</p>
|
|
||||||
<h4 id='disclaimers'>Disclaimers</h4>
|
|
||||||
<p>
|
|
||||||
You accept all risk of using the website and content on the
|
|
||||||
website. As far as the law allows, the company provides the
|
|
||||||
website as is, without any warranty whatsoever.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The website may hyperlink to and integrate websites and services
|
|
||||||
run by others. The company does not make any warranty about
|
|
||||||
services run by others, or content they may provide. Use of
|
|
||||||
services run by others may be governed by other terms between you
|
|
||||||
and the one running service.
|
|
||||||
</p>
|
|
||||||
<h4 id='limits-on-liability'>Limits on Liability</h4>
|
|
||||||
<p>
|
|
||||||
The company will not be liable to you for breach-of-contract
|
|
||||||
damages company personnel could not have reasonably foreseen when
|
|
||||||
you agreed to these terms.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
As far as the law allows, the company’s total liability to you for
|
|
||||||
claims of any kind that are related to the website or content on
|
|
||||||
the website will be limited to $50.
|
|
||||||
</p>
|
|
||||||
<h4 id='feedback'>Feedback</h4>
|
|
||||||
<p>
|
|
||||||
The company welcomes your feedback and suggestions for the
|
|
||||||
website. See the Contact section below for ways to get in touch
|
|
||||||
with us.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You agree that the company will be free to act on feedback and
|
|
||||||
suggestions you provide, and that the company won’t have to notify
|
|
||||||
you that your feedback was used, get your permission to use it, or
|
|
||||||
pay you. You agree not to submit feedback or suggestions that you
|
|
||||||
believe might be confidential or proprietary, to you or others.
|
|
||||||
</p>
|
|
||||||
<h4 id='termination'>Termination</h4>
|
|
||||||
<p>
|
|
||||||
Either you or the company may end the agreement written out in
|
|
||||||
these terms at any time. When our agreement ends, your permission
|
|
||||||
to use the website also ends.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The following provisions survive the end of our agreement: Your
|
|
||||||
Content, Feedback, Your Responsibility, Disclaimers, Limits on
|
|
||||||
Liability, and General Terms.
|
|
||||||
</p>
|
|
||||||
<h4 id='disputes'>Disputes</h4>
|
|
||||||
<p>
|
|
||||||
California law will govern any dispute, including any legal
|
|
||||||
proceedings, related to these terms or your use of the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You and the company agree to seek injunctions related to these
|
|
||||||
terms only in state or federal court in San Francisco, California.
|
|
||||||
Neither you nor the company will object to jurisdiction, forum, or
|
|
||||||
venue in those courts.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Other than to seek an injunction or for claims under the Computer
|
|
||||||
Fraud and Abuse Act, you and the company will resolve any Dispute
|
|
||||||
by binding American Arbitration Association arbitration.
|
|
||||||
Arbitration will follow the AAA’s Commercial Arbitration Rules and
|
|
||||||
Supplementary Procedures for Consumer Related Disputes.
|
|
||||||
Arbitration will happen in San Francisco, California. You will
|
|
||||||
settle any dispute as an individual, and not as part of a class
|
|
||||||
action or other representative proceeding, whether as the
|
|
||||||
plaintiff or a class member. No arbitrator will consolidate any
|
|
||||||
dispute with any other arbitration without the company’s
|
|
||||||
permission.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Any arbitration award will include costs of the arbitration,
|
|
||||||
reasonable attorneys’ fees, and reasonable costs for witnesses.
|
|
||||||
You or the company may enter arbitration awards in any court with
|
|
||||||
jurisdiction.
|
|
||||||
</p>
|
|
||||||
<h4 id='general-terms'>General Terms</h4>
|
|
||||||
<p>
|
|
||||||
If a provision of these terms is unenforceable as written, but
|
|
||||||
could be changed to make it enforceable, that provision should be
|
|
||||||
modified to the minimum extent necessary to make it enforceable.
|
|
||||||
Otherwise, that provision should be removed.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You may not assign your agreement with the company. The company
|
|
||||||
may assign your agreement to any affiliate of the company, any
|
|
||||||
other company that obtains control of the company, or any other
|
|
||||||
company that buys assets of the company related to the website.
|
|
||||||
Any attempted assignment against these terms has no legal effect.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Neither the exercise of any right under this Agreement, nor waiver
|
|
||||||
of any breach of this Agreement, waives any other breach of this
|
|
||||||
Agreement.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
These terms embody all the terms of agreement between you and the
|
|
||||||
company about use of the website. These terms entirely replace any
|
|
||||||
other agreements about your use of the website, written or not.
|
|
||||||
</p>
|
|
||||||
<h4 id='contact'>Contact</h4>
|
|
||||||
<p>
|
|
||||||
You may notify the company under these terms, and send questions
|
|
||||||
to the company, at team@freecodecamp.org.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The company may notify you under these terms using the e-mail
|
|
||||||
address you provide for your account on the website, or by posting
|
|
||||||
a message to the homepage of the website or your account page.
|
|
||||||
</p>
|
|
||||||
<h4 id='changes'>Changes</h4>
|
|
||||||
<p>
|
|
||||||
The company last updated these terms on May 25, 2018, and may
|
|
||||||
update these terms again. The company will post all updates to the
|
|
||||||
website. For updates that contain substantial changes, the company
|
|
||||||
agrees to e-mail you, if you’ve created an account and provided a
|
|
||||||
valid e-mail address. The company may also announce updates with
|
|
||||||
special messages or alerts on the website.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Once you get notice of an update to these terms, you must agree to
|
|
||||||
the new terms in order to keep using the website.
|
|
||||||
</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
TermsOfServicePage.displayName = 'TermsOfServicePage';
|
|
||||||
|
|
||||||
export default TermsOfServicePage;
|
|
@ -4,13 +4,13 @@ exports[`<ChallengeTitle/> renders correctly 1`] = `
|
|||||||
<div
|
<div
|
||||||
className="challenge-title-wrap"
|
className="challenge-title-wrap"
|
||||||
>
|
>
|
||||||
<MockedLink
|
<a
|
||||||
aria-label="Previous lesson"
|
aria-label="Previous lesson"
|
||||||
className="btn-invert btn btn-primary"
|
className="btn-invert btn btn-primary"
|
||||||
to="/prev"
|
href="/prev"
|
||||||
>
|
>
|
||||||
<
|
<
|
||||||
</MockedLink>
|
</a>
|
||||||
<h2
|
<h2
|
||||||
className="text-center challenge-title"
|
className="text-center challenge-title"
|
||||||
>
|
>
|
||||||
@ -20,12 +20,12 @@ exports[`<ChallengeTitle/> renders correctly 1`] = `
|
|||||||
title="Completed"
|
title="Completed"
|
||||||
/>
|
/>
|
||||||
</h2>
|
</h2>
|
||||||
<MockedLink
|
<a
|
||||||
aria-label="Next lesson"
|
aria-label="Next lesson"
|
||||||
className="btn-invert btn btn-primary"
|
className="btn-invert btn btn-primary"
|
||||||
to="/intro/path"
|
href="/intro/path"
|
||||||
>
|
>
|
||||||
>
|
>
|
||||||
</MockedLink>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
Reference in New Issue
Block a user