/* global graphql */ /* eslint-disable max-len */ import React from 'react'; import PropTypes from 'prop-types'; import Link from 'gatsby-link'; import Helmet from 'react-helmet'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { ChallengeNode, AllChallengeNode, AllMarkdownRemark } from '../redux/propTypes'; import { toggleMapModal } from '../redux/app'; import Spacer from '../components/util/Spacer'; import Map from '../components/Map'; import './index.css'; const mapStateToProps = () => ({}); const mapDispatchToProps = dispatch => bindActionCreators({ toggleMapModal }, dispatch); const propTypes = { data: PropTypes.shape({ challengeNode: ChallengeNode, allChallengeNode: AllChallengeNode, allMarkdownRemark: AllMarkdownRemark }), toggleMapModal: PropTypes.func.isRequired }; const IndexPage = ({ data: { challengeNode: { fields: { slug } }, allChallengeNode: { edges }, allMarkdownRemark: { edges: mdEdges } } }) => (
We have thousands of coding lessons to help you improve your skills.
You can earn each certification by completing its 5 final projects.
And yes - all of this is 100% free, thanks to the thousands of campers who{' '} donate {' '} to our nonprofit.
If you are new to coding, we recommend you{' '} start at the beginning.