Skip to content
p5.js website built using Node.js, Grunt, YAML and Assemble
Branch: master
Clone or download
Latest commit 4b697bd Mar 25, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github add issue and pr template Mar 21, 2019
dist Correct place to put in Mar 13, 2019
src Merge pull request #444 from mcuz/master Mar 23, 2019
.eslintrc updating linter to allow class def at bottom in examples and prevent … Jan 3, 2019
Gruntfile.js remove hindi from master Mar 19, 2019
LICENSE-MIT first commit Jun 22, 2015
i18n-tracking.yml adding library submission form Mar 13, 2019
package-lock.json add Inheritance example in object Mar 11, 2019
package.json remove hindi from master Mar 19, 2019

Build Status

p5js website

How To Contribute

Known bugs and intended new features are tracked using GitHub issues. If you'd like to start working on an existing issue, comment on the issue that you plan to work on it so other contributors know it's being handled and can offer help. Once you have completed your work on this issue, submit a pull request (PR) against the p5.js master branch. In the description field of the PR, include "resolves #XXXX" tagging the issue you are fixing. If the PR addresses the issue but doesn't completely resolve it (ie the issue should remain open after your PR is merged), write "addresses #XXXX".

If you discover a bug or have an idea for a new feature you'd like to add, begin by submitting an issue. Please do not simply submit a pull request containing the fix or new feature without making an issue first, we will probably not be able to accept it. Once you have gotten some feedback on the issue and a go ahead to address it, you can follow the process above to add the fix or feature.

We recognize all types of contributions. This project follows the all-contributors specification. Add yourself to the p5.js repository readme by following the instructions here!


  1. Install node.js.
  2. Download this repo as a zip file or clone this repository.
  3. Navigate to the p5.js-website directory in the terminal and type npm install.


Once you've setup the site, type npm run watch to run the website. This should open a window in your browser with the site running at http://localhost:9000.

File structure

  • See note about what to include in pull requests here.
  • src/ – All the pieces for generating the built site. Edits should be made here.
    • assets/ – All static files (imgs, css, fonts, js, p5_featured homepage sketches)
      • Note: if you make edits here you must restart the server to see your changes. To see changes immediately, you can edit the assets files in the dist directory, but need to copy and paste your updated work here for it to be saved.
    • data/ – translation files
    • templates/
      • layouts/ – default.hbs is main page template
      • pages/ – Contains each of the pages of the p5 site, these get inserted in {{> body }} tag of default layout.
      • partials/ – These are reusable pieces that can get added to any page or layout, they correspond to other {{> filename }} tags in the pages or default layout.
  • dist/ – Where the rendered files are stored, this gets generated via grunt server but does not get added to pull requests as it is auto-built online.
  • Gruntfile.js – This file contains all the tasks for using assemble and YAML to generate the final, static site. It uses the taskrunner grunt.


  • Assemble is used to build a static site out of all the layouts and yml data.
  • grunt-assemble-i18n renders a set of pages for each language specified in the gruntfile, based on the handlebars templates and yml data. There is not a lot of documentation, but this example demonstrates the functionality well.
  • assemble-contrib-permalinks allows us to customize the permalinks (file structure of the rendered static site).

Add yourself to contributors!

If you've contributed to this website (or any other part of the p5.js project), add yourself here. Instructions to do this can be found at the bottom of the section.


Externally hosted language versions

You can’t perform that action at this time.