PaintZ is a simple drawing program for the web. Its goal is to make creating and editing drawings and other images as easy to do on Chrome OS and the web as similar native applications on other platforms, such as Microsoft Paint and KolourPaint. PaintZ is designed to to be fast and easy to use, with a touch- and mouse-friendly Material Design interface, full offline support, and no Flash Player or other plug-ins required.
- Fast and lightweight - New features should not make PaintZ significantly slower to start or use.
- Focused and simple - PaintZ exists to make simple drawings and image edits like MS Paint; advanced features such as layers, filters, and vector paths are beyond its scope (and in the scope of other web apps, such as Photopea).
- Ephemiral - Anything related to file management, file syncing, user accounts, etc. is the responsibility of the system/file manager/other apps; PaintZ is not concerned with what happens to the file after it closes.
- Familiar - PaintZ should keep UI patterns and keyboard shortcuts familiar to users of other drawing apps and Chrome OS wherever possible.
- Privacy-conscious - No user-identifying data should be retained, minimal data should be retained at all, and nothing but basic anonymous analytics should leave the user's device.
- Dependency-conscious - PaintZ will never require plug-in installation; new CSS/JS libraries should only be added if necessary, and after serious consideration.
The official live instance of PaintZ can be found at https://paintz.app.
PaintZ is available to install on Chrome OS through the Chrome Web Store.
There is also a separate Chrome Web Store page for PaintZ beta so you can have it in your launcher without removing stable PaintZ.
These are the only legitimate Chrome Web Store listings for PaintZ.
Updates are posted to the @PaintZApp profiles on Facebook, Instagram, and Twitter.
You can submit bug reports and feature requests in the Issues tab. Please search before submitting to avoid submitting duplicates. If you find it was already submitted, please just add a 👍 reaction to the existing one.
For feature requests, please also ensure features are in line with the principles above—certain features will always be outside the intended scope of PaintZ.
- Commits will follow standard Git commit guidelines.
- Commits should fit in the sentence, “If applied, this commit will ____.”
- Code will be intended with tabs, not spaces.
- Opening curly braces will be on the same line as control structures (
if
,switch
,for
,function
, etc.), separated with a space, and never on the next line. - Function and variable names will be in camelCase.
- Function and variable names meant to be treated as private will be prefixed with an underscore (e.g.,
_privateVar
). - Constants will be in ALL_CAPS_SNAKE_CASE.
- Object types will be in UpperCamelCase (a.k.a. PascalCase).
- Operators will have spaces on both sides.
- Functions should have JSDoc-style documentation strings. For example:
/**
* Add two numbers.
* @param {Number} a - The first number to be added
* @param {Number} b - The second number to be added
* @returns {Number} The sum of a and b
*/
function sum(a, b) { ... }
To run a local instance of PaintZ:
- Clone the repository.
- Serve the
app
directory in the repository from the HTTP server of your choice (e.g., Node'shttp-server
, Python 2'sSimpleHTTPServer
, or Python 3'shttp.server
).
PaintZ is developed and maintained by Zachary Yaro.
Code libraries used:
- Canvas toBlob Polyfill - For image export in browsers that do not support
canvas.toBlob
- easy.Filter - For drawing pixel-perfect lines with the pencil tool
- ES6 Promise - For browsers that do not support
Promise
s - Flexi Color Picker - Color picker
- MaterialZ - UI
- Pointer Events Polyfill - For browsers that do not support
PointerEvent
s
Icon libraries used:
Testing/feedback:
- David Martin
- Joe Porsella
- Marjorie Yaro
- Taylor Braun
- Wendy Enoch