diff --git a/.env.development b/.env.development deleted file mode 100644 index 3ba6798a..00000000 --- a/.env.development +++ /dev/null @@ -1 +0,0 @@ -GATSBY_API_URL=https://api-staging.codingcoach.io \ No newline at end of file diff --git a/.env.production b/.env.production deleted file mode 100644 index 0d4aa0b0..00000000 --- a/.env.production +++ /dev/null @@ -1 +0,0 @@ -GATSBY_API_URL=https://api.codingcoach.io \ No newline at end of file diff --git a/.env.staging b/.env.staging deleted file mode 100644 index 3ba6798a..00000000 --- a/.env.staging +++ /dev/null @@ -1 +0,0 @@ -GATSBY_API_URL=https://api-staging.codingcoach.io \ No newline at end of file diff --git a/.gitignore b/.gitignore index 68e04acd..e64c754d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,69 +1,5 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# dotenv environment variables file -.env - -# gatsby files -.cache/ -public - -# Mac files .DS_Store - -# Yarn -yarn-error.log -.pnp/ -.pnp.js -# Yarn Integrity file -.yarn-integrity \ No newline at end of file +build +node_modules +.env +yarn-error.log \ No newline at end of file diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index dae199ae..00000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v12 diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 36136355..00000000 --- a/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "endOfLine": "lf", - "semi": true, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5" -} diff --git a/200.html b/200.html new file mode 100644 index 00000000..c8a2bf33 --- /dev/null +++ b/200.html @@ -0,0 +1 @@ +Coding Coach
\ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 00000000..aeaead1a --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +Coding Coach
\ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 3f682e12..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,92 +0,0 @@ -# Contributing - -When contributing to this repository, please first discuss the change you wish to make via issue, -email, or any other method with the owners of this repository before making a change. - -Please note we have a code of conduct, please follow it in all your interactions with the project. - -## Pull Request Process - -1. Ensure any install or build dependencies are removed before the end of the layer when doing a - build. -2. Update the README.md with details of changes to the interface, this includes new environment - variables, exposed ports, useful file locations and container parameters. -3. Increase the version numbers in any examples files and the README.md to the new version that this - Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). -4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you - do not have permission to do that, you may request the second reviewer to merge it for you. - -## Code of Conduct - -### Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -### Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -### Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -### Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -### Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -### Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 5169a5e4..00000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 gatsbyjs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/README.md b/README.md deleted file mode 100644 index 11e2af0e..00000000 --- a/README.md +++ /dev/null @@ -1,97 +0,0 @@ - -

- - Gatsby - -

-

- Gatsby's default starter -

