How to Contribute
Since Frontend School is an open-source repository, anyone can freely contribute towards improving the site! There are two key ways in which you can contribute:
- Puzzle Writer: Add new JavaScript/HTML/CSS puzzles to the repo in order to grow the site's content.
- Gardener: This involves maintaining the repo. Tasks include reviewing/improving existing puzzles, ensuring tag names and reference links are consistent, suggesting ideas to improve the user experience of the site etc.
For all contributions, please add a new Pull Request via GitHub.
Adding Puzzles
This site is powered by Jekyll and all puzzles are written in Markdown. Each puzzle contains the following common elements:File Name
Each puzzle should be saved within the/_posts/
directory and have a file name using the following convention: YYYY-MM-DD-title.markdown
Meta Data
Every puzzle's Markdown file begins with a few meta fields. These should be populated as follows:
---
layout: puzzle (this never changes)
title: "Puzzle Title" (a short title for the puzzle)
date: YYYY-MM-DD (the date of the puzzle - used to sort new puzzles on the homepage)
categories: [JavaScript] (an array of the languages this puzzle relates to. Choices are JavaScript, CSS, or HTML)
tags: [tag 1, tag 2] (an array of tags)
difficulty: Intermediate (an arbitrary rating of how difficult this puzzle is. Choices are Easy, Intermediate or Hard)
short_description: Write a function that does x. (a short description of what the puzzle's challenge is)
github_contributors: [dhruvbhatia] (an array of the usernames of GitHub contributors)
---
Sections
The Markdown file then contains the following sections:- Puzzle: A description of what the puzzle's challenge is.
- Examples (if applicable): Examples with the expected OUTPUT, given an INPUT. This section can be omitted if the puzzle only has one right answer (e.g. puzzles that are theoretical rather than practical).
- Solution: Contains the best-practice accepted solution to the puzzle. For programmatic puzzles, please include a
How It Works
section before your actualCode
section which breaks down the key steps. Note: If your solution is formatted using JavaScript, the function will automatically be added to the current window so the user can experiment with it in their browser's console. - Alternative Solutions (if applicable): If there is more than one way to tackle the puzzle at hand, you can list additional solutions here.
- Libraries (if applicable): If there are any open-source libraries that tackle this puzzle, feel free to list them here.
- References (if applicable): Any other useful links pertaining to the puzzle.
Contributors
The contributors section is automatically added to the bottom of each puzzle. Be sure to include your GitHub username in thegithub_contributers
meta property of the puzzle so that you receive the due credit!