Making of paint.js.org—a Web Component-based Productivity PWA
Build desktop-class PWAs with native file handling and clipboard access, all without a major framework. Here's how.
#1about 10 minutes
Demonstrating a cross-platform PWA paint application
A live demonstration showcases paint.js.org's features, including installation, file handling, clipboard integration, and offline capabilities across desktop and mobile devices.
#2about 7 minutes
Building with Web Components and the Lit library
The application is built using standard Web Components and the lightweight Lit library, avoiding larger frameworks for better interoperability.
#3about 2 minutes
Unifying input with HTML Canvas and Pointer Events
The HTML Canvas 2D context is used for drawing, while Pointer Events provide a unified API for handling mouse, touch, and pen inputs.
#4about 6 minutes
PWA fundamentals for installation and offline support
Progressive Web App capabilities are enabled through the Web App Manifest for installability and a Service Worker for offline caching.
#5about 8 minutes
Extending web capabilities with Project Fugu APIs
Project Fugu is a cross-vendor initiative that adds native-like features to the web platform, such as clipboard and file system access.
#6about 2 minutes
Using the Async Clipboard API for copy and paste
The Async Clipboard API provides a modern, permission-based way to programmatically read and write images to the system clipboard.
#7about 3 minutes
Implementing file system access and file handling
The File System Access API allows the PWA to open, save, and overwrite files, while the Web App Manifest registers it as a file handler.
#8about 2 minutes
Creating a dark mode with CSS Custom Properties
A dynamic dark mode is implemented using CSS Custom Properties that are updated based on the `prefers-color-scheme` media feature.
#9about 4 minutes
Summary and real-world examples of advanced PWAs
A recap of how modern web technologies enable desktop-class applications, with examples like VS Code and Photoshop for the web.
Related jobs
Jobs that call for the skills explored in this talk.
Dev Digest 215: Agent Memory, JS2026, Googlebot Analysis & Canvas❤️HTMLInside last week’s Dev Digest 215 .
🗿 Make AI talk like a caveman
🧠 A guide to context engineering for LLMs
🤖 Simon Willison on agentic engineering
🔐 Axios supply chain attack post mortem
🛡️ Designing AI agents to resist prompt injection
🎨 HTML in c...
Chris Heilmann
Micro Components - a different approach to a simpler component-based webThere has been a lot of heated discussion lately in the web community about component based development. One side argued that Web Components are a standard we should follow whereas others complained that they still lag behind in what frameworks offer...
Chris Heilmann
Declarative Design and a fresh take on collaboration with developersGetting designers and developers on the same page can be tough for digital product teams. Things get especially tricky when the focus is just on fixing little things here and there instead of looking at the bigger picture together.
Translating design...