- -Kick off your project with this default boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React. - -_Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.org/docs/gatsby-starters/)._ - -## 🚀 Quick start - -1. **Create a Gatsby site.** - - Use the Gatsby CLI to create a new site, specifying the default starter. - - ```sh - # create a new Gatsby site using the default starter - gatsby new my-default-starter https://github.com/gatsbyjs/gatsby-starter-default - ``` - -1. **Start developing.** - - Navigate into your new site’s directory and start it up. - - ```sh - cd my-default-starter/ - gatsby develop - ``` - -1. **Open the source code and start editing!** - - Your site is now running at `http://localhost:8000`! - - _Note: You'll also see a second link: _`http://localhost:8000/___graphql`_. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql)._ - - Open the `my-default-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time! - -## 🧐 What's inside? - -A quick look at the top-level files and directories you'll see in a Gatsby project. - - . - ├── node_modules - ├── src - ├── .gitignore - ├── .prettierrc - ├── gatsby-browser.js - ├── gatsby-config.js - ├── gatsby-node.js - ├── gatsby-ssr.js - ├── LICENSE - ├── package-lock.json - ├── package.json - └── README.md - -1. **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed. - -2. **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for “source code”. - -3. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for. - -4. **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent. - -5. **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.org/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser. - -6. **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the [config docs](https://www.gatsbyjs.org/docs/gatsby-config/) for more detail). - -7. **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.org/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process. - -8. **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.org/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering. - -9. **`LICENSE`**: Gatsby is licensed under the MIT license. - -10. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You won’t change this file directly).** - -11. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project. - -12. **`README.md`**: A text file containing useful reference information about your project. - -## 🎓 Learning Gatsby - -Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.org/). Here are some places to start: - -- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.org/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process. - -- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.org/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar. - -## 💫 Deploy - -[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-default) - - diff --git a/asset-manifest.json b/asset-manifest.json new file mode 100644 index 00000000..b97aacc1 --- /dev/null +++ b/asset-manifest.json @@ -0,0 +1,23 @@ +{ + "main.css": "/static/css/main.06566a6a.chunk.css", + "main.js": "/static/js/main.2a0fb4c8.chunk.js", + "main.js.map": "/static/js/main.2a0fb4c8.chunk.js.map", + "static/js/1.9782eab9.chunk.js": "/static/js/1.9782eab9.chunk.js", + "static/js/1.9782eab9.chunk.js.map": "/static/js/1.9782eab9.chunk.js.map", + "runtime~main.js": "/static/js/runtime~main.229c360f.js", + "runtime~main.js.map": "/static/js/runtime~main.229c360f.js.map", + "static/media/forgot-password.4f9ba239.svg": "/static/media/forgot-password.4f9ba239.svg", + "static/media/coding-coach-logo.svg": "/static/media/coding-coach-logo.fe5c486f.svg", + "static/media/CookiesPolicy.md": "/static/media/CookiesPolicy.c8ebff2d.md", + "static/media/TermsAndConditions.md": "/static/media/TermsAndConditions.49f2cd99.md", + "static/media/CodeOfConduct.md": "/static/media/CodeOfConduct.e9ad259f.md", + "static/media/about.svg": "/static/media/about.01142835.svg", + "static/media/mission.svg": "/static/media/mission.3c72b01c.svg", + "static/media/contact.svg": "/static/media/contact.ba7a97dc.svg", + "static/media/index.css": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.86f83cc5.woff", + "static/media/PrivacyPolicy.md": "/static/media/PrivacyPolicy.6c67e12d.md", + "static/css/main.06566a6a.chunk.css.map": "/static/css/main.06566a6a.chunk.css.map", + "index.html": "/index.html", + "precache-manifest.ccc9abca6d9b605a1fd2d7328b1cca33.js": "/precache-manifest.ccc9abca6d9b605a1fd2d7328b1cca33.js", + "service-worker.js": "/service-worker.js" +} \ No newline at end of file diff --git a/config/deploy.rb b/config/deploy.rb deleted file mode 100644 index 97338b02..00000000 --- a/config/deploy.rb +++ /dev/null @@ -1,93 +0,0 @@ -require 'mina/rails' -require 'mina/git' -# require 'mina/rbenv' # for rbenv support. (https://rbenv.org) -# require 'mina/rvm' # for rvm support. (https://rvm.io) - -# Basic settings: -# domain - The hostname to SSH to. -# deploy_to - Path to deploy into. -# repository - Git repo to clone from. (needed by mina/git) -# branch - Branch name to deploy. (needed by mina/git) - -set :application_name, 'codingcoach' -set :repository, 'https://github.com/Coding-Coach/coding-coach.git' -set :domain, 'blog.codingcoach.io' -set :deploy_to, '/var/www/codingcoach.io' -set :branch, 'master' - -# Optional settings: -set :user, 'deploy' # Username in the server to SSH to. -# set :port, '30000' # SSH port number. -set :forward_agent, true # SSH forward_agent. -set :execution_mode, :system - -# Shared dirs and files will be symlinked into the app-folder by the 'deploy:link_shared_paths' step. -# Some plugins already add folders to shared_dirs like `mina/rails` add `public/assets`, `vendor/bundle` and many more -# run `mina -d` to see all folders and files already included in `shared_dirs` and `shared_files` -# set :shared_dirs, fetch(:shared_dirs, []).push('public/assets') -# set :shared_files, fetch(:shared_files, []).push('config/database.yml', 'config/secrets.yml') - -# This task is the environment that is loaded for all remote run commands, such as -# `mina deploy` or `mina rake`. -task :remote_environment do - # If you're using rbenv, use this to load the rbenv environment. - # Be sure to commit your .ruby-version or .rbenv-version to your repository. - # invoke :'rbenv:load' - - # For those using RVM, use this to load an RVM version@gemset. - # invoke :'rvm:use', 'ruby-1.9.3-p125@default' - - invoke :'nvm:load' -end - -# Load the nvm to use node in the server -namespace :nvm do - task :load do - command 'echo "-----> Loading nvm"' - command %[ - source ~/.nvm/nvm.sh - ] - command 'echo "-----> Now using nvm v.`nvm --version`"' - end -end - -# Put any custom commands you need to run at setup -# All paths in `shared_dirs` and `shared_paths` will be created on their own. -task :setup do - # command %{rbenv install 2.3.0 --skip-existing} -end - -desc "Deploys the current version to the server." -task :deploy do - # uncomment this line to make sure you pushed your local branch to the remote origin - # invoke :'git:ensure_pushed' - deploy do - comment "Deploying #{fetch(:application_name)} to #{fetch(:domain)}:#{fetch(:deploy_to)}" - - command "pwd" - - # Put things that will set up an empty directory into a fully set-up - # instance of your project. - invoke :'git:clone' - - command %{nvm use 10.10.0} - command %{yarn install} - command %{yarn build} - - invoke :'deploy:cleanup' - - on :launch do - in_path(fetch(:current_path)) do - command %{mkdir -p tmp/} - command %{touch tmp/restart.txt} - end - end - end - - # you can use `run :local` to run tasks on local machine before of after the deploy scripts - # run(:local){ say 'done' } -end - -# For help in making your deploy script, see the Mina documentation: -# -# - https://github.com/mina-deploy/mina/tree/master/docs diff --git a/content/authors/cristian-echeverria.md b/content/authors/cristian-echeverria.md deleted file mode 100644 index c85e5553..00000000 --- a/content/authors/cristian-echeverria.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Cristian Echeverria -avatar: https://avatars0.githubusercontent.com/u/6706729?s=460&v=4 -link: https://mentors.codingcoach.io/u/5d543b6f5d08e470cb2a3b94 -about: Frontend Developer, dad, husband, I love to write about my journey in tech. ---- diff --git a/content/authors/crysfel-villa.md b/content/authors/crysfel-villa.md deleted file mode 100644 index e0d9289b..00000000 --- a/content/authors/crysfel-villa.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Crysfel Villa -avatar: https://avatars2.githubusercontent.com/u/219207?s=460&v=4 -link: https://mentors.codingcoach.io/u/5d543b6f5d08e470cb2a3b4d -about: I love writing tutorials about JavaScript, Node, IoT, etc. ---- \ No newline at end of file diff --git a/content/authors/emma-wedekind.md b/content/authors/emma-wedekind.md deleted file mode 100644 index 33dbf05e..00000000 --- a/content/authors/emma-wedekind.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Emma Wedekind -avatar: https://avatars0.githubusercontent.com/u/7671983?s=460&v=4 -link: https://mentors.codingcoach.io/u/5d543b705d08e470cb2a3c1d -about: Software Engineer turned UX Engineer ---- \ No newline at end of file diff --git a/content/authors/mosh-feu.md b/content/authors/mosh-feu.md deleted file mode 100644 index 3bfca593..00000000 --- a/content/authors/mosh-feu.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Mosh Feuchtwanger -avatar: https://avatars.githubusercontent.com/u/3723951?v=4 -link: https://moshfeu.github.io/ -about: A frontend developer, passionate about opensource, mentoring and helping ---- \ No newline at end of file diff --git a/content/authors/rodrigo-juarez.md b/content/authors/rodrigo-juarez.md deleted file mode 100644 index 3c84d342..00000000 --- a/content/authors/rodrigo-juarez.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Rodrigo Juarez -avatar: https://i.imgur.com/yRyVgVE.jpg -link: https://rodrigojuarez.com -about: Just a developer using Microsoft tools to create awesome apps! ---- \ No newline at end of file diff --git a/content/authors/shayan-yazdanpanah.md b/content/authors/shayan-yazdanpanah.md deleted file mode 100644 index 179c492c..00000000 --- a/content/authors/shayan-yazdanpanah.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Shayan Yazdanpanah -avatar: https://avatars0.githubusercontent.com/u/23405960?s=400&&v=4 -link: https://www.linkedin.com/in/shayanypn/ -about: A frontend Developer that Love to learn and experiment new things. ---- \ No newline at end of file diff --git a/content/blog/cc-product-roadmap-1/index.md b/content/blog/cc-product-roadmap-1/index.md deleted file mode 100644 index 7da5b21d..00000000 --- a/content/blog/cc-product-roadmap-1/index.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Product Roadmap -date: 2019-11-22 -tags: - - product - - plans - - announcements -image: product-roadmap-tns.jpg -author: crysfel-villa ---- -Over the last couple weeks we've been working on the new features we want to implement in the platform. We've finally came up with a plan for the improvements we will be working over the next couple of months. - -While this is not set on stone, it'll definitely give us the direction we need to keep this project moving forward. I'm really excited about the new things to come and I hope all of you can join us on this adventure. - -One of the goals is to deliver features as quickly as we can, for that reason we are going to release all-new features incrementally. We are planning to have four small/medium releases over the next several months. - -### Release 1: User profiles -At the moment mentees can't really do anything in the platform, but it would be great if any user can update their profile so mentors can see their goals and expectations when a mentee reaches out to them. - -For this first release, we are going to create a new private area for members, on here members can update their profile. The profile page will look like this. - -![User profile](./release-1.jpg) - -We will allow members to update their avatar as well. For now, there will be only two options in the main navigation menu, `Home` and `Mentors`. - -The Home link will redirect the user to the profile, later on we want to show several widgets here to provide mentors and mentees with useful information about their mentorships. - -The Mentors link will send users to the current app we have, on there people will be able to search for mentors. - -### Release 2: Mentor availability and reports -On top of the user profile, we are going to build the mentor profile page, the design is the same but there will be more fields, as mentors can define communication channels and availability. - -We are also planning to build an easy way to report any issues in the mentorships by creating a new `Reports` module. Mentors and mentees will be able to report missconducts and reach out to Coding Coach staff. - -![Mentor profile](./release-2.png) - -### Release 3: Apply for mentorships -One of the problems we currently have is that mentorships are happening outside the platform, a mentee will reach out to a mentor and ask for help, but then we don't know if that relationship is successfull or not. - -This is the largest release in the roadmap, because we need to introduce a new process to make the mentorships happen in the platform, this way we are preparing the platform for new features we want to include later on. - -In the new process a mentee will apply for a mentorship, by setting their goals and expectations. All the applications will appear to the mentor in the new `Mentorships` module. - -From there the mentor will be able to review the goals and decide if this is a good fit for both parties, then the mentor will be able to approve or reject the application. - -Finally if the mentorship gets accepted, the mentee will be able to see the communication channels as well as some other details on the mentorship. - -![Mentorships module](./release-3.jpg) - -We have more ideas and plans to help mentors and mentees to succeed in the relationship and we believe this is the foundation we need to build everything on top of this. - -### Release 4: Notes and finishing a mentorship -As a mentor myself I like to keep track of my mentees by keeping some notes, this is very useful especially at the beginning. We will work on introducing a feature to keep notes directly on the mentorship, this way it will be easier for a mentor to keep everything in a single place. - -We also know that it's ok to terminate a mentorship, for whatever reason this is. We want to allow mentors and mentees to terminate the relationship at any time, that's why we are going to introduce an easy way to terminate the mentorship and leaving feedback to the mentor and to the Coding Coach staff. - -![Terminate mentorhip](./release-4.jpg) - -### Asking for help -Today I was asked by a mentee who recently join the community: - -> Why did you guys decided to help people like us (mentees)? You decided to give us a little bit of your time and share knowledge with us. You might not know how valuable your advice is to us, but it's as valuable as gold, even more. I'm just curious about what motivates mentors like you?. - -My answer was something like this: - -> well... we all been there, we know first hand what's like to start learning something new, it's a bit intimidating and in my case, I enjoy helping people; it makes me really happy 😁 - -I'm sure all our mentors agree that it really brings joy to help people, real joy, one that money can't buy. And at least that's one of the things that motivates me to work on this project. - -We have several plans and ideas, but we need your help! We all have jobs and families, time is very limited for everyone in the team. But we have a mission, we want to impact as many lives as possible by helping them succeed in their careers. - -You are more than welcome to join the development team or become a patron, feel free to help in any way you can! diff --git a/content/blog/cc-product-roadmap-1/product-roadmap-tns.jpg b/content/blog/cc-product-roadmap-1/product-roadmap-tns.jpg deleted file mode 100644 index 9a63e7d2..00000000 Binary files a/content/blog/cc-product-roadmap-1/product-roadmap-tns.jpg and /dev/null differ diff --git a/content/blog/cc-product-roadmap-1/release-1.jpg b/content/blog/cc-product-roadmap-1/release-1.jpg deleted file mode 100644 index 9096c317..00000000 Binary files a/content/blog/cc-product-roadmap-1/release-1.jpg and /dev/null differ diff --git a/content/blog/cc-product-roadmap-1/release-2.png b/content/blog/cc-product-roadmap-1/release-2.png deleted file mode 100644 index ca775596..00000000 Binary files a/content/blog/cc-product-roadmap-1/release-2.png and /dev/null differ diff --git a/content/blog/cc-product-roadmap-1/release-3.jpg b/content/blog/cc-product-roadmap-1/release-3.jpg deleted file mode 100644 index 075ee46e..00000000 Binary files a/content/blog/cc-product-roadmap-1/release-3.jpg and /dev/null differ diff --git a/content/blog/cc-product-roadmap-1/release-4.jpg b/content/blog/cc-product-roadmap-1/release-4.jpg deleted file mode 100644 index e4ade4b6..00000000 Binary files a/content/blog/cc-product-roadmap-1/release-4.jpg and /dev/null differ diff --git a/content/blog/coding-for-fun/coding-fun.jpeg b/content/blog/coding-for-fun/coding-fun.jpeg deleted file mode 100644 index 57e0ae82..00000000 Binary files a/content/blog/coding-for-fun/coding-fun.jpeg and /dev/null differ diff --git a/content/blog/coding-for-fun/index.md b/content/blog/coding-for-fun/index.md deleted file mode 100644 index 82f75428..00000000 --- a/content/blog/coding-for-fun/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Coding for fun for Coding Coach -date: 2019-04-29 -tags: - - developer - - coding - - community -image: coding-fun.jpeg -author: rodrigo-juarez ---- -These past months had been challenging, in my current project, we had a problematic deadline, and we were struggling with the integration of our code with other teams and the business side communication. Long days, some weekend work and so on. - -So, what do I do when I want to relax and have some fun (other than reading dev.to), of course, I code! -First, a little bit of context, I landed to Coding Coach after reading this blog post. -Fantastic community, excellent idea, but, how can I contribute? Other than being a mentor (it looks like there are not so many mentees interested in Xamarin after all), I want to do something exciting and have the chance to grow. - -Many contributors are already working on the web app, and they are using a stack that I don’t want to learn right now, so I asked what about the mobile app, can I use Xamarin? So Emma Wedekind replied something like, sure, choose your poison (not really :D), and I started as an exercise the development of the mobile app (contributors welcome!). - -I have much experience as a Xamarin developer, but usually, your “pay the bills” projects don’t allow you to check new things and learn about the latest changes and improvements; also, some developers on Coding Coach were asking why I was using Xamarin, here a brief list of my goals for this project: - -- Create something useful for the Coding Coach community. -- Have a playground for mentees that want to learn about Xamarin. -- Have the opportunity to create high-quality code without the restraint of deadlines or business constraints. -- Learn about different approaches, tools, and technologies. -- Have fun!! - -I’m taking this as the chance to find joy in my craft and do (I hope) something meaningful for the community. -Friday 2 am caught me fighting happily with the filter functionality for the mentor’s page; if that’s not fun, I don’t know what it is! - -If you aren’t already in the Coding Coach slack, go there and say hello, and if you are interested in a Xamarin mentor, contact me! I’m sure we can learn something together. \ No newline at end of file diff --git a/content/blog/diary-of-a-coding-coach-pt-1/dairy.png b/content/blog/diary-of-a-coding-coach-pt-1/dairy.png deleted file mode 100644 index eae54baf..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-1/dairy.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-1/github.png b/content/blog/diary-of-a-coding-coach-pt-1/github.png deleted file mode 100644 index 99c8dbbb..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-1/github.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-1/index.md b/content/blog/diary-of-a-coding-coach-pt-1/index.md deleted file mode 100644 index a37ff402..00000000 --- a/content/blog/diary-of-a-coding-coach-pt-1/index.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Diary Of A Coding Coach (Pt. 1) -date: 2018-09-18 -tags: ['open source', 'coding', 'community'] -author: emma-wedekind -image: dairy.png ---- -My entire career, I have been a proponent of mentorship. It can provide an invaluable platform from which developers can share knowledge about technology as well as their careers. - -Yet I quickly realized that there was no application which was able to fill this huge need. - -![Twitter](./twitter.png) - -Although there are a few platforms which can be leveraged for mentorship, they all required payment to some extent. - -Mentorship should be available to everyone, regardless of circumstance, but many developers don’t have access to a mentor, or can’t afford to pay for one. - -I feel as though it is my responsibility to society to help facilitate the creation of an application which will allow any developer to find a mentor. - -Thus, I created Coding Coach. - -![Mentoring](./mentoring.png) - -## Goal -The ultimate goal of Coding Coach is to build a mentorship application which allows developers to connect with mentors worldwide and grow their skillset. - -I wanted Coding Coach to be open-source. This is an issue the community is extremely passionate to help remediate, so I established this project to be a community effort. - -## Phase 1: Organization -### Gauge Interest -First, I created a Google survey to get a read on where people stand in the development community, and what they would be looking for. - -![Survey](./survey.png) - -I have received over 300 responses. - -![Survey Results](./results.png) - -### Grab A Domain Name -I immediately knew I had to grab a domain name. Of course all the domains surrounding mentorship have been taken, so I selected Coding Coach. I thought the alliteration had nice ring. Ultimately I would like to find a snazzier name, but this isn’t my top priority at the moment. - -### Set Up Slack -Next, I set up a Slack organization under the same namespace (Coding-Coach). I created several channels to get the ball rolling: - -* Front-end -* Back-end -* Design -* Documentation - -### Set Up Social Media Accounts -I immediately created a [Twitter](https://twitter.com/codingcoach_io) and a [Facebook page](https://www.facebook.com/codingcoachio/) for the app. These will come in handy later on. - -### Invite The Community -I immediately posted to Twitter asking for people to join the Slack organization if they’re interested in being part of the journey. - -![Inviting](./twitter-2.png) - -We now have over 250 members. - -### Set Up A GitHub -I set up a GitHub organization with front-end and api repositories. I then added members who wanted to collaborate. - -![Github](./github.png) - -## Build A Landing Page -Next, I threw together a quick landing page design and built it using React’s `create-react-app`. - -![Landing page](./dairy.png) - -### Define Mission Statement -I knew I needed a mission statement for Coding Coach, so I set one up in Google Drive. I’m hoping to have this released by this Friday (September 14th, 2018) - -### Define MVP 0 & Information Architecture -I also knew we had to define MVP 0 and the architecture for the application. I created two Google documents and the Coding Coach team is collaborating together to define a minimum viable product. - -These documents are a work in progress, but it’s so cool to see how the community is so invested in building an amazing product. - -### Define The Project Roadmap -Finally, I wanted to have a vision on where this project could take us, so I’ve defined an outline for the project. This is also a work in progress, but it’s good to have a tentative outline so you have a solid goal to work towards. - -### Agree On A Tech Stack -Fortunately, my awesome team put together a Google document to keep track of the tech stack. We all agree to keep the app as simple as possible for the time being. - -We chose to use these technologies on the front-end: - -* React -* Redux (State management) -* Scss (Styling) -* Apollo (Data fetching) -* React i18next (Internationalization) -* React helmet (SEO) -* Circle CI (Continuous integration) -* Prettier (Code formatting) - -These may change a bit as we get into development, but I’d say that’s a solid start. - -### Outline Styles -I threw together some basic styling that would work for phase one. We’ve decided to use Figma for our design system as we progress. These styles will change drastically, but it’s a start. - -### Set Up Trello Boards For Ideas -We set up Trello boards to keep track of ideas we had. - -At the moment it’s just a way to keep track of all the great ideas floating around, but after MVP 0 is defined, we’ll set up stricter pipelines. - -## Conclusion -I’d be lying if I said I wasn’t scared; I’m scared shitless. Mostly because I’m not used to being at the center of a project. But the Coding Coach Slack organization is full of incredible developers who I am so fortunate to work with. - -I truly hope we can build something worthwhile to the development community, and perhaps even scale this to something larger. - -This is just the beginning. \ No newline at end of file diff --git a/content/blog/diary-of-a-coding-coach-pt-1/mentoring.png b/content/blog/diary-of-a-coding-coach-pt-1/mentoring.png deleted file mode 100644 index 0081969a..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-1/mentoring.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-1/results.png b/content/blog/diary-of-a-coding-coach-pt-1/results.png deleted file mode 100644 index 2d4ed6eb..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-1/results.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-1/survey.png b/content/blog/diary-of-a-coding-coach-pt-1/survey.png deleted file mode 100644 index 43cf458a..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-1/survey.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-1/twitter-2.png b/content/blog/diary-of-a-coding-coach-pt-1/twitter-2.png deleted file mode 100644 index df6d7e60..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-1/twitter-2.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-1/twitter.png b/content/blog/diary-of-a-coding-coach-pt-1/twitter.png deleted file mode 100644 index 01849b0a..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-1/twitter.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/copy.png b/content/blog/diary-of-a-coding-coach-pt-2/copy.png deleted file mode 100644 index 6b80c57f..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/copy.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/dairy2.jpg b/content/blog/diary-of-a-coding-coach-pt-2/dairy2.jpg deleted file mode 100644 index c093df03..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/dairy2.jpg and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/figma.png b/content/blog/diary-of-a-coding-coach-pt-2/figma.png deleted file mode 100644 index 4e5e553d..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/figma.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/font-size.png b/content/blog/diary-of-a-coding-coach-pt-2/font-size.png deleted file mode 100644 index ec83661e..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/font-size.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/font.png b/content/blog/diary-of-a-coding-coach-pt-2/font.png deleted file mode 100644 index fa7abc1e..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/font.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/index.md b/content/blog/diary-of-a-coding-coach-pt-2/index.md deleted file mode 100644 index 68f110d4..00000000 --- a/content/blog/diary-of-a-coding-coach-pt-2/index.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Diary Of A Coding Coach (Pt. 2) -date: 2018-09-19 -tags: ['open source', 'coding', 'community'] -author: emma-wedekind -image: dairy2.jpg ---- -A few weeks back, with the help of the developer community on Twitter, I started an open-source project to connect mentors and mentees around the world. I’m proud to say that this project gained a ton of interest very quickly. - -I made the decision to actively blog about this experience to hopefully help people looking to start a project of their own. - -If you haven’t read part one, [check it out](/blog/diary-of-a-coding-coach-pt-1/). Here’s what happened with Coding Coach the last couple of weeks. - -## Documentation -One of the things you’ll need for a successful project is thorough documentation. The last few weeks we broke down our project requirements into MVP features. - -### Finalized MVP 0 Requirements -Any good project will define an MVP 0. MVP stands for “Minimum Viable Product” and describes the list of features that are necessary to have a working product. - -This iteration, we finalized the MVP 0 requirements. - -![Finalized MVP 0 Requirements](./mvp.png) - -### Created MVP 0 Copy -Once the requirements were finalized, we had to get the official “copy” or wording for the application finalized. Thus, an MVP 0 Copy document was created and analyzed by the team. - -![Created MVP 0 Copy](./copy.png) - -### Epics In ZenHub -After finalizing requirements, we created tasks in Zenhub, which is an Agile project management tool that integrates with GitHub. The team is currently working on breaking down the Epics into development tasks. - -![Epics In ZenHub](./zenhub.png) - -## Design -It was finally time to start designing our MVP 0! It’s important to organize design from the beginning. - -### Inspiration -I wanted the color palette to use shades of green, as it indicates growth. Thus, I searched around and found some color palette inspiration. - -![Inspiration](./inspiration-1.png) -![Colors](./inspiration-2.png) - -Here is what the MVP 0 high-fidelity mock-up for the new landing page looks like. - -### Color Palette -From the inspiration above, I compiled a color palette. - -![Colors](./palete.png) - -### Typography -I chose to use two variations of typography: Fjalla One and Lato. It’s important to keep your typography selections simple. I found my fonts through Google Fonts. - -![Font Family](./font.png) - -Additionally, it’s important to establish a typescale. I decided to use the [IBM Carbon Design System Type Scale](http://www.carbondesignsystem.com/style/typography/overview). - -![Font Size](./font-size.png) - -### Icons -Captivating icons are an important part of a web application. I love working with [unDraw](https://undraw.co/illustrations) illustrations. It’s fully customizable and they release new content almost every day! - - -![Illustrations](./undraw-1.png) -![Illustrations](./undraw-2.png) - - -## Social Media -Although we had most of our social media accounts defined, I wanted to add in a Medium publication, which was graciously created by a team member and handed over to me. - -### Medium Publication - -![Medium](./medium.png) - -### Product Hunt -Additionally, I created a Product Hunt page for Coding Coach. - -![Product Hunt](./producthunt.png) - -## Development Leads -One of the biggest decisions I made was to assign front-end and back-end development leads. An important piece of starting a project is to understand that you cannot do the work yourself. - -![Slack Team](./team.png) - -## Tools - -### Sketch -To create the high-fidelity designs as well as the beginning of a style guide, I’m using Sketch. It’s my hope that we can simultaneously develop a style guide in tandem with the Coding Coach product. - -![Sketch](./sketch.png) - -### Figma -Not all of our developers have access to Sketch, so all of our design assets are uploaded to Figma. - -![Figma](./figma.png) - -## Recognition -I’d like to take just a minute to recognize some of the awesome people who have been helping make Coding Coach a reality. There are many more people I wish I could thank, but these are some of the all-star players. - -* Taylor LaRiviere: Copy Editing -* Crysfel Villa: Front-end/Backend Team Lead -* Jagadish K: Back-end Team Lead -* Charles: Back-end Team Lead -* Tarang Hirani: Front-end Development -* Victor Ribero: Front-end Development -* Adam Recvlohe: Front-end Development -* Martin Gonzalez: MVP 0 Documentation - -Make sure to subscribe to Coding Coach to stay updated on the development process! \ No newline at end of file diff --git a/content/blog/diary-of-a-coding-coach-pt-2/inspiration-1.png b/content/blog/diary-of-a-coding-coach-pt-2/inspiration-1.png deleted file mode 100644 index eb99ceeb..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/inspiration-1.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/inspiration-2.png b/content/blog/diary-of-a-coding-coach-pt-2/inspiration-2.png deleted file mode 100644 index 661cb476..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/inspiration-2.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/medium.png b/content/blog/diary-of-a-coding-coach-pt-2/medium.png deleted file mode 100644 index 3f248afd..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/medium.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/mvp.png b/content/blog/diary-of-a-coding-coach-pt-2/mvp.png deleted file mode 100644 index 8fd6999c..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/mvp.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/palete.png b/content/blog/diary-of-a-coding-coach-pt-2/palete.png deleted file mode 100644 index 4dd53189..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/palete.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/producthunt.png b/content/blog/diary-of-a-coding-coach-pt-2/producthunt.png deleted file mode 100644 index 7e41df9f..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/producthunt.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/sketch.png b/content/blog/diary-of-a-coding-coach-pt-2/sketch.png deleted file mode 100644 index 62739abc..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/sketch.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/team.png b/content/blog/diary-of-a-coding-coach-pt-2/team.png deleted file mode 100644 index 613248d0..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/team.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/undraw-1.png b/content/blog/diary-of-a-coding-coach-pt-2/undraw-1.png deleted file mode 100644 index 7230fbe8..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/undraw-1.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/undraw-2.png b/content/blog/diary-of-a-coding-coach-pt-2/undraw-2.png deleted file mode 100644 index f81df6b9..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/undraw-2.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-2/zenhub.png b/content/blog/diary-of-a-coding-coach-pt-2/zenhub.png deleted file mode 100644 index 95cd2748..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-2/zenhub.png and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-3/index.md b/content/blog/diary-of-a-coding-coach-pt-3/index.md deleted file mode 100644 index 842091e3..00000000 --- a/content/blog/diary-of-a-coding-coach-pt-3/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Diary Of A Coding Coach (Pt. 3) -date: 2018-10-19 -tags: ['open source', 'coding', 'community'] -author: emma-wedekind -image: main.png ---- -Many changes have been occurring for Coding Coach in the last several weeks. Development for the new and improved landing page is nearing an end and designs for user dashboards have begun! Below are some of the enhancements we’ve made and implemented over the last month. - -### Terms & Conditions, Privacy Policy, & Cookies -The terms and conditions, privacy policy, and cookies documents have been created. Additionally, design for modals have been created. By leveraging components, we’re able to quickly implement new features. - -### Log In & Sign Up -Designs for log in and sign up have been finalized. We wanted to keep the design simplistic and modern. - - -### Mobile-First Approach -During the development of the new landing page, we realized that we should be developing using a mobile-first approach. Mobile-first has many benefits, one of the main being performance, thus we transitioned our workflow to adopt this new approach. - -### Mailing List -We’re in the process of creating a mailing list and email newsletter which will be sent to the participants of the Google survey. We hope to send updates as new features are delivered for Coding Coach. - -### Re-usable Components -As we are developing the designs for Coding Coach, we’re implementing re-usable components which will allow us to have a more modular workflow. We’ve created buttons, inputs, and modals thus far. - -### Logo Design -I decided that it was finally time to invest in a proper logo. So I logged on to Fiverr and found an awesome graphic artist. We’re in the final revision stage and hope to have our re-branding up soon! - -![Coding Coach Logo](./logo.jpg) - -### UX Design -I appointed a UX Lead: Lena Venable. She has been extremely helpful in regards to UX flows and put together the flow below. We’ve set up a design branch in our GitHub repo and will begin adding designs to our account. - -### PayPal Donations -Lastly, I set up a business account for Coding Coach so we can begin to receive donations. Paying for the domains, hosting, and logo can add up so we’re hoping the community will be willing to support us! - -### Conclusion -The product is slowly coming together. We hope to have version 2 of the landing page released soon! -Make sure to follow us on Twitter to keep up-to-date on the latest news! \ No newline at end of file diff --git a/content/blog/diary-of-a-coding-coach-pt-3/logo.jpg b/content/blog/diary-of-a-coding-coach-pt-3/logo.jpg deleted file mode 100644 index 83a208f9..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-3/logo.jpg and /dev/null differ diff --git a/content/blog/diary-of-a-coding-coach-pt-3/main.png b/content/blog/diary-of-a-coding-coach-pt-3/main.png deleted file mode 100644 index 06b0068f..00000000 Binary files a/content/blog/diary-of-a-coding-coach-pt-3/main.png and /dev/null differ diff --git a/content/blog/how-references-work-in-javascript/index.md b/content/blog/how-references-work-in-javascript/index.md deleted file mode 100644 index 9534ccf3..00000000 --- a/content/blog/how-references-work-in-javascript/index.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: How references work in JavaScript -date: 2020-02-17 -tags: ['javascript', 'tutorial', 'js-core'] -author: crysfel-villa -image: references.jpg ---- -Let's start by a simple question, what's a reference? In simple words a reference is just a pointer to an address in memory. - -When an app runs in your device, the OS will assign a memory stack to the program, we can use this stack to store any kind of data, such as objects, arrays, numbers and so on. - -In JavaScript we can create objects using the `Object` constructor or just declaring inline objects. - -``` -var peter = new Object() -peter.name = 'Peter' - -var john = { name: 'John' } -``` - -After the compiler runs these two lines, the memory stack will look like something like this. - -![Memory Stack when creating objects](./memory-stack-1.png) - -There are two slots in the stack occupated by the new two objects we've created. And the only way we can access that data is through the two references we have: `peter` and `john`. - -In this example `peter` points to `0xFF1` and `john` is pointing to `0xFF2`. As long as we don't overwrite the references, we can access the data in the memory and use it in any way we want. - -Now let's consider the following scenario: - -``` -var john = { name: 'John' } -var john2 = john -``` - -We are creating a new reference that points to the same address as `john`, this doesn't mean we are duplicating the object in the memory stack, but rather just duplicating the reference. - -The memory stack will look something like this: - -![Memory Stack when duplicating references](./memory-stack-2.png) - -Both `john` and `john2` will point to the same address that holds the object. What this means is that we can update the same object through any of the references, for example: - -``` -var john = { name: 'John' } -var john2 = john - -john.lastname = 'Doe' - -console.log(john2.lastname === john.lastname) // --> true -console.log(john2.lastname) // --> Doe -``` - -It's easy to get confused by this, one might think `john2` is duplicating the object and mutating the original will not affect the second one. But that's not the case as both are simple references to the same object. - -This is a very important concept to understand, consider the following scenario: - -``` -var people = ['John', 'Sarah'] - -invite(people, 'Amy') - -console.log(people) // <-- ['John', 'Sarah', 'Amy] - -function invite(state, person) { - state.push(person) -} -``` - -We are mutating the `state` array by adding a new element, but given that this param is just a reference, the `people` array gets updated as well. - -![Memory Stack when there a param](./memory-stack-3.png) - -And this is the reason to avoid mutating data, you might be updating data in places you might not want to. Libraries like react and redux advice not to mutate data when updating the state. - -React uses the memory addresses to compare if an object has changed, therefore if you mutate the object react will not pick up the new changes and won't be able to trigger a re-render. - -The same applies to redux, in order to find out if an object was updated we need to create a new reference to the new object, for example: - -``` -var state = { - people: ['John'] -} - -var newState = { - ...state, - people: [...state.people, 'Amy'] -} - -console.log(state.people === newState.people) // --> false -``` - -If you have any question or something was not very clear, just leave a comment below! - - -This tutorial is part of the [Leveling up your JavaScript skills](/blog/leveling-up-your-javascript-skills) series. \ No newline at end of file diff --git a/content/blog/how-references-work-in-javascript/memory-stack-1.png b/content/blog/how-references-work-in-javascript/memory-stack-1.png deleted file mode 100644 index 52aba8f1..00000000 Binary files a/content/blog/how-references-work-in-javascript/memory-stack-1.png and /dev/null differ diff --git a/content/blog/how-references-work-in-javascript/memory-stack-2.png b/content/blog/how-references-work-in-javascript/memory-stack-2.png deleted file mode 100644 index 23b1e913..00000000 Binary files a/content/blog/how-references-work-in-javascript/memory-stack-2.png and /dev/null differ diff --git a/content/blog/how-references-work-in-javascript/memory-stack-3.png b/content/blog/how-references-work-in-javascript/memory-stack-3.png deleted file mode 100644 index 6a084cee..00000000 Binary files a/content/blog/how-references-work-in-javascript/memory-stack-3.png and /dev/null differ diff --git a/content/blog/how-references-work-in-javascript/references.jpg b/content/blog/how-references-work-in-javascript/references.jpg deleted file mode 100644 index e2dd752e..00000000 Binary files a/content/blog/how-references-work-in-javascript/references.jpg and /dev/null differ diff --git a/content/blog/how-to-start-contributing-to-an-oss-project/index.md b/content/blog/how-to-start-contributing-to-an-oss-project/index.md deleted file mode 100644 index f512a487..00000000 --- a/content/blog/how-to-start-contributing-to-an-oss-project/index.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How to start contributing to an OSS project -date: 2019-01-14 -tags: ['open source', 'coding', 'community'] -author: crysfel-villa -image: main.jpg ---- -Contributing to Open Source has been by far one of the greatest experiences as a software developer in my career. I’ve been putting my work out there for years and some people has been cloning my projects for a while, none of them has been very popular though. - -A couple months ago I joined Coding Coach, a very active/popular project where we want to help people connect with mentors world wide. At this point the platform is still under development but we do have a healthy community of people willing to help each others. - -When a new member joins the community, they often have the same questions: *Where should I start? How can I start contributing to this project? Am I good enough to join the dev team?* - -In this post I will try to answer those questions and explain how you can join the development team to start contributing to your first Open Source Project! These steps can also be applied to most Open Source projects out there. - -## Join the community’s forum/slack/discord -Most communities have an easy way to reach out to the core team. I’d say this is the first step you will need to do, find out what tool the community is using and join! - -At Coding Coach we use slack, as soon as you join introduce yourself at the #introductions channel, make sure to upload an avatar and set your Github id in your profile. We are a very friendly community so don’t be afraid to jump in to any of the public channel and participate. - -We are still building the platform to connect people with mentors, but we have a #help channel where you can ask any question, even if is not related to coding coach. - -If you want to join the dev team, make sure to visit the #front-end/#back-end channels. We have discussions on what technology to use, what needs to be done, general questions about the code and help about the project. Feel free to jump in and participate! - -## Install the app in your local environment -Running the app in your local environment is the first step to start contributing to any project. Usually the installation steps are defined in the [README.md](https://github.com/Coding-Coach/coding-coach/blob/master/README.md) file, sometimes there's a [CONTRIBUTING.md](https://github.com/Coding-Coach/coding-coach/blob/master/CONTRIBUTING.md) file, make sure to read all those guidelines. - -In the case of Coding Coach, we decided to separate the [backend](https://github.com/Coding-Coach/find-a-mentor-api) from the [frontend](https://github.com/Coding-Coach/find-a-mentor). You can either contribute to one of those or both of them. The main reason we decided to split the codebase is because we wanted to make things super simple for you to participate, if you don't want to run the backend in your local, by default the frontend uses a [staging server](https://api-staging.codingcoach.io/) we have in the cloud, you don't have to do anything in order to use it. - -It’s a common practice to fork the project you want to contribute, clone your fork to your local and add the original project as remote. We have detailed steps in our readme file. - -## Browse the current issues -Once you have the app running you might want to start working on something. The best way to find out what you can work on, is to take a look at the [issues page](https://github.com/Coding-Coach/coding-coach/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) in Github. - -Many projects use labels, when joining a project you should look for the `Good first issue` label. Most projects will have this label to mark easy to start issues. - -At coding coach, we use this label to mark easy bugs and tasks, for example ~~we have several tasks about migrating from sass to tailwind~~ (Migration is completed by now), all these issues are fairly easy to complete and will give you enough exposure to the code base to make yourself comfortable. - -## Ask questions about the issue -Make sure you understand the task! Ask as many questions as needed, is important to fully understand what needs to be done. Sometimes issues are not well described or missing some important information. -If necessary ask for some help about the solution you are proposing. Or if you are not sure if what you have in mind is the most efficient way to solve the problem, don’t be afraid to ask. - -At coding coach we want to use the development of the platform as a learning experience for everyone. If you are new to software development, just ask for some wisdom from more experienced people. We encourage anyone to join the dev team and bring their perspective to the table, no matter how experienced you are. - -Coding coach is a great project to get your feet wet and work with awesome people in a fully distributed team across the globe! - -## Own the issue -Not every projects does this, but at coding coach we require that each issue should be assign to a single person, we don’t want to waste your time and work on something that someone else is working. - -Ask the maintainers to assign the issue to you. For that you will need to be part of the Github organization, just go to the #front-end-gh-access/#back-end-gh-access channels in slack and leave your Github id. Once a day we add new people to the organization. - -Once the maintainers assigned the issue to you, work should start! The process is detailed in the Readme file. -Once you created a new Pull Request (PR) for the issue, maintainers will review your code, leave comments, suggestions or change requests. Your first PR will have so many comments for sure, don’t be discourage by that. -As you get familiar with the codebase, things will get a bit easier when working in new issues. We are always available in slack to answer any question you have about the project. - -Happy coding and welcome to the Team! \ No newline at end of file diff --git a/content/blog/how-to-start-contributing-to-an-oss-project/main.jpg b/content/blog/how-to-start-contributing-to-an-oss-project/main.jpg deleted file mode 100644 index e2d39964..00000000 Binary files a/content/blog/how-to-start-contributing-to-an-oss-project/main.jpg and /dev/null differ diff --git a/content/blog/leveling-up-your-javascript-skills/index.md b/content/blog/leveling-up-your-javascript-skills/index.md deleted file mode 100644 index c3f00874..00000000 --- a/content/blog/leveling-up-your-javascript-skills/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Leveling up your JavaScript skills -date: 2020-02-04 -tags: ['programming', 'course', 'javascript'] -author: crysfel-villa -image: javascript.jpg ---- -I've been interviewing Sr. Frontend Engineers for a while, and one thing I've found in common is that many of them fail to understand and explain JavaScript core concepts. - -Among many other things, a Sr. Frontend Engineer should be able to explain (in order to mentor Jr. Engineers) concepts such as closures, scope, context, etc. - -Today I want to start a series of posts, where I'm going to explain in detail each individual concept. I'll be providing code examples and will try to do it as simple as possible. - -### Topics to cover - -- [How references work in JavaScript](/blog/how-references-work-in-javascript). -- [What's the difference between `==` and `===`](/blog/whats-the-difference-between-double-and-triple-equals)? -- Global scope and function scope. -- Local scope, also known as block scope. -- Closures, explained in a simple way -- Context in JavaScript. -- Dinamically changing the context at runtime. - -All these concepts are framework agnostic, understanding them will help you jump into any framework or library and it will definately make your live easier. - -Please let me know if there's a topic you'd like me to cover in the series, I'm happy to add new topics to the list. I want to keep this course up to date, therefore I will be updating and adding new tutorials as time goes by. - -### Twitch Channel -We are planning to start a [twitch channel]( https://www.twitch.tv/codingcoach/) and this seems the right time to do so! I will be streaming these lessons every week, starting *Thursday Feb 13th at 5pm ET*. - -I will target each episode to be about 20 mins length with a 10-15 mins of live questions from the audience. So this is a great apportunity for you to level up your JavaScript skills and improve in your career. - -As always, happy coding! \ No newline at end of file diff --git a/content/blog/leveling-up-your-javascript-skills/javascript.jpg b/content/blog/leveling-up-your-javascript-skills/javascript.jpg deleted file mode 100644 index e9d49d17..00000000 Binary files a/content/blog/leveling-up-your-javascript-skills/javascript.jpg and /dev/null differ diff --git a/content/blog/mock-openings-practice-interviewing/banner.jpg b/content/blog/mock-openings-practice-interviewing/banner.jpg deleted file mode 100644 index 5b1cc3c4..00000000 Binary files a/content/blog/mock-openings-practice-interviewing/banner.jpg and /dev/null differ diff --git a/content/blog/mock-openings-practice-interviewing/index.md b/content/blog/mock-openings-practice-interviewing/index.md deleted file mode 100644 index 8eb12211..00000000 --- a/content/blog/mock-openings-practice-interviewing/index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: New opportunity, practice interviewing -date: 2020-03-22 -tags: [ 'announcements', 'New opportunity'] -image: banner.jpg -author: shayan-yazdanpanah ---- - -Hi everyone! -This is another way to help the world. -The Coding Coach group gathers together to plan for another fake job opening, with the purpose of learning and helping practice on job applying and interviewing. - -Currently, we planned 3 different roles, and want to simulate the processing of a job interview for those who applied in any of these 3 roles. The purpose of this mock interview is to help those people who didn’t have much experience in applying for a job or interviewing, or even you can test yourself again during this process. The Coding Coach group is to help everyone to expand and improve their knowledge and experience. - -### How to apply -As we try to keep the process the same as a real job process so you need to access the jobs via the link below and apply for one role, with the required information. After that, we process with your application, simulate every step and give you feedback on each of the steps. - - -### How process goes -For make it clear, we have some steps in this process: - 1. You need to apply with your information, resume, and cover letter - 2. A behavioral interview takes around 20-40 minutes of a video call. - 3. Code assignment, that takes around 30 minutes - 4. Technical Interview, that takes around 30-50 minutes - 5. Evaluate and Give feedback. - - -Your information, interviewing process, and your evaluation keep private with us. - - -For starting, visit link [Mock Opening](/mock-openings/). diff --git a/content/blog/netlify-serverless-function-instagram-api/index.md b/content/blog/netlify-serverless-function-instagram-api/index.md deleted file mode 100644 index 19e39584..00000000 --- a/content/blog/netlify-serverless-function-instagram-api/index.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Instagram Feed API -date: 2019-11-27 -tags: - - instagram - - lambda - - netlify -image: netlify-lambda.jpg -author: cristian-echeverria ---- - -While I was working on a website for a relative, one of the requirements was to link one of the sections of the site with their Instagram account. - -So the concept was that; every time they post a picture on Instagram shows that picture on their website. But, only show the last 3 pictures. - -So I was googling trying to find a solution for this, I was thinking there has to be a third-party solution for this, and maybe I can find it for FREE, and yes, I found a couple of solutions but none was something I liked. - -And of course, I didn't want to pay for something like that, after all this site is hosted on Netlify with their free tier, the site is simple... no special framework, no nothing... just good old Javascript, HTML & CSS. - -### Step 1: Instagram API - -Instagram has documentation for developers where you can find [Endpoints](https://www.instagram.com/developer/endpoints/users/) for "Get the most recent media published by the owner of the access_token." The endpoint is this: - -`https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS-TOKEN` - -So, what we need now is to get an ACCESS_TOKEN. - -And you can do that by two simple steps: - -1- Login to the user Instagram Account - -2- Once you had logged in, you can click this [Site](https://instagram.pixelunion.net/), where you can Generate an ACCES_TOKEN by clicking a simple button. - -Now, we need somehow to have access to the Instagram API. But our website is static, I'm not using a server, is not necessary because this site was mean to be simple, remember? just good old Javascript, HTML & CSS. - -So we have a problem here. -The Solution?. Add dynamic-functionality with AWS Lambda Functions, [here](https://aws.amazon.com/lambda/) you can read more about this concept. - -### Step 2: Netlify Functions - -When you build and deploy sites on netlify, you can interact with third-party services and APIs with javascript places directly on your site. For example, you can have a script that sends event data to google analytics, or adds someone to a Mailchimp list or sends a request to a Zapier webhook. - -But what if you want to write scripts with something other than javascript? Or if you want to do more complex things like resize images or query a database? Or if you have sensitive information in your script such as API tokens that you don’t want to be embedded on your site and visible to all? Or if no service or API does what you need? - -That’s where [Netlify Functions](https://functions.netlify.com/) come in. - -Now that we have access to AWS Lambda Functions we can use one of the examples that you can find in Netlify site and create a Javascript script in your project like this: - -``` -const axios = require('axios') -exports.handler = function instagram(event, context, callback) { - const endpoint = 'https://api.instagram.com/v1/users/self/media/recent' - const token = process.env.INSTAGRAM_ACCESS_TOKEN - const limit = 5 - axios - .get(`${endpoint}?access_token=${token}&count=${limit}`) - .then(({ data: { data: posts } }) => { - callback(null, { - statusCode: 200, - headers: { - 'content-type': 'application/json', - }, - body: JSON.stringify( - posts.map(i => ({ - id: i.id, - link: i.link, - images: i.images, - videos: i.videos, - caption: i.caption.text, - })), - ), - }) - }) - .catch((e) => { - callback(e) - }) -} -``` - -### Step 3: Testing your Lambda - -As you can see, at this point we need to install some node libraries like Axios to fetch data from Instagram API. Also, you can test your code locally using netlify-lambda. - -`npm i netlify-lambda axios` - -With that, you can add a new script into your `package.json`. To serve your lambda function using netlify-lambda, you have to specify the location of your lambda function. In my case, I created a `./functions` folder and added my lambda functions there: - -``` -"scripts": { - "lambda-serve": "netlify-lambda serve functions", - "lambda-build": "netlify-lambda build functions" - }, -``` - -Another useful step is to create a `netlify.toml` file in the root of your project, then you can add the following commands: - -``` -[build] - functions = "lambda" - Command = "npm run lambda-build" -``` - -Keep in mind that you can also [specify the location of your lambda functions](https://docs.netlify.com/functions/configure-and-deploy/#configure-the-functions-folder) in netlify settings for your project, but if you use **netlify.toml** file it will override your configuration. - -Once you deploy your project to Netlify, it will install all the dependencies of your lambda function like **axios**. - -Also, you have to create environment variables for your ACCESS_TOKEN, as we defined in our code. - -`const token = process.env.INSTAGRAM_ACCESS_TOKEN` - -To create environment variables in Netlify, you can follow [this guide](https://docs.netlify.com/configure-builds/environment-variables/#netlify-configuration-variables), this is important because it allows us to hide the value of our ACCESS_TOKEN. - -Alright! - -Once you deploy your project, now you can get the result of your Lambda Function adding `/.netlify/functions/` to your domain, for example: - -`https://my-awesome-domain.com/.netlify/functions/my-lambda-function` where `my-lambda-function` is the name of the Javascript file where you defined your lambda function. - -### Testing locally - -You can also test the result of your Lambda locally. Remember that we added **netlify-lambda** library into our project?. We also added a command in our **project.json** file for serving our lambda functions. - -So to test this locally, just run the command `npm run lambda-serve` and you have a local server in the port 9000. - -Let me show you a small example of how you can test this locally: - -``` -const fetchInstafeed = async () => - await (await fetch('http://localhost:9000/getInstagramFeed')).json(); -fetchInstafeed().then(data => { - ... -}); -``` - -**But don´t forget** to update the fetch URL to just `/.netlify/functions/getInstagramFeed` when you're ready to deploy your site. - -**One more note:** Also I have to say that to test Instagram API locally, I had to update the header of my Lambda Function, because of CORS policy, to something like this: - -``` -headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': - 'Origin, X-Requested-With, Content-Type, Accept' - }, -``` - -### Conclusion - -I hope that you found this blog post helpful in some way. I think that using Static sites with the power of Lambda Functions is just awesome, the power of serverless applications is just great, thanks to Netlify team that set up this. Now I can request some API and transform my static site into a dynamic one. diff --git a/content/blog/netlify-serverless-function-instagram-api/netlify-lambda.jpg b/content/blog/netlify-serverless-function-instagram-api/netlify-lambda.jpg deleted file mode 100644 index b44984de..00000000 Binary files a/content/blog/netlify-serverless-function-instagram-api/netlify-lambda.jpg and /dev/null differ diff --git a/content/blog/our-new-mentorship-request-process/admin.jpeg b/content/blog/our-new-mentorship-request-process/admin.jpeg deleted file mode 100644 index 63d3ee26..00000000 Binary files a/content/blog/our-new-mentorship-request-process/admin.jpeg and /dev/null differ diff --git a/content/blog/our-new-mentorship-request-process/index.md b/content/blog/our-new-mentorship-request-process/index.md deleted file mode 100644 index 30b6ba58..00000000 --- a/content/blog/our-new-mentorship-request-process/index.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Our new mentorship request process -date: 2021-08-14 -image: new-mentorship-request.png -tags: - - codingcoach - - mentorship -author: mosh-feu ---- - -A couple of months ago we launched the new mentorship request process. - -
- -
- - -We put a lot of thoughts and coding time into it and we are very happy about the results. - -Since then, we received good feedback about it but then we started to receive feedback from mentors who'd prefer to keep the old process and they have very good reasons. - -Now that we had some time to test our ideas, we think it's a good time to explain our motivation to change the process and the results. - -**A reminder**: before the change, the mentors' channels were exposed so everyone could approach every mentor right away. So the old process was just to approach the mentor without us knowing anything about the request. Later on, we exposed the channels to CodingCoach members only. - -## What was better in the old process? - -- The direct way is shorter and clearer. In order to accept a request, mentors don't have to go the the mentors site -- When mentees approaching directly, their letters / messages are longer and more informative - -## What didn't go well in the old process? - -One of the goals of CodingCoach is to be as a reliable platform as possible. Makes sense, right? -Almost from day one, we received messages from mentees about them trying to connect mentors but the didn't hear back from them. We understood that some of the mentors are not active, maybe they never did. - -So, we added a checkbox in the mentor's settings area to allow mentors to state whether they are available or not. Some of the mentors did update their availability but we kept getting more feedback about non responding mentors. -The situation was that we couldn't say who of the mentors is active and who is not. - -## How it solved in the new process? - -Now that we have the list of the requests and the mentor and mentee details, we can (and we do) approach the non responding mentors. - -Some of them are indeed not responding, therefore we set them unavailable so mentees won't be able to contact them anymore (and disappointed). - -Some of them respond that they don't have capacity to take mentees so we ask them to make themselves unavailable and decline the current requests. - -But, surprisingly, some of them actually want and can be mentors but due technical issues or lack of attention, missed the requests. - -We are so excited to see these mentors are taking new mentees following our inquiries 🥳 -Here are some examples: - -
-
- Linkedin chat - mentor wasn't aware of the requests -
- Mentor approved requests after we sent a reminder -
Mentor approved requests after we sent a reminder
-
-
-
- Twitter chat - mentor wasn't aware of the requests -
-
- -This is for non active mentors, right? What about non active mentees? Mentee who sends requests but disappears. -How is it possible? Well, some mentees send A LOT of requests so once they find a mentor, they are not responding to other mentors. As a start, we are about to [limit the allowed open requests to 5](https://github.com/Coding-Coach/find-a-mentor-api/issues/206). -In order to send more requests, they have to cancel an existing one. We're also planning to give (or encourage) mentees the option to cancel other requests they made once one of their requests approved. - -Another advantage of knowing the "mentorship relationships" is that it opens us a door to more features such as mentee recommendations, reputations, spotlights etc. - -And last but not least, now both mentors and mentees have a full picture of all their mentors / mentees. - -## Conclusion - -- The new process gives us a better picture of the non responding mentors / mentees. -- It allows us to improve the way mentees approaching mentors (limit open requests, give a better way to skeleton mentorship requests)  -- It allows us to send reminders to the mentors -- It gives both mentors and mentees a full picture about their mentorship request / status. -- It opens a door for features like recommendations, reputations and more - -## Final words - -Running a volunteering system is not an easy task and we keep searching for the Golden Path. - -We'd love (seriously, not figuratively!) to hear more feedback about ways we can improve this process and others. \ No newline at end of file diff --git a/content/blog/our-new-mentorship-request-process/linkedin.jpeg b/content/blog/our-new-mentorship-request-process/linkedin.jpeg deleted file mode 100644 index c2165be7..00000000 Binary files a/content/blog/our-new-mentorship-request-process/linkedin.jpeg and /dev/null differ diff --git a/content/blog/our-new-mentorship-request-process/new-mentorship-request.png b/content/blog/our-new-mentorship-request-process/new-mentorship-request.png deleted file mode 100644 index afef3e26..00000000 Binary files a/content/blog/our-new-mentorship-request-process/new-mentorship-request.png and /dev/null differ diff --git a/content/blog/our-new-mentorship-request-process/twitter.jpeg b/content/blog/our-new-mentorship-request-process/twitter.jpeg deleted file mode 100644 index 6abbd143..00000000 Binary files a/content/blog/our-new-mentorship-request-process/twitter.jpeg and /dev/null differ diff --git a/content/blog/welcome-to-the-new-blog/commit-content.png b/content/blog/welcome-to-the-new-blog/commit-content.png deleted file mode 100644 index 02df9da0..00000000 Binary files a/content/blog/welcome-to-the-new-blog/commit-content.png and /dev/null differ diff --git a/content/blog/welcome-to-the-new-blog/create-post.png b/content/blog/welcome-to-the-new-blog/create-post.png deleted file mode 100644 index 93f8a50a..00000000 Binary files a/content/blog/welcome-to-the-new-blog/create-post.png and /dev/null differ diff --git a/content/blog/welcome-to-the-new-blog/index.md b/content/blog/welcome-to-the-new-blog/index.md deleted file mode 100644 index 42aee30b..00000000 --- a/content/blog/welcome-to-the-new-blog/index.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Welcome to the new blog -date: 2019-08-28 -tags: ['community', 'collaboration'] -author: crysfel-villa -image: main.jpg ---- -Over the last months we've been getting requests from different members to create a blog where everyone can participate and collaborate. - -Today I'm pleased to annouced our new blog! Where anyone can create a post through a GitHub PR! The idea is to have different topics such as mentoring, career growth, tutorials about technology, case studies and anything related to what Coding Coach stands for. - -## How to publish -We are using Gatsby to power this site, therefore in order to publish a new post, we need to build and deploy a new version that includes the new content. This process is automated by Netlify when merging code into the `master` branch. - -### Author Profile -The first thing you need to do is to create your author profile, we will display your avatar, description and a link to anywhere you want, you might use this link to promote your Coding Coach's mentor profile or personal site. You only need to do this once, all your posts will use the same information defined in this file. - -To create a profile you need to create a new markdown file under [/content/authors](https://github.com/Coding-Coach/coding-coach/tree/master/content/authors), for example `/content/authors/john-doe.md`. In here you need to fill the following fields: - -```markdown ---- -name: Crysfel Villa -avatar: https://avatars2.githubusercontent.com/u/219207?s=460&v=4 -link: https://mentors.codingcoach.io/u/5d543b6f5d08e470cb2a3b4d -about: I love writing tutorials about JavaScript, Node, IoT, etc. ---- -``` - -The fields are self explanatory, just replace the current values with your own information. - -### Writing Content -Once your author profile is done, you need to create a new folder for your post under [/content/blog](https://github.com/Coding-Coach/coding-coach/tree/master/content/blog), for example `/content/blog/my-first-post`, the name of this folder should not contain any white space or non-alphanumeric values, because this will be part of the URL of your post. - -Inside this folder you need need to add all the images you might want to show in your post as well as the post's content. For the content you will need to create an `index.md` file with the following fields at the top. - -```markdown ---- -title: Coding for fun for Coding Coach -date: 2019-04-29 -tags: - - developer - - coding - - community -image: coding-fun.jpeg -author: rodrigo-juarez ---- - -This is the main content, you can *start writing* here :) -``` - -* The `title` field is the main post's title, you should consider naming the main folder same as the post's title here. -* The `date` field as the name sugested, is the published date, make sure to follow the format. -* The `tags` field is an array of strings, each string represents a tag. You should consider adding at least two tags and up to five. -* The `image` field is the main image for this post, we only support `jpg` and `png`. Try to set the dimentions to 1200x700 pixels, while this is not required try to use the same ratio. -* The `author` field corresponds to the author of this post, and in here you need to add the name of the file in the `authors` folder. Internally we will load that file and get the data to show it next to this post. - -After you are done writing your article or tutorial, you will need to create a PR. - -## Submit content for review -In order to publish a new post, the content needs to be reviewed by the community and published by one of Coding Coach admins. In the reviewing process we may ask you to rephrase something, clarify your point or even help you with some grammar. We will leave all the feedback in the pull request, GitHub is great for this process. - -There are two ways to create a PR, cloning the project or using GitHub to write your content. - -### Cloning the repo -If you don't want to use GitHub and instead use your favorite editor, you can [fork the repo](https://help.github.com/en/articles/fork-a-repo) in GitHub and [clone your fork](https://help.github.com/en/articles/cloning-a-repository). To run the project in your system, you just need to install the dependencies and run the dev server. - -```bash -$ yarn install -$ yarn develop -``` - -Then open your browser in `http://localhost:8000` and you will see the app up and running! From here you will need to create a new folder in `content/blog` for your post and an author profile under `content/authors`. - -As soon as you create these files you will start seeing your post in the blog. - -After you are done, you will need to commit and push your changes. The create a PR in GitHub for the community to review your content. - -```bash -$ git add . -$ git commit -m 'Somethign cool' -$ git push origin my-first-post -``` - -### Using GitHub to write -You don't need to clone the repo in order to publish an article, you can use GitHub to create the PR and write your content using the online editor. - -The first thing you need to do is to open the [/content/blog](https://github.com/Coding-Coach/coding-coach/tree/master/content/blog) folder in your browser, then you need to click the `Create new file` button at the top right. - -![Create post](./create-post.png) - -Set a name for the folder and markdown file, for example `my-new-post/index.md` (Don't forget to add the `/` between the folder and the markdown file). Remember that this will be part of the URL, therefore use only alphanumeric values. You will see the editor where you can start typing right away, there's a preview button you can use to see how everything is looking while you work on your post. - -![Writing post](./write-post.png) - -Once you are done writing your post, you need to save it or commit it. This is very simple, all you need to do is to scroll down all the way to the bottom of the page, add a title to your commit and a description, these fields are not required but is good to know what you did in case we want to see at the history. - -Make sure to click into `Create a new branch for this commit...` option, and give it a name to your branch. This will allow you to better organize your all commits, or even come back at a later time and continue working on the same branch. - -![Commit post](./commit-content.png) - -Finally you need to create a PR to submit your post for review. After clicking the `Propose new file`, GitHub will take you to a screen where you can create a PR, just follow the direction and you should be good to go. - -Thank you for collaborating! diff --git a/content/blog/welcome-to-the-new-blog/main.jpg b/content/blog/welcome-to-the-new-blog/main.jpg deleted file mode 100644 index 730bcbb8..00000000 Binary files a/content/blog/welcome-to-the-new-blog/main.jpg and /dev/null differ diff --git a/content/blog/welcome-to-the-new-blog/write-post.png b/content/blog/welcome-to-the-new-blog/write-post.png deleted file mode 100644 index 9a66c598..00000000 Binary files a/content/blog/welcome-to-the-new-blog/write-post.png and /dev/null differ diff --git a/content/blog/whats-the-difference-between-double-and-triple-equals/dogs.jpg b/content/blog/whats-the-difference-between-double-and-triple-equals/dogs.jpg deleted file mode 100644 index da0bec99..00000000 Binary files a/content/blog/whats-the-difference-between-double-and-triple-equals/dogs.jpg and /dev/null differ diff --git a/content/blog/whats-the-difference-between-double-and-triple-equals/index.md b/content/blog/whats-the-difference-between-double-and-triple-equals/index.md deleted file mode 100644 index 3a1097dd..00000000 --- a/content/blog/whats-the-difference-between-double-and-triple-equals/index.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: What's the difference between == and ===? -date: 2020-06-01 -tags: ['javascript', 'tutorial', 'js-core'] -author: crysfel-villa -image: dogs.jpg ---- -A few months ago I was interviewing a Sr. Frontend Dev and I asked this question, he obviously knew that using triple equals when comparing values is the way to go and that this is a well known best practice in the JavaScript community. However, he had some issues explaining the difference between the two. - -I think is important to fully understand the difference between the two to avoid potencial issues and bugs in your code, but also we should be able to explain these conceps when mentoring Jr Developers. - -### Abstract Equality Comparison -The main difference between the double and triple equals is that the double equals (Also known as Abstract Equality Comparison) will cast the type of both variables and compare the value afterwards. In other words, it will check the types if both are different it will convert them to the same type and then execute the comparison, for example: - -``` -const a = 1 -const b = '1' - -console.log(a == b) // --> true -console.log(0 == '') // --> true -``` - -In the previous snippet, `b` is a string with a `'1'` value, but when the compiler executes the comparison, it will cast the `'1'` string to a `1` number (because number comparison is faster) and then will compare both numbers. - -As you can see the comparison algorithm is not ignoring the type, but rather converting both to the same time before comparing the values. - -### Strict Equality Comparison -However, the triple equals (also called as Strict Equality) takes the type into consideration when runing the comparison. For example: - -``` -const a = 1 -const b = '1' - -console.log(a === b) // --> false -console.log(0 === '') // --> false -``` - -Now you can see the result is different when we use the strict comparison, the triple equals is not casting the type but rather returning `false` if types are different, the comparison algorithm is not even checking the values, because the type comparison is already returning `false`. - -### When to use one or the other? -Now the question is, how do we know when to use double or triple equals when writing a comparison? In most cases, a triple equals comparison would be preferred to avoid potential bugs. - -However, in some instances using double equals might make sense. For example, let's say you want to check that a value is defined and is not null, you can write something like this: - -``` -const value = undefined; - -if (value == null) { - console.log('This value is `null` or `undefined`') -} -``` - -If you use the triple equals for that comparison, then you will have to explicitly check for both cases, otherwise is not going to work, because `null` is different than `undefined`: - -``` -const value = undefined; - -if (value === null || value === undefined) { - console.log('This value is `null` or `undefined`') -} -``` - -### Conclusion -As we all know, you will be safer to just use triple equals at all times, and that's why linters force you to do that, but understanding the difference between the two is very important. - -Let me know in the comments if this was useful or if you still have questions regarding this topic. diff --git a/content/contributors/brent-m-clark.md b/content/contributors/brent-m-clark.md deleted file mode 100644 index 9774e10d..00000000 --- a/content/contributors/brent-m-clark.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Brent M Clark -avatar: https://s.gravatar.com/avatar/2a2d22c34d297073e37687d3a846de47?s=460 -link: https://mentors.codingcoach.io/u/5d543b745d08e470cb2a3e3d ---- \ No newline at end of file diff --git a/content/contributors/emeruche-cole.md b/content/contributors/emeruche-cole.md deleted file mode 100644 index 5da36538..00000000 --- a/content/contributors/emeruche-cole.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Emeruche "Cole" Ikenna -avatar: https://avatars1.githubusercontent.com/u/43896019?s=460&v=4 -link: https://coleruche.com ---- diff --git a/content/contributors/fabian-guendel.md b/content/contributors/fabian-guendel.md deleted file mode 100644 index 96bd6682..00000000 --- a/content/contributors/fabian-guendel.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -name: Fabian Gündel -avatar: https://avatars0.githubusercontent.com/u/5798652?s=200 ---- diff --git a/content/contributors/jagadish-k.md b/content/contributors/jagadish-k.md deleted file mode 100644 index 5f45258b..00000000 --- a/content/contributors/jagadish-k.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Jagadish K. -avatar: https://avatars0.githubusercontent.com/u/390423?s=460&v=4 -link: https://github.com/jagzviruz ---- \ No newline at end of file diff --git a/content/contributors/mooli-morano.md b/content/contributors/mooli-morano.md deleted file mode 100644 index adde2585..00000000 --- a/content/contributors/mooli-morano.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Mooli Morano -avatar: https://avatars2.githubusercontent.com/u/16106431?s=460&u=8d6d656f19cd67e14330d68510188a679ae57f00&v=4 -link: https://www.linkedin.com/in/mooli-morano-0b28a37a/ ---- diff --git a/content/contributors/muthomi-mate.md b/content/contributors/muthomi-mate.md deleted file mode 100644 index a39ca4f5..00000000 --- a/content/contributors/muthomi-mate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Muthomi Mate -avatar: https://lh3.googleusercontent.com/a-/AAuE7mAuVULxrCXcsAHK9q9k8v6f12SltQDCFHv1v4dd4g -link: https://mentors.codingcoach.io/u/5d8a5ca0b857d02e062ed45b ---- \ No newline at end of file diff --git a/content/contributors/ramiro-zapata.md b/content/contributors/ramiro-zapata.md deleted file mode 100644 index f6d64e1e..00000000 --- a/content/contributors/ramiro-zapata.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Ramiro Zapata -avatar: https://avatars3.githubusercontent.com/u/2903296?s=460&v=4 -link: https://mentors.codingcoach.io/u/5d7ac2c7b857d02e062ed291 ---- \ No newline at end of file diff --git a/content/contributors/shayan-yazdanpanah.md b/content/contributors/shayan-yazdanpanah.md deleted file mode 100644 index 989b11f8..00000000 --- a/content/contributors/shayan-yazdanpanah.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Shayan Yazdanpanah -avatar: https://avatars0.githubusercontent.com/u/23405960?s=400&&v=4 -link: https://www.linkedin.com/in/shayanypn/ ---- \ No newline at end of file diff --git a/content/contributors/suemayah-eldursi.md b/content/contributors/suemayah-eldursi.md deleted file mode 100644 index a915ad92..00000000 --- a/content/contributors/suemayah-eldursi.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Suemayah Eldursi -avatar: https://api.codingcoach.io/avatars/tns/b5a5fb8242c531acff471a8d4abce847 -link: https://mentors.codingcoach.io/u/5fb1ad3f640f2e04524c6ab9 ---- \ No newline at end of file diff --git a/content/contributors/victor-ribero.md b/content/contributors/victor-ribero.md deleted file mode 100644 index 07bc4bf5..00000000 --- a/content/contributors/victor-ribero.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -name: Victor Ribero -avatar: https://avatars1.githubusercontent.com/u/16169890 -link: https://twitter.com/devictoribero ---- \ No newline at end of file diff --git a/content/guidelines/mentorship-guidelines.md b/content/guidelines/mentorship-guidelines.md deleted file mode 100644 index d1992219..00000000 --- a/content/guidelines/mentorship-guidelines.md +++ /dev/null @@ -1,293 +0,0 @@ ---- -title: Mentorship Guidelines -date: 2021-01-08 -path: /guidelines/mentorship-guidelines ---- - -Welcome to the Coding Coach Mentorship Guidelines! We’re happy you’re here. - -Taking the first step towards a mentorship can be a little daunting. It’s never easy to ask someone if they will take you under their wing and give you guidance. So we’re here to provide some guidelines to get you started! - -If you have any additional questions, feel free to send us an email at [admin@codingcoach.io](mailto:admin@codingcoach.io). - -## Mentorship Dictionary - -Below are some of the terms you may hear in relation to mentorship. - -### Mentee - -A mentee is someone who aspires to grow their skills in a particular topic or set of topics, and needs advice, assistance, support, and/or guidance. - - - -### Mentor - -A mentor is someone confident enough with their experiences and knowledge in a particular topic or set of topics, to comfortably assist others with less experience or knowledge. - - - -### Mentorship - -A mentorship is the relationship formed between two people, a mentor and a mentee, in which the mentor provides guidance or shares knowledge with the mentee in order to improve their skills or confidence. - - - -## Why Mentorship? - -Mentorship is a powerful tool which can help new hires looking to gain a foothold in an industry. Additionally, mentorship can provide great benefits to more experienced professionals looking to enhance their skills in a particular area. - -When you learn from someone who has gone through similar struggles and come out the other side, you gain invaluable knowledge and experience. - -Perhaps you’ve been struggling with a challenging coding problem for weeks, or perhaps you’re debating a career switch and want to talk about the new role in-depth prior to committing. Mentorship can offer you all of these benefits and more. - -Mentorship also provides you with a physical connection in your industry. Having these connections can make you feel more confident in your abilities to conquer your job. - -## Why Coding Coach? - -Coding Coach was created to facilitate mentorships between experienced developers (mentors) and juniors (mentees). It provides the mentees with the ability to ask questions, seek advice or assistance in growing their web development skills and knowledge, and gain insight into their career path. - -Just because someone is a mentor in one area doesn’t mean they can’t be a mentee in a different area. We recognize people have strengths in certain skills and weaknesses in others. Thus it’s more than okay to play the role of both mentor and mentee. - -We created Coding Coach to be a **free** platform in order to provide anyone, anywhere with the ability to foster a mentorship. We believe that mentorship should be accessible regardless of geographic location or financial well-being, so we set out to create an accessible application. - -Coding Coach is open-source, meaning it’s built by the community, for the community. We wanted Coding Coach to provide all developers with the power to ideate on new features and help build the future of mentorship. - -## Approaching A Mentorship - -A mentorship can take a variety of forms and lead to a variety of outcomes. It can be the kind of relationship that focuses on answering questions about a project that you’re stuck on, or about advice on learning a new language/technology/skill; or it can be about developing a learning plan for those who are self-taught. - -But it may also be the kind of relationship where advice is given/information shared about the industry, how to prepare for interviews, or a sharing of experiences about specific technologies or job roles. - -Be open to the possibility that you may connect with someone from the other side of the world, who may speak a different first language, or may be from another culture and/or country. - -This can pose a variety of challenges. If you’re based on opposite ends of the globe, you may choose to communicate in written form (email, Slack, or any other chat option) which allows ample time to respond without the pressure to arrange a specific meeting time. Or perhaps you’re both living within the same time zone and decide to hold your mentorship meetings through a video conferencing tool. - -### Setting Mentorship Expectations - -Whichever mentorship style you choose, you should set realistic expectations from the start. Think about how much time you can invest each day or week for communication. Communicate your expectations of the relationship as clearly as possible. Some questions you may want to address are: - -- What do you hope to achieve from the mentorship? - -- How much time are you willing and able to commit? - -- Should the mentorship meetings be once a week, twice a week, once a month, or ad-hoc? - -- Is this mentorship open-ended or do you need just a few sessions? - -- What will your primary method of communication be? - -- How do you want to track your progress? - -### Re-Evaluating Your Mentorship - -After a few mentorship sessions, it’s a good idea to re-evaluate your mentorship goals and assess your progress. A mentorship should only continue as long as both parties find the relationship to be valuable. - -### Ending A Mentorship - -If one or both of you decide that the mentorship is no longer serving its purpose, there’s no shame in pausing the mentorship or mutually ending it. You should never feel guilty about re-assessing the mentorship and ending it if that’s what’s best. - -If you’re thinking about ending your mentorship, here is one way you can respectfully end your mentorship. - -“Hi . I have truly appreciated the time we’ve spent during our mentorship sessions and I’ve learned a lot from you, however after reflecting upon my goals I’ve decided that it’s best to end our mentorship. I would love to stay in touch and keep the option on the table to revisit a possible mentorship in the future. Thank you again for your time.“ - -### Assessing Your Mentorship Goals - -If you both decide that you want to continue with the mentorship, you should revisit the established goals. - -- Are these goals still relevant and achievable? - -- Should I set new goals? - -Goals shouldn’t be too big or too small. They should be achievable within one or two sessions. For example if your overarching goal is to get better at React, set smaller goals which can be met by the next meeting. Your goals might look something like this: - -- Create one React functional component - -- Integrate the React functional component into an application - -- Create one React stateful component - -- Add state to the React component - -- Update state on user input - -Mentorships can lead to more than just improved skills and networking; they could also lead to a new job, a travel opportunity,or a collaboration on a project. We hope that the connections made on Coding Coach will be enjoyed to the fullest! - -## Types Of Mentorships - -There are several different types of mentorships you can take advantage of, and you don’t have to pick just one! You can have different mentors for different skills you want to improve. Below are two of the most common mentorships: - -### Career - -If you’re looking to gain insight on a particular career field or if you’re thinking about switching roles, a career mentorship might be a good fit for you. These are typically professionals who are in a role similar to yours or are in the role you see yourself being in one day. - -Here are some questions you may want to ask your career mentor: - -- What was you career path into your current role? - -- What was the biggest challenge you overcame? - -- What types of roles are available with my skill set? - -- What skills should I improve to achieve this role? - -### Technical - -Technical mentorships are the most popular mentorship type and there are a few ways you can approach them. My favorite type of technical mentor is project-based. - -We all learn programming best by writing code, thus it’s a good idea to create a project you and your mentor can work through. Before each meeting, set a list of features you want to implement, and then spend the mentor meeting reviewing your code. - -You may also choose a technical mentorship structured more as a question and answer. It’s important to come to the meeting with questions already written out so you can maximize your mentorship meetings. - -## Mentor Guidelines - -Being a great mentor doesn’t have to be hard, but it can be a bit confusing to get started. Below are some of the ways you can go from a good mentor to a great mentor. - -**Be Patient** - -Mentees may not always be able to articulate what kind of help they need and it will require patience as they try to describe what they’re struggling with. You can help coax them along, but be patient; they’ll get there. - -**Be A Good Communicator** - -Your mentee is likely to come from another nation so there may be cultural, language, and industry barriers to overcome. It will require you to be able to communicate well despite these barriers, and to really listen to what your mentee is trying to say. - -**Be A Guide** - -It can be tricky when mentees lack direction in their learning goals, and the temptation may be to design a learning path for them. However, goals that are not set and owned by the individual themselves are less likely to be followed through on. So, try to get that balance between making suggestions for your mentee and drawing out of them what they feel they need to focus on. - -**Be Willing To Share** - -Your time, your knowledge, your experiences, and your resources will be invaluable to your mentee. Mentees appreciate hearing your story, knowing what worked for you, what didn’t work for you; it adds to the richness of a mentorship to gain insight about how the day-to-day aspects of the job and industry. This can demystify the unknown for the mentee and help them to build up their confidence. - -**Be Trustworthy** - -Some mentees may be completely new to mentorship and thus it’s extremely important to build up a level of trust.. Making suggestions about which learning path to follow, or communicating via Google chat, or screen-sharing might be daunting and may make the mentee feel exposed or vulnerable. - -It’s always worth asking the question, “are you comfortable with...or if we…” These kinds of questions help put mentees at ease and re-assure them that you are sensitive to the possibility that they may feel a little skeptical about receiving guidance. - -**Be Discreet** - -Respect your mentees' privacy. Don't share their name, email or any of their details with anyone unless you received their explicit permission. Before you send groups messages make sure that no one can see each other details unless they agreed to. - -## How To Respond To Mentees - -So your first mentee has reached out! You’re extremely excited, but… now what? Below are the steps you should take once you’ve received your first mentee request. - -**Determine If This Mentorship Is Right** - -The first step is to determine whether to accept or reject this mentorship. Perhaps you already have five mentees and just cannot take on another right now. Or perhaps the mentee wants to improve a skill that you’re not very comfortable providing mentorship in. If you aren’t able to accept a mentee for whatever reason, you must be respectful with your decline. - -For many mentees, reaching out to a potential mentor is a nerve-wracking experience. Here is one example of a message that would be appropriate to decline a mentee: - -“Hi . Thank you so much for contacting me. I would love to mentor you but am unable to at this time. If my situation changes I will let you know. Regards .” - -If you are able to accept the mentorship, congratulations! You can move on to the next steps. - -**Determine Your Availability** - -Determine how much time you have available and clarify that up front. How much time can you devote to this mentee? Based upon your availability and their needs, determine how often you should meet. - -**Set Goals** - -Ask clarifying questions so that you understand exactly what the mentee is seeking advice about. What goals do they want to achieve from this mentorship? - -When making suggestions about what they could/should be learning, keep in mind that a mentee can become overwhelmed when you are too many steps ahead of them, or when they haven’t yet covered the basics of the tasks you are suggesting they try. - -As far as possible try to clarify with them where they’re at in their coding journey, to reduce the chances of misunderstanding and frustration before making suggestions of how they should proceed in their learning. - -## Mentee Guidelines - -Congratulations on taking the first step to being a mentee! Here are some guidelines for how to be a great mentee and get the most out of our mentorship. - -**Be Respectful** - -Be respectful of your mentor’s time. Show up when you’ve agreed to meet. A mentor is likely a very busy individual and they are giving up their time, likely during working hours, or in their free time, to meet with you. Plus, you want to get the most out of your meetings. - -**Show Gratitude** - -The mentors will help you for free so they are using their own time and resources and asking for nothing in return. Don’t take it for granted and show your appreciation by thanking them. Give them specific feedback about how they’ve helped you; it not only encourages them, but it also helps them become better mentors. - -**Be Open To Learning** - -Be open to the advice that your mentor gives you. Receiving direction from someone with more experience than you goes a long way in showing a mentor that you are willing to learn. - -**Respect Boundaries** - -Be mindful to not be too demanding of your mentor’s time. Each mentorship will be unique in frequency of communication. After the first few interactions you’ll begin to get a feel for what works for you and your mentor, but, if in doubt, you can be direct about the best times/days to communicate. - -### How To Reach Out To A Mentor - -First, determine which type of mentorship you’re looking for or which skill you’re looking to improve. Next, determine what types of things are important to you in a mentorship. Perhaps you’re looking for someone who lives in the same geographic location. Once you have these requirements figured out, you can begin your search for the perfect mentor. - -Once you’ve found the mentor you’d like to contact, it’s time to reach out. Here is a simple message you might want to send to a potential mentor: - -“Hi . I am looking to improve my skills in and found your profile on Coding Coach. I would love if we could establish a mentorship and work towards my goal. I am looking forward to hearing back from you.” - -### Searching For A Mentor - -Head over to [Coding Coach](https://mentors.codingcoach.io/) and look through the list of mentors. You can search, using the filters, for specific languages, technologies, or country. You can also favourite mentors that spark an interest. - -Once you’ve found a mentor you’re interested in (and after you registered of course), feel free to contact them using the provided channels (email, Slack, Twitter, etc.) Send them a short intro about who you are, where you’re from. Describe what your needs are, for example your goals in web development, and how a mentor could help you achieve those goals. A few sentences about each should do. Be as clear as you can. - -Sometimes, when you don’t know what you don’t know, it’s really difficult to articulate how you wish to grow. A course that has provided invaluable help with creating a learning path and set learning goals is Zubin Pratap’s [Before you learn programming: what will help you succeed](https://www.udemy.com/how-not-to-quit-coding/) at Udemy. - -Once you’ve clarified where you’re at, and how you’d like to grow, the mentor may make a few suggestions which might include things for you to focus on, read, study, work on. Together the two of you can decide what platform would be best to communicate on: Slack and email work well for communicating; you could also use a video conferencing service like Skype or GoToMeeting if you want to talk and share your screens. - -### Becoming A Mentor - -If you'd like to become a mentor, you can create an account at [https://mentors.codingcoach.io](https://mentors.codingcoach.io). Once you've created your account, you can click "become a mentor" and fill out the form. One of the community admins will review your application and will approve you soon. Be as detailed as you can; supply as many channels as you can (up to 3) and add a good avatar photo of you so the mentees will feel comfortable contacting you. You don’t need to be an expert to become a mentor; everyone has a unique view to offer. - -## Mentor FAQ - -**How much time a week should I be expected to be available for this?** - -As much as you're comfortable with, ideally as much as the protege needs but these comfort boundaries will need to be determined with your protege when you are introducing yourself to each other. Some mentorships meet weekly, some meet monthly. Others meet as-needed. It’s important to evaluate the mentorship and come to an agreement that suits your needs. - -**What sort of things will be expected of me?** - -You will simply be a touch point for the protege. They might need help with soft skills, technical skills, career advice or they might just like to talk to someone who understands all they acronyms that they know! Don't worry, you're only expected to share your experience you won't be responsible for making decisions on behalf of your protege. - -**What do I do if I don't know the answer to something?** - -Hey, you know a lot! Trust us, whatever you have to share is valuable and if you don't immediately know the answer working through the problem with your protege can be a great way for both you to learn. - -**Can I charge money for my mentorship?** - -Well, as we said, CodingCoach is a free platform which was developed by the help of the community. All of those good people are volunteers and they are investing their time for the good of the community. So, mentorship should be free as well. There are some paid platforms for paid mentorship and we completely understand anyone who wants to get paid for their great service, but it's not the goal of our community. - -## Mentee FAQ - -**What can my mentor help me with?** - -Your mentor can - -- Provide technical advice on problems that you're having that you're stuck on - -- Share their experience so to give you something to compare against your own experience to help guide you in your career or through a technical problem you're dealing with - -- Be available when they have the time to talk to you about issues you're working through in relation to coding or career. - -- Help you work through code related problem that you're hopelessly stuck on. They most often won't give you the answer but will rather get you over the immediate hurdle so that you can continue solving the problem yourself. - -**Is there anything my mentor can’t help me with?** - -Your mentor cannot be expected - -- To do your assignments for university - -- To be a replacement for your textbooks, online learning or google - -- To be someone who can be relied on to be available for any tech related thing at any time of day or night - -- To be a decision maker in your career or life - -**What is expected of me as a mentee?** - -- To try your earnest best to solve problems you have in the best way you can before asking questions - -- When you do ask questions, ask good questions. This means presenting what you've already tried, providing detail about the solution, sharing code and any other insights you have into the problem. Remember that the mentor is giving up their time to help you so make sure you're spending both of your time as efficiently as possible. - -- When you ask questions, listen to the answers, and try your best to follow the advice given even if you think it won't lead to the answer you want. Of course you are free to question the solution given but understand that you've asked a question because you're stuck and following the advice given may lead to a new understanding you didn't have before. - -# Conclusion - -We hope this mentorship guide has given you the skills and confidence you need to build a long-lasting mentorship. If you have any questions or concerns, you’re welcome to reach out at [admin@codingcoach.io](mailto:admin@codingcoach.io) diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..e38c8bdd Binary files /dev/null and b/favicon.ico differ diff --git a/gatsby-browser.js b/gatsby-browser.js deleted file mode 100644 index 95771096..00000000 --- a/gatsby-browser.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Implement Gatsby's Browser APIs in this file. - * - * See: https://www.gatsbyjs.org/docs/browser-apis/ - */ - -import './src/assets/css/app.css'; - -var Tawk_API = Tawk_API || {}, - Tawk_LoadStart = new Date(); -(function() { - var s1 = document.createElement('script'), - s0 = document.getElementsByTagName('script')[0]; - s1.async = true; - s1.src = 'https://embed.tawk.to/60a117b2185beb22b30dae86/1f5qk953t'; - s1.setAttribute('crossorigin', '*'); - s0.parentNode.insertBefore(s1, s0); -})(); diff --git a/gatsby-config.js b/gatsby-config.js deleted file mode 100644 index c6ef3f54..00000000 --- a/gatsby-config.js +++ /dev/null @@ -1,97 +0,0 @@ -const path = require("path"); - -const config = { - siteMetadata: { - title: `Coding Coach`, - description: `Connecting developers with mentors worldwide`, - author: `@crysfel`, - siteUrl: `https://codingcoach.io/`, - }, - plugins: [ - { - resolve: `gatsby-plugin-google-analytics`, - options: { - trackingId: `UA-133820299-1`, - }, - }, - { - resolve: `gatsby-transformer-remark`, - options: { - plugins: [ - `gatsby-remark-reading-time`, - { - resolve: `gatsby-remark-images`, - options: { - maxWidth: 1200, - linkImagesToOriginal: false, - }, - }, - ], - }, - }, - { - resolve: `gatsby-source-filesystem`, - options: { - name: `guidelines`, - path: `${__dirname}/content`, - }, - }, - { - resolve: `gatsby-source-filesystem`, - options: { - name: `legal`, - path: `${__dirname}/content`, - }, - }, - `gatsby-plugin-postcss`, - `gatsby-plugin-react-helmet`, - { - resolve: `gatsby-source-filesystem`, - options: { - name: `images`, - path: `${__dirname}/src/assets/images`, - }, - }, - `gatsby-transformer-sharp`, - `gatsby-plugin-sharp`, - { - resolve: `gatsby-plugin-disqus`, - options: { - shortname: `coding-coach` - } - }, - { - resolve: `gatsby-plugin-manifest`, - options: { - name: `Coding Coach`, - short_name: `Coding Coach`, - start_url: `/`, - background_color: `#20293a`, - theme_color: `#20293a`, - display: `standalone`, - icon: `src/assets/images/cc-icon.png`, // This path is relative to the root of the site. - }, - }, - // this (optional) plugin enables Progressive Web App + Offline functionality - // To learn more, visit: https://gatsby.dev/offline - `gatsby-plugin-offline`, - `gatsby-plugin-sitemap`, - ], -} - -if (process.env.NODE_ENV === 'production') { - config.plugins.push({ - resolve: `gatsby-plugin-purgecss`, - options: { - printRejected: true, // Print removed selectors and processed file names - // develop: true, // Enable while using `gatsby develop` - tailwind: true, // Enable tailwindcss support - whitelist: ['.blog-content'], // Don't remove this selector - whitelistPatternsChildren: [/^pre/, /^code/], - // ignore: ['/ignored.css', 'prismjs/', 'docsearch.js/'], // Ignore files/folders - // purgeOnly : ['components/', '/main.css', 'bootstrap/'], // Purge only these files/folders - } - }) -} - -module.exports = config diff --git a/gatsby-node.js b/gatsby-node.js deleted file mode 100644 index ef8f2cd6..00000000 --- a/gatsby-node.js +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Implement Gatsby's Node APIs in this file. - * - * See: https://www.gatsbyjs.org/docs/node-apis/ - */ - -const path = require(`path`) -const { createFilePath, createFileNode } = require(`gatsby-source-filesystem`); - -// Adding the slug to each node, the slug is based on the file system -// under `content` folder. -exports.onCreateNode = ({ node, getNode, actions }) => { - const { createNodeField } = actions - if (node.internal.type === `MarkdownRemark`) { - const slug = createFilePath({ node, getNode, basePath: `pages` }) - createNodeField({ - node, - name: `slug`, - value: slug, - }) - - } -} - -exports.createPages = async ({ actions, graphql }) => { - const { createPage } = actions - const LegalTemplate = path.resolve(`src/templates/legal.js`) - const PostTemplate = path.resolve(`src/templates/post.js`) - - const postsResult = await graphql(` - { - allMarkdownRemark( - filter: {fields: {slug: {regex: "/^\\/blog\\/.*/"}}} - sort: { order: DESC, fields: [frontmatter___date] } - limit: 1000 - ) { - edges { - node { - fields { - slug - } - } - } - } - } - `) - - const legalResult = await graphql(` - { - allMarkdownRemark( - filter: {fields: {slug: {regex: "/^\\/(legal|guidelines)\\/.*/"}}} - sort: { order: DESC, fields: [frontmatter___date] } - limit: 1000 - ) { - edges { - node { - fields { - slug - } - } - } - } - } - `) - - if (postsResult.errors) { - console.log(postsResult.errors) - throw new Error("Things broke while getting posts, see console output above") - } - - if (legalResult.errors) { - console.log(legalResult.errors) - throw new Error("Things broke while getting legal pages, see console output above") - } - - legalResult.data.allMarkdownRemark.edges.forEach(({ node }) => { - createPage({ - path: node.fields.slug, - component: LegalTemplate, - context: { - slug: node.fields.slug, - }, // additional data can be passed via context - }) - }) - - postsResult.data.allMarkdownRemark.edges.forEach(({ node }) => { - createPage({ - path: node.fields.slug, - component: PostTemplate, - context: { - slug: node.fields.slug, - }, // additional data can be passed via context - }) - }) -} diff --git a/gatsby-ssr.js b/gatsby-ssr.js deleted file mode 100644 index b17b8fc1..00000000 --- a/gatsby-ssr.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Implement Gatsby's SSR (Server Side Rendering) APIs in this file. - * - * See: https://www.gatsbyjs.org/docs/ssr-apis/ - */ - -// You can delete this file if you're not using it diff --git a/index.html b/index.html new file mode 100644 index 00000000..fb7fa597 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +Coding Coach

Coding Coach

Connecting developers with mentors worldwide

Find a Mentor

About

Coding Coach is a free, open-source platform which aims to connect software developers and mentors all over the world. It is built by a group of talented and passionate developers, designers, engineers, and humans who want to make the engineering world a better place to collaborate. This project was born out of a desire to provide a platform to connect mentors and mentees throughout the world at no cost. Coding Coach is created by the people, for the people.

Man walking into a laptop

Mission

We believe that mentorship should be accessible to all people regardless of location or financial standing. In pursuit of this goal we will provide a free and open source platform to facilitate mentorship connections. Our mission is to foster a greater sense of collaboration and inclusiveness in the technical industry by providing a platform to aid the mentorship process.

Group of people

Contact

We want to hear your thoughts! Feel free to join our Slack Organization or send us an email at codingcoachio@gmail.com

Person using a magnifying glass to see the details of another guy.

To help personalize content, tailor and measure ads, and provide a safer experience, we use cookies. By clicking or navigating the site, you agree to allow our collecion of information on and off Coding Coach through cookies. Learn more, including about available controls:

\ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..f73f05cf --- /dev/null +++ b/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "Coding Coach", + "name": "Coding Coach", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#00BC89", + "background_color": "#ffffff" +} diff --git a/openings/frontend-jr/index.html b/openings/frontend-jr/index.html new file mode 100644 index 00000000..a4a349bd --- /dev/null +++ b/openings/frontend-jr/index.html @@ -0,0 +1 @@ +Coding Coach

Jr. Frontend Developer

Reactive Technologies

Apply Now

About the company

Reactive Technologies is looking for a full time Junior Frontend Developer to support our food related products. Reactive Recipes is a platform that connects chefs, dieticians and nutriologies with people looking to eat healthy.

Our focus is to allow people, from all over the world, to find help planning their meals by professionals depending on their goals. Reactive Recipes front end is written primarily in React JS (javascript) for the backend we use microservices written mostly with Ruby or Python.

The ideal candidate for this position is a fast learner excited to use the latest frameworks to build new and innovative products.

Primary responsibilities

  • Work with development team to build and maintain our web software
  • Implement new features for our frontend software
  • Fix issues and bugs in our current platform
  • Ensure quality code through test development and code review

Requirements

  • Excellent oral and written communication skills
  • Ability to work independently as well as with a team of local and remote developers
  • Able to stay current with bleeding edge technologies for web
  • Experience with JavaScript
  • Familiarity with modern frontend JS frameworks and libraries, like React, Vue, Angular, Flux, Redux and the core principles surrounding these.
  • Familiarity with front-end styling implementations (CSS, CSS in JS, styled-components, glamorous, etc.)

Bonus skills

  • Familiarity with Node and Express
  • Familiarity with React Native
  • Familiarity with web application servers, like Nginx
  • Familiarity with Devops tools like Docker/Kubernetes or continuous integration experience with Jenkins or circleCI

* This is a mock opening for a mock company to set up a mock interview process.

\ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 47f4416d..00000000 --- a/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "coding-coach-blog", - "private": true, - "description": "The coding coach landing page and blog", - "version": "0.1.0", - "author": "Crysfel Villa ", - "dependencies": { - "classnames": "2.2.6", - "gatsby": "2.13.44", - "gatsby-image": "2.2.8", - "gatsby-plugin-disqus": "^1.1.2", - "gatsby-plugin-google-analytics": "2.1.11", - "gatsby-plugin-manifest": "2.2.4", - "gatsby-plugin-offline": "2.2.4", - "gatsby-plugin-postcss": "^4.11.0", - "gatsby-plugin-purgecss": "^4.0.1", - "gatsby-plugin-react-helmet": "3.1.2", - "gatsby-plugin-sharp": "2.2.10", - "gatsby-plugin-sitemap": "^2.2.12", - "gatsby-remark-images": "^3.1.19", - "gatsby-remark-reading-time": "1.0.1", - "gatsby-source-filesystem": "2.1.6", - "gatsby-transformer-remark": "2.6.10", - "gatsby-transformer-sharp": "2.2.6", - "prop-types": "15.7.2", - "react": "16.8.6", - "react-dom": "16.8.6", - "react-helmet": "5.2.1", - "tailwindcss": "^2.2.7" - }, - "devDependencies": { - "postcss-loader": "^6.1.1", - "autoprefixer": "^10.3.1", - "gatsby-cli": "2.7.39", - "postcss": "^8.3.6", - "prettier": "1.18.2" - }, - "keywords": [ - "gatsby" - ], - "license": "MIT", - "scripts": { - "build": "gatsby build", - "develop": "gatsby develop", - "format": "prettier --write src/**/*.{js,jsx}", - "start": "npm run develop", - "serve": "gatsby serve", - "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\"" - }, - "repository": { - "type": "git", - "url": "https://github.com/gatsbyjs/gatsby-starter-default" - }, - "bugs": { - "url": "https://github.com/gatsbyjs/gatsby/issues" - } -} diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index ce883885..00000000 --- a/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ - -module.exports = () => ({ - plugins: { - tailwindcss: {}, - autoprefixer: {}, - } -}) diff --git a/precache-manifest.5b46d6386a5db67db9646836f176f44b.js b/precache-manifest.5b46d6386a5db67db9646836f176f44b.js new file mode 100644 index 00000000..bd97d224 --- /dev/null +++ b/precache-manifest.5b46d6386a5db67db9646836f176f44b.js @@ -0,0 +1,74 @@ +self.__precacheManifest = [ + { + "revision": "01142835027ed21d551128444ff6d5a0", + "url": "/static/media/about.01142835.svg" + }, + { + "revision": "009c13365f7b343579e9", + "url": "/static/css/main.06566a6a.chunk.css" + }, + { + "revision": "9782eab908ce4116e33c", + "url": "/static/js/1.9782eab9.chunk.js" + }, + { + "revision": "229c360febb4351a89df", + "url": "/static/js/runtime~main.229c360f.js" + }, + { + "revision": "fe5c486fbabec76e63d0793bd8362c7a", + "url": "/static/media/coding-coach-logo.fe5c486f.svg" + }, + { + "revision": "6c67e12ddf1d9a8c63f909a1f5c90160", + "url": "/static/media/PrivacyPolicy.6c67e12d.md" + }, + { + "revision": "c8ebff2d4eb1969a8ce8ea29267fda9f", + "url": "/static/media/CookiesPolicy.c8ebff2d.md" + }, + { + "revision": "49f2cd99bc00609ad8dec3a4c3ef801e", + "url": "/static/media/TermsAndConditions.49f2cd99.md" + }, + { + "revision": "e9ad259fb3be7d51f6ef9762273adad0", + "url": "/static/media/CodeOfConduct.e9ad259f.md" + }, + { + "revision": "009c13365f7b343579e9", + "url": "/static/js/main.009c1336.chunk.js" + }, + { + "revision": "3c72b01c43a10d34c2d828b13c14bfd0", + "url": "/static/media/mission.3c72b01c.svg" + }, + { + "revision": "ba7a97dc3f4b9e2ec032e0374192c668", + "url": "/static/media/contact.ba7a97dc.svg" + }, + { + "revision": "e10d0661a19f4b3fe8f5552d5759df00", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.e10d0661.woff2" + }, + { + "revision": "96a1ada5a2657ab821d1111afafc8bac", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.96a1ada5.woff" + }, + { + "revision": "e78dce533ecee30c5efd812bb23c248d", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.e78dce53.woff2" + }, + { + "revision": "86f83cc557017c273dd44fa39d78a341", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.86f83cc5.woff" + }, + { + "revision": "4f9ba239fe618b4151cf08e269a7e2f3", + "url": "/static/media/forgot-password.4f9ba239.svg" + }, + { + "revision": "2b3163c32b1e426448222b016be646ad", + "url": "/index.html" + } +]; \ No newline at end of file diff --git a/precache-manifest.84d63d910b451dd8a6fd2351d9ceddcf.js b/precache-manifest.84d63d910b451dd8a6fd2351d9ceddcf.js new file mode 100644 index 00000000..8d63491e --- /dev/null +++ b/precache-manifest.84d63d910b451dd8a6fd2351d9ceddcf.js @@ -0,0 +1,74 @@ +self.__precacheManifest = [ + { + "revision": "01142835027ed21d551128444ff6d5a0", + "url": "/static/media/about.01142835.svg" + }, + { + "revision": "62b30926343822f18f2e", + "url": "/static/css/main.747edb1c.chunk.css" + }, + { + "revision": "c3a915477fb3b97d4e07", + "url": "/static/js/1.c3a91547.chunk.js" + }, + { + "revision": "229c360febb4351a89df", + "url": "/static/js/runtime~main.229c360f.js" + }, + { + "revision": "6c67e12ddf1d9a8c63f909a1f5c90160", + "url": "/static/media/PrivacyPolicy.6c67e12d.md" + }, + { + "revision": "c8ebff2d4eb1969a8ce8ea29267fda9f", + "url": "/static/media/CookiesPolicy.c8ebff2d.md" + }, + { + "revision": "49f2cd99bc00609ad8dec3a4c3ef801e", + "url": "/static/media/TermsAndConditions.49f2cd99.md" + }, + { + "revision": "2d4100d1da6cc54a15c1d3528f87ec40", + "url": "/static/media/CodeOfConduct.2d4100d1.md" + }, + { + "revision": "fe5c486fbabec76e63d0793bd8362c7a", + "url": "/static/media/coding-coach-logo.fe5c486f.svg" + }, + { + "revision": "62b30926343822f18f2e", + "url": "/static/js/main.62b30926.chunk.js" + }, + { + "revision": "3c72b01c43a10d34c2d828b13c14bfd0", + "url": "/static/media/mission.3c72b01c.svg" + }, + { + "revision": "ba7a97dc3f4b9e2ec032e0374192c668", + "url": "/static/media/contact.ba7a97dc.svg" + }, + { + "revision": "e10d0661a19f4b3fe8f5552d5759df00", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.e10d0661.woff2" + }, + { + "revision": "96a1ada5a2657ab821d1111afafc8bac", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.96a1ada5.woff" + }, + { + "revision": "e78dce533ecee30c5efd812bb23c248d", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.e78dce53.woff2" + }, + { + "revision": "86f83cc557017c273dd44fa39d78a341", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.86f83cc5.woff" + }, + { + "revision": "4f9ba239fe618b4151cf08e269a7e2f3", + "url": "/static/media/forgot-password.4f9ba239.svg" + }, + { + "revision": "b246b8ea4f416c0fcbb611ead200517c", + "url": "/index.html" + } +]; \ No newline at end of file diff --git a/precache-manifest.ccc9abca6d9b605a1fd2d7328b1cca33.js b/precache-manifest.ccc9abca6d9b605a1fd2d7328b1cca33.js new file mode 100644 index 00000000..c009bdc9 --- /dev/null +++ b/precache-manifest.ccc9abca6d9b605a1fd2d7328b1cca33.js @@ -0,0 +1,74 @@ +self.__precacheManifest = [ + { + "revision": "01142835027ed21d551128444ff6d5a0", + "url": "/static/media/about.01142835.svg" + }, + { + "revision": "2a0fb4c8467d7337a05d", + "url": "/static/css/main.06566a6a.chunk.css" + }, + { + "revision": "9782eab908ce4116e33c", + "url": "/static/js/1.9782eab9.chunk.js" + }, + { + "revision": "229c360febb4351a89df", + "url": "/static/js/runtime~main.229c360f.js" + }, + { + "revision": "fe5c486fbabec76e63d0793bd8362c7a", + "url": "/static/media/coding-coach-logo.fe5c486f.svg" + }, + { + "revision": "6c67e12ddf1d9a8c63f909a1f5c90160", + "url": "/static/media/PrivacyPolicy.6c67e12d.md" + }, + { + "revision": "c8ebff2d4eb1969a8ce8ea29267fda9f", + "url": "/static/media/CookiesPolicy.c8ebff2d.md" + }, + { + "revision": "49f2cd99bc00609ad8dec3a4c3ef801e", + "url": "/static/media/TermsAndConditions.49f2cd99.md" + }, + { + "revision": "e9ad259fb3be7d51f6ef9762273adad0", + "url": "/static/media/CodeOfConduct.e9ad259f.md" + }, + { + "revision": "2a0fb4c8467d7337a05d", + "url": "/static/js/main.2a0fb4c8.chunk.js" + }, + { + "revision": "3c72b01c43a10d34c2d828b13c14bfd0", + "url": "/static/media/mission.3c72b01c.svg" + }, + { + "revision": "ba7a97dc3f4b9e2ec032e0374192c668", + "url": "/static/media/contact.ba7a97dc.svg" + }, + { + "revision": "e10d0661a19f4b3fe8f5552d5759df00", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.e10d0661.woff2" + }, + { + "revision": "96a1ada5a2657ab821d1111afafc8bac", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.96a1ada5.woff" + }, + { + "revision": "e78dce533ecee30c5efd812bb23c248d", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.e78dce53.woff2" + }, + { + "revision": "86f83cc557017c273dd44fa39d78a341", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.86f83cc5.woff" + }, + { + "revision": "4f9ba239fe618b4151cf08e269a7e2f3", + "url": "/static/media/forgot-password.4f9ba239.svg" + }, + { + "revision": "57acf4ef8f3da646404a40e32cc54198", + "url": "/index.html" + } +]; \ No newline at end of file diff --git a/precache-manifest.e2440fc716f05a512077049500142916.js b/precache-manifest.e2440fc716f05a512077049500142916.js new file mode 100644 index 00000000..1c5a3b89 --- /dev/null +++ b/precache-manifest.e2440fc716f05a512077049500142916.js @@ -0,0 +1,70 @@ +self.__precacheManifest = [ + { + "revision": "01142835027ed21d551128444ff6d5a0", + "url": "/static/media/about.01142835.svg" + }, + { + "revision": "a8a1712c7a6fa6eb6ae3", + "url": "/static/css/main.b1ebd1e6.chunk.css" + }, + { + "revision": "5b403fa084221c697cdd", + "url": "/static/js/1.5b403fa0.chunk.js" + }, + { + "revision": "229c360febb4351a89df", + "url": "/static/js/runtime~main.229c360f.js" + }, + { + "revision": "6c67e12ddf1d9a8c63f909a1f5c90160", + "url": "/static/media/PrivacyPolicy.6c67e12d.md" + }, + { + "revision": "c8ebff2d4eb1969a8ce8ea29267fda9f", + "url": "/static/media/CookiesPolicy.c8ebff2d.md" + }, + { + "revision": "49f2cd99bc00609ad8dec3a4c3ef801e", + "url": "/static/media/TermsAndConditions.49f2cd99.md" + }, + { + "revision": "fe5c486fbabec76e63d0793bd8362c7a", + "url": "/static/media/coding-coach-logo.fe5c486f.svg" + }, + { + "revision": "a8a1712c7a6fa6eb6ae3", + "url": "/static/js/main.a8a1712c.chunk.js" + }, + { + "revision": "3c72b01c43a10d34c2d828b13c14bfd0", + "url": "/static/media/mission.3c72b01c.svg" + }, + { + "revision": "ba7a97dc3f4b9e2ec032e0374192c668", + "url": "/static/media/contact.ba7a97dc.svg" + }, + { + "revision": "96a1ada5a2657ab821d1111afafc8bac", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.96a1ada5.woff" + }, + { + "revision": "e10d0661a19f4b3fe8f5552d5759df00", + "url": "/static/media/fjalla-one-v5-latin_latin-ext-regular.e10d0661.woff2" + }, + { + "revision": "e78dce533ecee30c5efd812bb23c248d", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.e78dce53.woff2" + }, + { + "revision": "86f83cc557017c273dd44fa39d78a341", + "url": "/static/media/open-sans-v15-cyrillic-ext_vietnamese_cyrillic_greek_greek-ext_latin_latin-ext-regular.86f83cc5.woff" + }, + { + "revision": "4f9ba239fe618b4151cf08e269a7e2f3", + "url": "/static/media/forgot-password.4f9ba239.svg" + }, + { + "revision": "0754edf627c11445784052b65c3c92ba", + "url": "/index.html" + } +]; \ No newline at end of file diff --git a/report.html b/report.html new file mode 100644 index 00000000..0e677d82 --- /dev/null +++ b/report.html @@ -0,0 +1,64 @@ + + + + + + Webpack Bundle Analyzer + + + + + + + + + +
+ + + diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 00000000..2a2987a3 --- /dev/null +++ b/service-worker.js @@ -0,0 +1,34 @@ +/** + * Welcome to your Workbox-powered service worker! + * + * You'll need to register this file in your web app and you should + * disable HTTP caching for this file too. + * See https://goo.gl/nhQhGp + * + * The rest of the code is auto-generated. Please don't update this file + * directly; instead, make changes to your Workbox build configuration + * and re-run your build process. + * See https://goo.gl/2aRDsh + */ + +importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js"); + +importScripts( + "/precache-manifest.ccc9abca6d9b605a1fd2d7328b1cca33.js" +); + +workbox.clientsClaim(); + +/** + * The workboxSW.precacheAndRoute() method efficiently caches and responds to + * requests for URLs in the manifest. + * See https://goo.gl/S9QRab + */ +self.__precacheManifest = [].concat(self.__precacheManifest || []); +workbox.precaching.suppressWarnings(); +workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); + +workbox.routing.registerNavigationRoute("/index.html", { + + blacklist: [/^\/_/,/\/[^\/]+\.[^\/]+$/], +}); diff --git a/src/assets/css/app.css b/src/assets/css/app.css deleted file mode 100644 index bd9bcc43..00000000 --- a/src/assets/css/app.css +++ /dev/null @@ -1,28 +0,0 @@ -@tailwind base; - -@tailwind components; - -@tailwind utilities; - -/* fjalla-one-regular - latin_latin-ext */ -@font-face { - font-family: 'Fjalla One'; - font-style: normal; - font-weight: 400; - src: url('../fonts/fjalla-one.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ - url('../fonts/fjalla-one.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: url('../fonts/open-sans.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ - url('../fonts/open-sans.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -figcaption { - font-size: 0.8rem; - font-style: italic; - text-align: center; -} diff --git a/src/assets/images/404.svg b/src/assets/images/404.svg deleted file mode 100644 index e9a44bf8..00000000 --- a/src/assets/images/404.svg +++ /dev/null @@ -1 +0,0 @@ -page not found \ No newline at end of file diff --git a/src/assets/images/cc-icon.png b/src/assets/images/cc-icon.png deleted file mode 100644 index 3fab9f31..00000000 Binary files a/src/assets/images/cc-icon.png and /dev/null differ diff --git a/src/assets/images/cc-tshirt.png b/src/assets/images/cc-tshirt.png deleted file mode 100644 index fc5a5508..00000000 Binary files a/src/assets/images/cc-tshirt.png and /dev/null differ diff --git a/src/assets/images/gatsby-astronaut.png b/src/assets/images/gatsby-astronaut.png deleted file mode 100644 index da58ece0..00000000 Binary files a/src/assets/images/gatsby-astronaut.png and /dev/null differ diff --git a/src/assets/images/twitch.png b/src/assets/images/twitch.png deleted file mode 100644 index b873b344..00000000 Binary files a/src/assets/images/twitch.png and /dev/null differ diff --git a/src/components/Banner/Cookies.js b/src/components/Banner/Cookies.js deleted file mode 100644 index 32f2041e..00000000 --- a/src/components/Banner/Cookies.js +++ /dev/null @@ -1,52 +0,0 @@ -import React, { PureComponent } from 'react'; -import { Link } from 'gatsby'; - -import Banner from './index'; -import { isLocalStorageSuported } from '../../utils/localstorage'; - -const COOKIES_NAME = 'codingCoachCookies'; - -export default class Cookies extends PureComponent{ - state = { - accepted: true, - }; - - componentWillMount() { - let accepted = false; - - if (isLocalStorageSuported()) { - accepted = !!localStorage.getItem(COOKIES_NAME); - } - - this.setState({ accepted }); - } - - toggleAccepted = () => { - this.setState((current) => { - const accepted = !current.accepted; - - localStorage.setItem(COOKIES_NAME, accepted); - return { - accepted, - }; - }); - } - - render() { - const { accepted } = this.state; - - if (accepted) { - return null; - } - - return ( - -

