Webbased image editor, modeled after the legendary Deluxe Paint with a focus on retro Amiga file formats: read and write Amiga icon files and IFF ILBM images - steffest/DPaint-js
The only part that is not included in this repository is the Amiga Emulator Files. (The emulator is based on the Scripted Amiga Emulator)
DPaint.js doesn't need building. It also has zero dependencies so there's no need to install anything. DPaint.js is written using ES6 modules and runs out of the box in modern browsers.
Just serve "index.html" from a webserver and you're good to go.
There's an optional build step to create a compact version of DPaint.js if you like.
I'm using Parcel.js for this.
For convenience, I've included a "package.json" file.
open a terminal and run npm install to install Parcel.js and its dependencies.
Then run npm run build to create a compact version of DPaint.js in the "dist" folder.
Documentation can be found at https://www.stef.be/dpaint/docs/
Dpaint.js is a web application, not an app that you install on your computer.
That being said: DPaint.js has no online dependencies and runs fine offline if you want.
One caveat: you have to serve the index.html file from a webserver, not just open it in your browser.
A quick way to do this is - for example - using the Spark app.
Download the binary for your platform, drop the Spark executable in the folder where you downloaded the Dpaint.js source files and run it.
If you then point your browser to http://localhost:8080/ it should work.
If you are using Chrome, you can also "install" dpaint.js as app.

It will then show up your Chrome apps and work offline.
Current version is still alpha. I'm sure there are bugs and missing features.
Bug reports and pull requests are welcome.
Planned for the next release, already in the works:
Planned for a future release if there's a need for it.
Please note that the Brave browser is using "farbling" that introduces random image noise in certain conditions.
They claim this is to protect your privacy.
Although I totally understand the sentiment, In my opinion a browser should not actively alter the content of a webpage or intentionally break functionality.
But hey, who am I to speak, it's a free world.
Just be aware that if you are using Brave, you will run into issues, so please "lower your shields" for this app in Brave or use another browser.
Dpaint.js supports Color-Cycling - a long lost art of "animating" a static image by only rotating some colors in the palette. See an example here:
Open the layered source file of the above image directly in Dpaint.js
This is neat, some years ago i also thought of making a simple DPaint clone (though much simpler than what this project seems to do) and started by... painting the tool icons, then losing interest :-P. I did end up reusing them for a pixelart editing component for Lazarus though[0] (and put the icons in my "Bad-Common-Icons" icon set[1] that i use for my GUI programs). But i do want to, at some point, tackle making something like Paint Shop Pro 7 (for desktop, not web) because i think it has the best UX of all image editing programs (including later versions of PSP which i never liked).
That said, i played with this a bit and found some bug with the smudge tool blending[2]. It also seems browser-related as it has different behavior in Firefox and Falkon (which uses QtWebEngine / Chromium). Also the way opacity works with the smudge tool feels weird/wrong as even at 1% it seems to affect the image a lot even though it should barely make a difference.
[0] https://i.imgur.com/kht16dJ.png
Indeed! Blending colors is surprisingly hard. I've pushed an update that addresses most of your concerns. Not perfect yet, but an improvement. Dev version with these changes on https://www.stef.be/dpaint/dev/
I tried the dev version on Firefox and didn't seem to fix the issue though it was "reversed" in that things became brighter now. On Falkon it worked better though there was still some weird coloration for pixels that shouldn't have been altered - see the images i attached in the bug report.
Also in both cases the brush area remained intact (it was just 'moving around') instead of being smudged, it is more obvious in the Firefox shot because i only did a simple circular motion but can also be seen in the Falkon shot in that there is a floating corner at the top right corner of the orange box that was 'dragged' from the left side (i was doing a horizontal motion to show that the pixels above the brush were affected even though there wasn't any vertical motion to push the orange colors up to the blue area).
Steffest was just showing off his entry for the color cycling competition at GERP 2026 which uses a few of his tools to produce including DPaint.
https://www.youtube.com/watch?v=VyB5cvA6f78
EDIT: I see he posted a link at the bottom of the Readme.md I guess I should have scrolled to the bottom first.
I've been following this app for a while. Worth noting that the author is also a very talented graphic artist and demoscener. Works created with this tool frequently appear in various demoscene compos.
Yeah! I posted one of his recent entries to a compo separately but should have just posted it in this thread https://www.youtube.com/watch?v=VyB5cvA6f78
He also made this amiga demo and wrote the music for it too. He’s multitalented! https://www.youtube.com/watch?v=cc8f7zg3-v8