# Contributing

#### Pull Requests

Let me know before you work on something by opening an issue or commenting on an existing one.
I don't want your effort to be wasted!

#### Issues

Open issues! Search for issues first, but open issues for features, issues for problems...

Feel free to open issues in a "meta" context, like "hey, maybe you should tag issues with 'good first issue'" etc.

https://github.com/1j01/jspaint/issues

You can also just [email me](mailto:isaiahodhner@gmail.com) if you prefer (and I'll probably create an issue).

#### Windows 98

JS Paint's GUI is primarily based on Paint from Windows 98.
There's a nice [online emulator here](https://copy.sh/v86/?profile=windows98)
that you can play around with and/or use as a reference.

You can open issues relating to that UI, but also for general functionality that isn't necessarily in mspaint,
for instance jspaint already has affordances like unlimited undos, extra menu items, and shortcut-like features.

## Dev Setup

* Install Node.js if you don't have it (and maybe update it)
* Clone the repo
* Install dependencies with `npm i`
* Run `npm run dev` to start up a live-reloading web server

### Project Structure

It's messy. A lot of stuff is in a file simply called "functions.js", to give you an idea of it.

I can go into more detail [if you want..](https://github.com/1j01/jspaint/issues)