- To help personalize content, tailor and measure ads, and provide a safer experience, we use cookies. - By clicking or navigating the site, you agree to allow our collection of information on and off Coding Coach through cookies. - Learn more, including about available controls Cookies Policy -

-
- ); - } -} diff --git a/src/components/Banner/index.js b/src/components/Banner/index.js deleted file mode 100644 index 9c936ad9..00000000 --- a/src/components/Banner/index.js +++ /dev/null @@ -1,29 +0,0 @@ -import React, { PureComponent } from 'react'; -import { bool, func } from 'prop-types'; -import classNames from 'classnames'; - -import CloseIcon from '../Icon/Close'; - -export default class Banner extends PureComponent { - static propTypes = { - closable: bool, - onClose: func, - }; - - render() { - const { children, closable, onClose } = this.props; - - return ( -
-
-
- {children} -
- { closable && - - } -
-
- ); - } -} diff --git a/src/components/Button/ScrollTop.js b/src/components/Button/ScrollTop.js deleted file mode 100644 index 5be4954e..00000000 --- a/src/components/Button/ScrollTop.js +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; - -import ArrowUp from '../Icon/ArrowUp'; -import Button from './index'; - -const styles = { - hide: { - bottom: 90, - right: -65, - }, - show: { - right: 15, - }, -}; - -export default class ScrollTop extends React.Component { - state = { - scrollTopClass: '', - }; - - componentDidMount() { - this.scrollHandler(); - window.addEventListener('scroll', this.scrollHandler); - } - - componentWillUnmount() { - window.removeEventListener('scroll', this.scrollHandler); - } - - scrollHandler = () => { - const scrollToTopClass = window.pageYOffset > window.innerHeight / 4 ? 'opacity-100' : ''; - - if (scrollToTopClass !== this.state.scrollToTopClass) { - this.setState({ - scrollToTopClass, - }); - } - }; - - scrollToTop = () => { - window.scrollTo({ - behavior: 'smooth', - top: 0, - }); - }; - - render() { - const { scrollToTopClass } = this.state; - - return ( -
- -
- ); - } -} diff --git a/src/components/Button/index.js b/src/components/Button/index.js deleted file mode 100644 index 0077026b..00000000 --- a/src/components/Button/index.js +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import { any, func, string } from 'prop-types'; -import classNames from 'classnames'; -import { Link } from 'gatsby'; - -const Button = React.memo(({ children, className, to, onClick }) => { - const css = classNames('inline-block bg-primary text-white px-6 py-3 rounded hover:bg-primary-dark', className); - - if (to) { - if (to.startsWith('http')) { - return ( - {children} - ); - } - - return ( - {children} - ); - } - - return ( - - ); -}); - -Button.propTypes = { - children: any, - className: string, - onClick: func, -}; - -export default Button; diff --git a/src/components/Footer/index.js b/src/components/Footer/index.js deleted file mode 100644 index 5676b56e..00000000 --- a/src/components/Footer/index.js +++ /dev/null @@ -1,35 +0,0 @@ -import React, { Fragment } from 'react'; -import { Link } from 'gatsby' - -import CookiesBanner from '../Banner/Cookies'; -import ScrollTop from '../Button/ScrollTop'; - -export default function Footer() { - return ( - -
-
-
    - Terms & Conditions - Cookies - Privacy Policy - Code Of Conduct -
-
-
- - -
- ); -} - -function LinkItem({ children, to, target, href }) { - const props = { children, to, target, href, className: 'text-body text-secondary-dark hover:underline hover:text-primary-light' }; - // eslint-disable-next-line - const LinkComponent = href ? : ; - return ( -
  • - {LinkComponent} -
  • - ); -} diff --git a/src/components/Header/index.js b/src/components/Header/index.js deleted file mode 100644 index 18393c83..00000000 --- a/src/components/Header/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; - -import logoImage from '../../assets/images/logo.svg'; - -export default React.memo(function Header({ children, title, subtitle }) { - return ( -
    -
    -
    -

    {title}

    - {subtitle &&

    {subtitle}

    } - {children} -
    -
    - The coding coach logo -
    -
    -
    - ); -}); diff --git a/src/components/Icon/ArrowUp.js b/src/components/Icon/ArrowUp.js deleted file mode 100644 index 7864d841..00000000 --- a/src/components/Icon/ArrowUp.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import Icon from './index.js'; - -const vectors = 'M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z'; // eslint-disable-line - -export default function ArrowUp(props) { - return ; -} diff --git a/src/components/Icon/Close.js b/src/components/Icon/Close.js deleted file mode 100644 index 6c189405..00000000 --- a/src/components/Icon/Close.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import Icon from './index'; - -const vectors = 'M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z'; // eslint-disable-line - -export default function Close(props) { - return ; -} \ No newline at end of file diff --git a/src/components/Icon/Facebook.js b/src/components/Icon/Facebook.js deleted file mode 100644 index 5573a9cd..00000000 --- a/src/components/Icon/Facebook.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import Icon from './index'; - -const vectors = 'M8.65244566,0 L1.34752988,0 C0.603324486,0 0,0.603295596 0,1.34751999 L0,8.65243109 C0,9.39665548 0.603300023,9.99995107 1.34752988,9.99995107 L4.95027949,9.99995107 L4.95641963,6.42650958 L4.0280343,6.42650958 C3.90738408,6.42650958 3.80945974,6.3289529 3.80899495,6.20830357 L3.80454273,5.05643512 C3.80407794,4.9351253 3.90229583,4.83654119 4.02360654,4.83654119 L4.95030395,4.83654119 L4.95030395,3.72354374 C4.95030395,2.4319207 5.73915383,1.72862217 6.89137322,1.72862217 L7.83685801,1.72862217 C7.95782624,1.72862217 8.05592182,1.82669256 8.05592182,1.94768437 L8.05592182,2.91894576 C8.05592182,3.03988865 7.95789963,3.13793458 7.83698032,3.13800797 L7.25674866,3.13827705 C6.63013565,3.13827705 6.50880047,3.4360353 6.50880047,3.87300997 L6.50880047,4.83656565 L7.88568563,4.83656565 C8.01687929,4.83656565 8.11866874,4.95112381 8.10320829,5.08141139 L7.96668175,6.23327984 C7.95361865,6.34350813 7.86014653,6.42655851 7.74915909,6.42655851 L6.51494062,6.42655851 L6.50880047,10 L8.65249459,10 C9.39669998,10 10,9.3967044 10,8.65250448 L10,1.34751999 C9.99997554,0.603295596 9.39667551,0 8.65244566,0 Z'; // eslint-disable-line - -export default function Facebook(props) { - return ; -} diff --git a/src/components/Icon/Github.js b/src/components/Icon/Github.js deleted file mode 100644 index cf76fee2..00000000 --- a/src/components/Icon/Github.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import Icon from './index'; - -const vectors = 'M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z'; // eslint-disable-line - -export default function Github(props) { - return ; -} \ No newline at end of file diff --git a/src/components/Icon/Twitter.js b/src/components/Icon/Twitter.js deleted file mode 100644 index 4dbbd2d1..00000000 --- a/src/components/Icon/Twitter.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import Icon from './index'; - -const vectors = 'M10.6958834,1.0264501 C10.4543969,1.13095978 10.2037152,1.2134089 9.9464883,1.27309916 C10.2299229,1.01023441 10.4430288,0.681446587 10.5632553,0.314460095 C10.5975717,0.209691788 10.4809755,0.119096039 10.3840418,0.175191437 C10.0261976,0.382348717 9.64074145,0.53775547 9.23835232,0.637144412 C9.2150066,0.642911712 9.1909189,0.645834156 9.1667517,0.645834156 C9.09345513,0.645834156 9.022199,0.619273541 8.96615336,0.571066154 C8.53803358,0.202812408 7.98740838,0 7.41574287,0 C7.16837359,0 6.91861938,0.0376296931 6.67339653,0.111854586 C5.91361377,0.341848305 5.32737375,0.95351832 5.14344336,1.70818117 C5.07443965,1.99124439 5.05575777,2.27456624 5.0878747,2.5502587 C5.09155808,2.58194006 5.07621509,2.60405235 5.0667549,2.61442315 C5.05013995,2.63260437 5.02658224,2.64302689 5.00212355,2.64302689 C4.99939414,2.64302689 4.99658523,2.64289757 4.99380283,2.64263895 C3.33066508,2.49183569 1.8309209,1.70983636 0.770823616,0.44072 C0.716765412,0.375986583 0.613100856,0.383926319 0.570013287,0.456056363 C0.362419184,0.803646106 0.252712828,1.20120187 0.252712828,1.60574047 C0.252712828,2.2257123 0.50792585,2.80996824 0.951229623,3.23589499 C0.764808316,3.19275662 0.58437581,3.12481627 0.416768878,3.0339619 C0.335681572,2.98999593 0.235912386,3.04650513 0.234772924,3.13702329 C0.22316631,4.05803266 0.775672955,4.87755824 1.60334646,5.24658785 C1.58667851,5.24697579 1.57001057,5.24715682 1.55331612,5.24715682 C1.42211898,5.24715682 1.28927889,5.23479463 1.15853224,5.21040645 C1.06721627,5.19338904 0.990501319,5.277933 1.01885538,5.36433905 C1.28750345,6.18290772 2.00965746,6.78627593 2.87384675,6.9232687 C2.15662158,7.39316141 1.32139583,7.641026 0.452092205,7.641026 L0.181085708,7.64087083 C0.0975869817,7.64087083 0.0269668278,7.69399206 0.00568803467,7.7729239 C-0.015272769,7.85066607 0.0233364484,7.93267552 0.094539583,7.97309835 C1.07410604,8.5294747 2.19144142,8.82352941 3.32623972,8.82352941 C4.31955923,8.82352941 5.24872436,8.63113952 6.08795148,8.25173911 C6.85730042,7.90391661 7.53716183,7.40671328 8.10864185,6.7739396 C8.64100916,6.18448532 9.05731033,5.50402151 9.34593875,4.75147937 C9.62107911,4.03413586 9.76650627,3.26871429 9.76650627,2.53794823 L9.76650627,2.50313753 C9.76647978,2.38580013 9.82085597,2.27539384 9.91572282,2.2002379 C10.2757134,1.91497638 10.5891979,1.57917986 10.8474319,1.20218464 C10.9156141,1.10264053 10.8080807,0.977880637 10.6958834,1.0264501 Z'; // eslint-disable-line - -export default function Twitter(props) { - return ; -} diff --git a/src/components/Icon/index.js b/src/components/Icon/index.js deleted file mode 100644 index ea8ba0fe..00000000 --- a/src/components/Icon/index.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import { any, func, number, string, object } from 'prop-types'; - -export default function Icon(props) { - const { - children, - className, - color, - title, - height, - onClick, - style, - width, - vectors, - viewBox, - } = props; - - return ( - - {title} - {vectors && } - {children} - - ); -} - -Icon.propTypes = { - children: any, - className: string, - color: string, - title: string, - height: number, - onClick: func, - style: object, - vectors: string, - viewBox: string, - width: number, -}; diff --git a/src/components/MainNav/index.js b/src/components/MainNav/index.js deleted file mode 100644 index 49d3a886..00000000 --- a/src/components/MainNav/index.js +++ /dev/null @@ -1,59 +0,0 @@ -import React, { Fragment } from 'react'; -import classNames from 'classnames'; -import { Link } from 'gatsby'; - -import logoImage from '../../assets/images/logo.svg'; - -export default React.memo(function MainNav({ showLogo, title }) { - const css = classNames('bg-primary-light py-4', { - 'sticky top-0 z-10': showLogo, - }); - - return ( - - - { title && -
    -
    -

    {title}

    -
    -
    - } -
    - ); -}); - -const MenuLink = React.memo(({ children, to }) => { - const liCss = 'mr-3 inline-block md:mr-8'; - const linkCss = 'font-medium leading-none text-primary-dark uppercase text-base border-b-4 border-primary-light md:px-1 hover:border-primary-dark'; - - if (to && to.startsWith('http')) { - return ( -
  • - {children} -
  • - ); - } - - return ( -
  • - {children} -
  • - ); -}); diff --git a/src/components/SEO/index.js b/src/components/SEO/index.js deleted file mode 100644 index 94038ff7..00000000 --- a/src/components/SEO/index.js +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import Helmet from 'react-helmet' -import { useStaticQuery, graphql } from 'gatsby' - -export default function SEO({ description, lang, meta, title }) { - const { site } = useStaticQuery( - graphql` - query { - site { - siteMetadata { - title - description - author - } - } - } - ` - ) - - const metaDescription = description || site.siteMetadata.description - const twitterCardImage = `https://avatars3.githubusercontent.com/u/43143751?s=200&v=4` - - return ( - - ) -} - -SEO.defaultProps = { - lang: `en`, - meta: [], - description: ``, -} - -SEO.propTypes = { - description: PropTypes.string, - lang: PropTypes.string, - meta: PropTypes.arrayOf(PropTypes.object), - title: PropTypes.string.isRequired, -} diff --git a/src/components/Sidebar/index.js b/src/components/Sidebar/index.js deleted file mode 100644 index 63dd92b9..00000000 --- a/src/components/Sidebar/index.js +++ /dev/null @@ -1,139 +0,0 @@ -import React, { useEffect, useState } from 'react'; - -// import Button from '../Button'; -import tshirtImage from '../../assets/images/cc-tshirt.png'; -import twitchImage from '../../assets/images/twitch.png'; - -export default function Sidebar({ author }) { - const [mentor, setMentor] = useState(null); - const [mentors, setMentors] = useState([]); - - useEffect(() => { - if (mentors.length === 0) { - fetch(`${process.env.GATSBY_API_URL}/mentors?limit=5`) - .then(response => response.json()) - .then(response => { - setMentors(response.data); - }); - } - - if (author) { - setMentor({ - ...author.frontmatter, - description: author.frontmatter.about, - }); - } else { - fetch(`${process.env.GATSBY_API_URL}/mentors/featured`) - .then(response => response.json()) - .then(response => { - setMentor(response.data); - }); - } - }, [author]); - - return ( - - ); -} - - -function FeaturedMentor({ mentor, isAuthor }) { - return ( -
    - - { isAuthor ? 'Author' : 'Featured Mentor' } - - - {mentor.name} - -

    - {mentor.name} -

    - {mentor.tags && -

    - {mentor.tags.map(tag => - {tag} - )} -

    - } -

    {mentor.description}

    -
    - ); -} - -function LatestMentors({ mentors }) { - return ( -
    - Latest mentors -
      - {mentors.map(mentor => -
    • -

      - {mentor.name} -

      -

      {mentor.tags.join(', ')}

      -
    • - )} -
    -
    - ); -} - -// @TODO: Integrate with SendGrid -// function NewsletterSignup() { -// return ( -//
    -// Newsletter signup -//
    -// -// -// -//
    -//
    -// ); -// } - -function TwitchAd() { - return ( -
    - Follow us in Twitch - - Twitch Logo - -
    - ) -} - -function StoreAd() { - return ( -
    - Get the T-Shirt - - Coding Coach T-Shirt - -
    - ) -} - -function SidebarTitle({ children }) { - return ( -

    - {children} -

    - ); -} - diff --git a/src/config/i18n/_build/src/components/footer/Footer.js.json b/src/config/i18n/_build/src/components/footer/Footer.js.json new file mode 100644 index 00000000..9d65dca9 --- /dev/null +++ b/src/config/i18n/_build/src/components/footer/Footer.js.json @@ -0,0 +1,34 @@ +{ + "footer.legal.terms": { + "origin": [ + [ + "src/components/footer/Footer.js", + 27 + ] + ] + }, + "footer.legal.cookies": { + "origin": [ + [ + "src/components/footer/Footer.js", + 35 + ] + ] + }, + "footer.legal.privacy": { + "origin": [ + [ + "src/components/footer/Footer.js", + 43 + ] + ] + }, + "footer.legal.conduct": { + "origin": [ + [ + "src/components/footer/Footer.js", + 51 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/components/navbar/Navbar.js.json b/src/config/i18n/_build/src/components/navbar/Navbar.js.json new file mode 100644 index 00000000..b3679833 --- /dev/null +++ b/src/config/i18n/_build/src/components/navbar/Navbar.js.json @@ -0,0 +1,42 @@ +{ + "home.mentors.title": { + "origin": [ + [ + "src/components/navbar/Navbar.js", + 24 + ] + ] + }, + "home.mentors.openings": { + "origin": [ + [ + "src/components/navbar/Navbar.js", + 27 + ] + ] + }, + "home.about.title": { + "origin": [ + [ + "src/components/navbar/Navbar.js", + 30 + ] + ] + }, + "home.mission.title": { + "origin": [ + [ + "src/components/navbar/Navbar.js", + 33 + ] + ] + }, + "home.contact.title": { + "origin": [ + [ + "src/components/navbar/Navbar.js", + 36 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/components/overlayCookie/OverlayCookie.js.json b/src/config/i18n/_build/src/components/overlayCookie/OverlayCookie.js.json new file mode 100644 index 00000000..226eccd7 --- /dev/null +++ b/src/config/i18n/_build/src/components/overlayCookie/OverlayCookie.js.json @@ -0,0 +1,11 @@ +{ + "legal.notification": { + "defaults": "<0><1>Cookies Policy", + "origin": [ + [ + "src/components/overlayCookie/OverlayCookie.js", + 57 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/components/scrollTopButton/ScrollTopButton.js.json b/src/config/i18n/_build/src/components/scrollTopButton/ScrollTopButton.js.json new file mode 100644 index 00000000..0f095271 --- /dev/null +++ b/src/config/i18n/_build/src/components/scrollTopButton/ScrollTopButton.js.json @@ -0,0 +1,10 @@ +{ + "common.scrollToTop": { + "origin": [ + [ + "src/components/scrollTopButton/ScrollTopButton.js", + 48 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/auth/ForgotPassword.js.json b/src/config/i18n/_build/src/pages/auth/ForgotPassword.js.json new file mode 100644 index 00000000..ceb1593f --- /dev/null +++ b/src/config/i18n/_build/src/pages/auth/ForgotPassword.js.json @@ -0,0 +1,42 @@ +{ + "auth.signup.recovery": { + "defaults": "Forgot Password", + "origin": [ + [ + "src/pages/auth/ForgotPassword.js", + 15 + ], + [ + "src/pages/auth/ForgotPassword.js", + 34 + ] + ] + }, + "auth.signin.recoverycard": { + "defaults": "Your recovery email has been sent! Head on over to your email to reset your password and get back to Coding Coach!", + "origin": [ + [ + "src/pages/auth/ForgotPassword.js", + 19 + ] + ] + }, + "auth.signup.email": { + "defaults": "Email Address", + "origin": [ + [ + "src/pages/auth/ForgotPassword.js", + 41 + ] + ] + }, + "auth.signin.help": { + "defaults": "Send Help!", + "origin": [ + [ + "src/pages/auth/ForgotPassword.js", + 59 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/auth/Login.js.json b/src/config/i18n/_build/src/pages/auth/Login.js.json new file mode 100644 index 00000000..c90c56ca --- /dev/null +++ b/src/config/i18n/_build/src/pages/auth/Login.js.json @@ -0,0 +1,38 @@ +{ + "auth.signin.title": { + "defaults": "Sign In", + "origin": [ + [ + "src/pages/auth/Login.js", + 29 + ] + ] + }, + "auth.signup.email": { + "defaults": "Email Address", + "origin": [ + [ + "src/pages/auth/Login.js", + 39 + ] + ] + }, + "auth.signup.password": { + "defaults": "Password", + "origin": [ + [ + "src/pages/auth/Login.js", + 43 + ] + ] + }, + "auth.signin.go": { + "defaults": "Let's go!", + "origin": [ + [ + "src/pages/auth/Login.js", + 58 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/auth/Utilities.js.json b/src/config/i18n/_build/src/pages/auth/Utilities.js.json new file mode 100644 index 00000000..50f5a1f0 --- /dev/null +++ b/src/config/i18n/_build/src/pages/auth/Utilities.js.json @@ -0,0 +1,20 @@ +{ + "auth.signup.title": { + "defaults": "Sign Up", + "origin": [ + [ + "src/pages/auth/Utilities.js", + 13 + ] + ] + }, + "site.title": { + "defaults": "Coding Coach", + "origin": [ + [ + "src/pages/auth/Utilities.js", + 21 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/dashboard/components/header/Header.js.json b/src/config/i18n/_build/src/pages/dashboard/components/header/Header.js.json new file mode 100644 index 00000000..ce890a83 --- /dev/null +++ b/src/config/i18n/_build/src/pages/dashboard/components/header/Header.js.json @@ -0,0 +1,19 @@ +{ + "dashboard.header.title": { + "origin": [ + [ + "src/pages/dashboard/components/header/Header.js", + 32 + ] + ] + }, + "home.header.logo": { + "defaults": "This is the logo for Coding Coach", + "origin": [ + [ + "src/pages/dashboard/components/header/Header.js", + 38 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/dashboard/components/navBar/NavBar.js.json b/src/config/i18n/_build/src/pages/dashboard/components/navBar/NavBar.js.json new file mode 100644 index 00000000..34a9c246 --- /dev/null +++ b/src/config/i18n/_build/src/pages/dashboard/components/navBar/NavBar.js.json @@ -0,0 +1,42 @@ +{ + "dashboard.navigation.tab.home": { + "origin": [ + [ + "src/pages/dashboard/components/navBar/NavBar.js", + 18 + ] + ] + }, + "dashboard.navigation.tab.messages": { + "origin": [ + [ + "src/pages/dashboard/components/navBar/NavBar.js", + 24 + ] + ] + }, + "dashboard.navigation.tab.mentorships": { + "origin": [ + [ + "src/pages/dashboard/components/navBar/NavBar.js", + 30 + ] + ] + }, + "dashboard.navigation.tab.settings": { + "origin": [ + [ + "src/pages/dashboard/components/navBar/NavBar.js", + 36 + ] + ] + }, + "dashboard.navigation.tab.logout": { + "origin": [ + [ + "src/pages/dashboard/components/navBar/NavBar.js", + 42 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/home/Home.js.json b/src/config/i18n/_build/src/pages/home/Home.js.json new file mode 100644 index 00000000..72241344 --- /dev/null +++ b/src/config/i18n/_build/src/pages/home/Home.js.json @@ -0,0 +1,75 @@ +{ + "home.about.title": { + "origin": [ + [ + "src/pages/home/Home.js", + 52 + ] + ] + }, + "home.about.description": { + "origin": [ + [ + "src/pages/home/Home.js", + 53 + ] + ] + }, + "home.about.img": { + "origin": [ + [ + "src/pages/home/Home.js", + 54 + ] + ] + }, + "home.mission.title": { + "origin": [ + [ + "src/pages/home/Home.js", + 59 + ] + ] + }, + "home.mission.description": { + "origin": [ + [ + "src/pages/home/Home.js", + 60 + ] + ] + }, + "home.mission.img": { + "origin": [ + [ + "src/pages/home/Home.js", + 61 + ] + ] + }, + "home.contact.title": { + "origin": [ + [ + "src/pages/home/Home.js", + 66 + ] + ] + }, + "home.contact.img": { + "origin": [ + [ + "src/pages/home/Home.js", + 67 + ] + ] + }, + "home.contact.description": { + "defaults": "<0>Slack Organization<1>{EMAIL}", + "origin": [ + [ + "src/pages/home/Home.js", + 70 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/home/components/Hero.js.json b/src/config/i18n/_build/src/pages/home/components/Hero.js.json new file mode 100644 index 00000000..f259b325 --- /dev/null +++ b/src/config/i18n/_build/src/pages/home/components/Hero.js.json @@ -0,0 +1,38 @@ +{ + "site.title": { + "defaults": "Coding Coach", + "origin": [ + [ + "src/pages/home/components/Hero.js", + 16 + ] + ] + }, + "site.slogan": { + "defaults": "Connecting developers with mentors worldwide", + "origin": [ + [ + "src/pages/home/components/Hero.js", + 20 + ] + ] + }, + "home.header.cta": { + "defaults": "Find a Mentor", + "origin": [ + [ + "src/pages/home/components/Hero.js", + 30 + ] + ] + }, + "home.header.logo": { + "defaults": "This is the logo for Coding Coach", + "origin": [ + [ + "src/pages/home/components/Hero.js", + 38 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/home/components/LegalModal.js.json b/src/config/i18n/_build/src/pages/home/components/LegalModal.js.json new file mode 100644 index 00000000..20eb2514 --- /dev/null +++ b/src/config/i18n/_build/src/pages/home/components/LegalModal.js.json @@ -0,0 +1,42 @@ +{ + "footer.legal.terms": { + "origin": [ + [ + "src/pages/home/components/LegalModal.js", + 14 + ] + ] + }, + "footer.legal.privacy": { + "origin": [ + [ + "src/pages/home/components/LegalModal.js", + 15 + ] + ] + }, + "footer.legal.cookies": { + "origin": [ + [ + "src/pages/home/components/LegalModal.js", + 16 + ] + ] + }, + "footer.legal.conduct": { + "origin": [ + [ + "src/pages/home/components/LegalModal.js", + 17 + ] + ] + }, + "common.close": { + "origin": [ + [ + "src/pages/home/components/LegalModal.js", + 46 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/_build/src/pages/openings/Opening.js.json b/src/config/i18n/_build/src/pages/openings/Opening.js.json new file mode 100644 index 00000000..fb802e9d --- /dev/null +++ b/src/config/i18n/_build/src/pages/openings/Opening.js.json @@ -0,0 +1,24 @@ +{ + "openings.apply": { + "defaults": "Apply now", + "origin": [ + [ + "src/pages/openings/Opening.js", + 31 + ], + [ + "src/pages/openings/Opening.js", + 136 + ] + ] + }, + "home.header.logo": { + "defaults": "This is the logo for Coding Coach", + "origin": [ + [ + "src/pages/openings/Opening.js", + 39 + ] + ] + } +} \ No newline at end of file diff --git a/src/config/i18n/en/messages.js b/src/config/i18n/en/messages.js new file mode 100644 index 00000000..5011490f --- /dev/null +++ b/src/config/i18n/en/messages.js @@ -0,0 +1 @@ +/* eslint-disable */module.exports={languageData:{"plurals":function(n,ord){var s=String(n).split("."),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?"one":n10==2&&n100!=12?"two":n10==3&&n100!=13?"few":"other";return n==1&&v0?"one":"other"}},messages:{"auth.signin.description":"Sign in or create a new account to get started.","auth.signin.forbiden":"You are not authorized. Please sign in to access this page.","auth.signin.go":"Let's go!","auth.signin.help":"Send Help!","auth.signin.loginRegister":"Login or Register","auth.signin.recovery":"Oh no! Looks like you forgot your password! Enter your email to get a recovery link!","auth.signin.recoverycard":"Your recovery email has been sent! Head on over to your email to reset your password and get back to Coding Coach!","auth.signin.recoveryerror":"We need this information to find your account.","auth.signin.title":"Sign In","auth.signup.email":"Email Address","auth.signup.password":"Password","auth.signup.recovery":"Forgot Password","auth.signup.title":"Sign Up","common.close":"Close","common.scrollToTop":"Scroll to top of the page","dashboard.header.title":"Dashboard","dashboard.navigation.tab.home":"Home","dashboard.navigation.tab.logout":"Logout","dashboard.navigation.tab.mentorships":"Mentorships","dashboard.navigation.tab.messages":"Messages","dashboard.navigation.tab.settings":"Settings","footer.legal.conduct":"Code of Conduct","footer.legal.cookies":"Cookies","footer.legal.privacy":"Privacy Policy","footer.legal.terms":"Terms & Conditions","home.about.description":"Coding Coach is a free, open-source platform which aims to connect software developers and mentors all over the world. It is built by a group of talented and passionate developers, designers, engineers, and humans who want to make the engineering world a better place to collaborate. This project was born out of a desire to provide a platform to connect mentors and mentees throughout the world at no cost. Coding Coach is created by the people, for the people.","home.about.img":"Man walking into a laptop","home.about.title":"About","home.contact.description":function(a){return["We want to hear your thoughts! Feel free to join our <0>Slack Organization or send us an email at <1>",a("EMAIL"),""]},"home.contact.img":"Person using a magnifying glass to see the details of another guy.","home.contact.title":"Contact","home.header.cta":"Find a Mentor","home.header.logo":"This is the logo for Coding Coach","home.mentors.openings":"Mock Openings","home.mentors.title":"Mentors","home.mission.description":"We believe that mentorship should be accessible to all people regardless of location or financial standing. In pursuit of this goal we will provide a free and open source platform to facilitate mentorship connections. Our mission is to foster a greater sense of collaboration and inclusiveness in the technical industry by providing a platform to aid the mentorship process.","home.mission.img":"Group of people","home.mission.title":"Mission","legal.notification":"To help personalize content, tailor and measure ads, and provide a safer experience, we use cookies. By clicking or navigating the site, you agree to allow our collecion of information on and off Coding Coach through cookies. Learn more, including about available controls: <0><1>Cookies Policy","openings.apply":"Apply Now","site.slogan":"Connecting developers with mentors worldwide","site.title":"Coding Coach"}}; \ No newline at end of file diff --git a/src/config/i18n/es/messages.js b/src/config/i18n/es/messages.js new file mode 100644 index 00000000..4d1103be --- /dev/null +++ b/src/config/i18n/es/messages.js @@ -0,0 +1 @@ +/* eslint-disable */module.exports={languageData:{"plurals":function(n,ord){if(ord)return"other";return n==1?"one":"other"}},messages:{"auth.signin.description":"Entra en tu cuenta o crea una nueva para empezar","auth.signin.forbiden":"No estas autorizado para ver esta p\xE1gina, por favor reg\xEDstrate.","auth.signin.go":"\xA1Vamos!","auth.signin.help":"\xA1Enviar Ayuda!","auth.signin.loginRegister":"Identif\xEDcate","auth.signin.recovery":"\xA1Oh no! Parece que has olvidado la contrase\xF1a. Introduce tu email y recibir\xE1s una direcci\xF3n de recuperaci\xF3n","auth.signin.recoverycard":"Tu email de recuperaci\xF3n se ha enviado. Utiliza este email para reiniciar tu contrase\xF1a y vuelve a Coding Coach","auth.signin.recoveryerror":"Necesitamos esta informaci\xF3n para encontrar tu cuenta","auth.signin.title":"Entra en tu cuenta","auth.signup.email":"Correo electr\xF3nico","auth.signup.password":"Contrase\xF1a","auth.signup.recovery":"Olvid\xE9 la contrase\xF1a","auth.signup.title":"Crea una cuenta","common.close":"Cerrar","common.scrollToTop":"Ir al inicio de la p\xE1gina","dashboard.header.title":"Panel de administraci\xF3n","dashboard.navigation.tab.home":"Inicio","dashboard.navigation.tab.logout":"Salir","dashboard.navigation.tab.mentorships":"Mentores","dashboard.navigation.tab.messages":"Mensajes","dashboard.navigation.tab.settings":"Ajustes","footer.legal.conduct":"C\xF3digo de conducta","footer.legal.cookies":"Cookies","footer.legal.privacy":"Pol\xEDtica de privacidad","footer.legal.terms":"T\xE9rminos y condiciones","home.about.description":"Coding Coach es una plataforma gratuita y de c\xF3digo abierto que busca conectar a desarrolladores de software y mentores de todo el nundo. Est\xE1 desarrollada y construida por un grupo de desarrolladores, dise\xF1adores, ingenieros y sobre todo humanos, llenos de pasi\xF3n y talento, con el objetivo de hacer del mundo de la ingenier\xEDa un mejor lugar para la colaboraci\xF3n. Este proyecto naci\xF3 gracias al deseo de crear una plataforma que conectase mentores y aprendices de todo el mundo sin coste alguno. Coding Coach est\xE1 creado por personas, y para las personas.","home.about.img":"Un hombre andando hacia un ordenador port\xE1til","home.about.title":"Sobre Coding Coach","home.contact.description":function(a){return["\xA1Nos gustar\xEDa saber tu opini\xF3n! \xDAnete a nuestra <0>Organizaci\xF3n de Slack o env\xEDanos un correo electr\xF3nico a <1>",a("EMAIL"),""]},"home.contact.img":"Una persona usando una lupa para ver los detalles de otra persona","home.contact.title":"Contacto","home.header.cta":"Encontrar un Mentor","home.header.logo":"Este es el logo de Coding Coach","home.mentors.openings":"home.mentors.openings","home.mentors.title":"Mentores","home.mission.description":"Creemos que el acceso a un mentor debe ser posible para cualquier persona sin importar su localizaci\xF3n, condici\xF3n econ\xF3mica o financiera. Para conseguir esto, hemos creado una plataforma gratuita y de c\xF3digo abierto para facilitar el acceso a las conexiones con mentores. Nuestra misi\xF3n es formentar el sentido de la colaboraci\xF3n y la inclusividad en la industria t\xE9cnica proporcionando una plataforma para ayudar con el proceso de mentorizado.","home.mission.img":"Un grupo de personas","home.mission.title":"Misi\xF3n","legal.notification":"Para ayudar a personalizar el contenido de los anuncios y para proporcionar a nuestros usuarios una experiencia m\xE1s segura en nuestro sitio web, usamos cookies. Haciendo click o navegando por la web, estas de acuerdo en que activemos y desactivemos la recolecci\xF3n de informaci\xF3n en Coding Coach a traves de las cookies. Para saber m\xE1s: <0><1>Cookies Policy","openings.apply":"openings.apply","site.slogan":"Conectando desarrolladores y mentores por todo el mundo","site.title":"Coding Coach"}}; \ No newline at end of file diff --git a/src/config/i18n/fr/messages.js b/src/config/i18n/fr/messages.js new file mode 100644 index 00000000..dfd1a329 --- /dev/null +++ b/src/config/i18n/fr/messages.js @@ -0,0 +1 @@ +/* eslint-disable */module.exports={languageData:{"plurals":function(n,ord){if(ord)return n==1?"one":"other";return n>=0&&n<2?"one":"other"}},messages:{"auth.signin.description":"auth.signin.description","auth.signin.forbiden":"auth.signin.forbiden","auth.signin.go":"auth.signin.go","auth.signin.help":"auth.signin.help","auth.signin.loginRegister":"auth.signin.loginRegister","auth.signin.recovery":"auth.signin.recovery","auth.signin.recoverycard":"auth.signin.recoverycard","auth.signin.recoveryerror":"auth.signin.recoveryerror","auth.signin.title":"auth.signin.title","auth.signup.email":"auth.signup.email","auth.signup.password":"auth.signup.password","auth.signup.recovery":"auth.signup.recovery","auth.signup.title":"auth.signup.title","common.close":"common.close","common.scrollToTop":"common.scrollToTop","dashboard.header.title":"dashboard.header.title","dashboard.navigation.tab.home":"dashboard.navigation.tab.home","dashboard.navigation.tab.logout":"dashboard.navigation.tab.logout","dashboard.navigation.tab.mentorships":"dashboard.navigation.tab.mentorships","dashboard.navigation.tab.messages":"dashboard.navigation.tab.messages","dashboard.navigation.tab.settings":"dashboard.navigation.tab.settings","footer.legal.conduct":"footer.legal.conduct","footer.legal.cookies":"footer.legal.cookies","footer.legal.privacy":"footer.legal.privacy","footer.legal.terms":"footer.legal.terms","home.about.description":"home.about.description","home.about.home":"home.about.home","home.about.img":"home.about.img","home.about.mentorships":"home.about.mentorships","home.about.messages":"home.about.messages","home.about.settings":"home.about.settings","home.about.title":"home.about.title","home.contact.description":"home.contact.description","home.contact.img":"home.contact.img","home.contact.title":"home.contact.title","home.header.cta":"home.header.cta","home.header.logo":"home.header.logo","home.mentors.openings":"home.mentors.openings","home.mentors.title":"home.mentors.title","home.mission.description":"home.mission.description","home.mission.img":"home.mission.img","home.mission.title":"home.mission.title","legal.notification":"legal.notification","openings.apply":"openings.apply","site.slogan":"site.slogan","site.title":"site.title"}}; \ No newline at end of file diff --git a/src/pages/404.js b/src/pages/404.js deleted file mode 100644 index 97cb013d..00000000 --- a/src/pages/404.js +++ /dev/null @@ -1,43 +0,0 @@ -import React, { Fragment } from 'react'; -import { Link } from 'gatsby'; - -import Footer from '../components/Footer'; -import MainNav from '../components/MainNav'; -import SEO from '../components/SEO'; - -import notFoundImage from '../assets/images/404.svg'; - -const NotFoundPage = () => ( - - - -
    -
    - Not found -
    -
    -

    Not Found

    -

    - You just hit a route that doesn't exist... What can you do now? - That's a good question! There are several things you can do, going to{' '} - home page would be a good idea. You might want to{' '} - read the blog, we have very interesting - articles and tutorials! Maybe looking for{' '} - a mentor to improve your - career? -

    -

    - How did you get here? Is this a broken link within the blog? Or maybe - a link from a third party website? Please{' '} - let us know and we will fix it - ASAP! -

    -
    -
    -