Web editor for P5.js, modified for workshops at Digital Playground.
Go to file
Andrew Nicolaou 210e8b60bf Public API: Namespace private and public APIs (#1148)
* Converts import script to use public API endpoints

The endpoints don't exist yet, but this is a good way to see how
the implementation of the data structures differ.

* Exposes public API endpoint to fetch user's sketches

* Implements public API delete endpoint

* Adds helper to create custom ApplicationError classes

* Adds create project endpoint that understand API's data structure

This transforms the nested tree of file data into a mongoose
Project model

* Returns '201 Created' to match API spec

* Removes 'CustomError' variable assignment as it shows up in test output

* transformFiles will return file validation errors

* Tests API project controller

* Tests toModel()

* Creates default files if no root-level .html file is provided

* Do not auto-generate a slug if it is provided

Fixes a bug where the slug was auto-generated using the sketch name,
even if a slug property had been provided.

* Validates uniqueness of slugs for projects created by the public API

* Adds tests for slug uniqueness

* Configures node's Promise implementation for mongoose (fixes warnings)

* Moves createProject tests to match controller location

* Adds support for code to ApplicationErrors

* deleteProject controller tests

* getProjectsForUser controller tests

- implements tests
- update apiKey tests to use new User mocks

* Ensure error objects have consistent property names

`message` is used as a high-level description of the errors
`detail` is optional and has an plain language explanation of the
individual errors
`errors` is an array of each individual problem from `detail` in a
machine-readable format

* Assert environment variables are provided at script start

* Version public API

* Expect "files" property to always be provided

* Fixes linting error

* Converts import script to use public API endpoints

The endpoints don't exist yet, but this is a good way to see how
the implementation of the data structures differ.

* Exposes public API endpoint to fetch user's sketches

* Implements public API delete endpoint

* Adds helper to create custom ApplicationError classes

* Adds create project endpoint that understand API's data structure

This transforms the nested tree of file data into a mongoose
Project model

* Returns '201 Created' to match API spec

* Removes 'CustomError' variable assignment as it shows up in test output

* transformFiles will return file validation errors

* Tests API project controller

* Tests toModel()

* Creates default files if no root-level .html file is provided

* Do not auto-generate a slug if it is provided

Fixes a bug where the slug was auto-generated using the sketch name,
even if a slug property had been provided.

* Validates uniqueness of slugs for projects created by the public API

* Adds tests for slug uniqueness

* Configures node's Promise implementation for mongoose (fixes warnings)

* Moves createProject tests to match controller location

* deleteProject controller tests

* Adds support for code to ApplicationErrors

* getProjectsForUser controller tests

- implements tests
- update apiKey tests to use new User mocks

* Ensure error objects have consistent property names

`message` is used as a high-level description of the errors
`detail` is optional and has an plain language explanation of the
individual errors
`errors` is an array of each individual problem from `detail` in a
machine-readable format

* Assert environment variables are provided at script start

* Version public API

* Expect "files" property to always be provided

* Fixes linting error

* Checks that authenticated user has permission to create under this namespace

Previously, the project was always created under the authenticated user's
namespace, but this not obvious behaviour.

* Splits private and public APIs

The private API is under /editor and the public API under /api
2019-09-08 16:45:58 +02:00
.github for #852 2019-03-04 11:56:50 -05:00
client Fix linting errors and warnings 2019-09-08 16:43:16 +02:00
developer_docs Public API for Sketch management documentation (#1076) 2019-07-10 10:39:58 +02:00
server Public API: Namespace private and public APIs (#1148) 2019-09-08 16:45:58 +02:00
webpack fix server crash in which error 'regeneratorRuntime is not defined' was being thrown 2019-07-11 16:42:03 -04:00
.babelrc for #950, update babel to v7 (#1077) 2019-06-05 12:05:31 -04:00
.env.example Public API: Namespace private and public APIs (#1148) 2019-09-08 16:45:58 +02:00
.eslintignore Development documentation (#705) 2018-09-26 16:14:06 -04:00
.eslintrc Add jest/enzyme and a simple unit test 2019-01-25 17:21:10 -05:00
.gitignore re #1086, initial staging configuration (#1087) 2019-05-29 17:29:53 -04:00
.travis.yml re #1086, fix typo in staging deploy script name 2019-05-30 14:06:31 -04:00
Dockerfile fixes #785, update node, and everything else that comes along with that (#810) 2019-01-16 17:56:18 -05:00
LICENSE add license 2017-10-15 22:36:46 -07:00
Procfile Rebase/squash 2018-12-09 15:34:15 -08:00
README.md for #852 2019-03-04 11:56:50 -05:00
app.json Public API: Namespace private and public APIs (#1148) 2019-09-08 16:45:58 +02:00
deploy.sh add step to deploy to push latest image to kubernetes cluster 2018-08-27 19:08:19 -04:00
deploy_staging.sh re #1086, initial staging configuration (#1087) 2019-05-29 17:29:53 -04:00
docker-compose-development.yml Development documentation (#705) 2018-09-26 16:14:06 -04:00
docker-compose.yml Development documentation (#705) 2018-09-26 16:14:06 -04:00
index.js for #950, update babel to v7 (#1077) 2019-06-05 12:05:31 -04:00
jest.setup.js Public API: Create new project (fixes #1095) (#1106) 2019-09-08 16:45:58 +02:00
kubernetes_app.yml re #1086, initial staging configuration (#1087) 2019-05-29 17:29:53 -04:00
nodemon.json add nodemon, remove .env from being tracked 2016-06-22 18:48:45 -04:00
package-lock.json Add sorting to sketches #789 (#910) 2019-07-22 16:16:17 -04:00
package.json update axios to latest version 2019-07-22 16:09:11 -04:00

README.md

p5.js Web Editor

Hello! The p5.js Web Editor is an in-browser editor for creative coding, specifically for writing p5.js sketches. p5.js, a separate open source project, is a JavaScript library with the goal of making coding accessible for artists, designers, educators, and beginners. The web editor shares the same spirit as p5.jsit is designed with the beginner in mind. When using the web editor, you don't need to download or configure anything, you can simply open the website, and start writing code. You can also host your work online and share it with others.

The p5.js Web Editor is currently in active development, and looking for contributions of any type! Please check out the contribution guide for more details.

If you have found a bug in the p5.js Web Editor, you can file it under the "issues" tab.

Issues

Please post bugs and feature requests in the correct repository:

Get Involved

The p5.js Web Editor is a collaborative project created by many individuals, and you are invited to help. All types of involvement are welcome. You can start with the p5.js community section, which also applies to this project.

Developers, check the developer docs details about contributing code, bug fixes, and documentation. To start writing code, a great place to start is the development guide.

Support

Support for this project has come from Processing Foundation, NYU ITP, and CS4All, NYC DOE.

Hosting and technical support has come from: