Breathe. Click. Color. Let the world dissolve.
Stillness is a browser-based coloring book designed for the moments when your mind needs a quiet place to land. No accounts. No ads. No noise β just you, a canvas of intricate patterns, and colors that feel like a deep exhale.
Choose from ten hand-crafted patterns β mandalas, flowing florals, ocean dreamscapes, celestial skies, and more. Fill regions with a single click, paint freehand with a soft brush, or layer gentle gradients β all accompanied by ambient chimes, birdsong, or the hush of distant waves. Save your finished artworks to a personal gallery, share them with a link, or simply let the colors carry you somewhere quieter.
Built for stillness. Open it when the day feels loud.
| Tool | Shortcut | Description |
|---|---|---|
| Fill | F |
Click any region to flood-fill with the selected color |
| Brush | B |
Freehand drawing with adjustable size and opacity |
| Gradient | G |
Click-drag to apply linear or radial gradient fills |
| Eraser | E |
Reset filled regions or remove brush strokes |
| Eyedropper | I |
Sample any color from the canvas |
- Mandala β 12-fold symmetry with 200+ fillable regions across 6 concentric rings
- Floral β Central flower, corner bouquets, butterflies, and decorative leaves
- Geometric β Hexagonal tessellation with nested stars and circles
- Zentangle β 4Γ4 grid with 8 unique tile patterns (spirals, scales, waves, diamonds)
- Ocean β Layered waves, tropical fish, shells, starfish, and coral
- Elephant β Zentangle-style portrait with mandala forehead and decorative tusks
- Butterfly β Detailed wing patterns with intricate vein work and symmetry
- Celestial β Stars, moons, constellations, and swirling cosmic motifs
- Garden β Winding paths, flower beds, trellises, and garden creatures
- Mosaic β Interlocking tile fragments inspired by stained glass and Roman mosaics
Switch the palette to match the mood of the season:
- Default β The original 25-color curated palette (muted, calming tones)
- Spring Bloom β Soft pinks, fresh greens, and lavender
- Autumn Warmth β Rich ambers, burnt orange, and deep reds
- Winter Frost β Cool blues, silver, and icy whites
Subtle particle effects bloom outward when you fill a region β tiny motes of color that drift and fade, making each click feel alive.
- Mouse wheel β Zoom toward cursor
- Space + drag β Pan across the canvas
- Pinch to zoom β Touch-friendly on mobile and tablet
- Keyboard:
+zoom in,-zoom out,0fit to screen
- 25-color curated palette (muted, calming tones)
- HSL sliders for fine-tuning custom shades
- Dual gradient color selector
- Chimes β Pentatonic wind-chime arpeggio
- Wind β Filtered white noise swell
- Birds β Synthesized chirp sequence
- Ocean β Low-pass wave wash
Save your colored artworks to a personal gallery stored in your browser. Browse, revisit, and continue coloring any saved piece β your quiet collection grows over time.
- Image sharing β Export and share via the Web Share API on supported devices
- Shareable URL β Generate a compact link (powered by LZ-String compression) that encodes your artwork so anyone can open and view it
- Responsive sidebar that collapses for small screens
- Tap to fill, pinch to zoom, swipe to pan
- Touch-optimized controls throughout
- ARIA labels on all interactive elements
- Full keyboard navigation
prefers-reduced-motionsupport β animations gracefully step aside
A gentle guided tutorial welcomes first-time visitors, introducing tools, patterns, and the art of doing nothing in particular.
- PNG β Rasterized export at 800Γ800
- SVG β Lossless vector export (editable in Illustrator/Inkscape)
- Save/Load Progress β Persist your work to localStorage and resume later
git clone https://github.com/LadyNaggaga/Stillness.git
cd Stillness
npm installnpm run devOpens a hot-reloading dev server β perfect for exploring or making changes.
npm run build && npm run previewBuilds optimized static files into dist/ and serves them locally.
The site auto-deploys via GitHub Actions on every push to main. Just merge and it's live.
Modular ES-module app built with Vite β each concern lives in its own file.
src/
βββ main.js # Entry point & app initialization
βββ canvas.js # Paper.js canvas setup, zoom/pan
βββ tools.js # Fill, brush, gradient, eraser, eyedropper
βββ ui.js # Sidebar, toolbar, theme & palette controls
βββ audio.js # Web Audio API ambient sounds
βββ state.js # App state, gallery, sharing (LZ-String)
βββ export.js # PNG / SVG export
βββ undo.js # Command-pattern undo/redo
βββ onboarding.js # First-visit guided tutorial
βββ patterns/
β βββ index.js # Pattern registry
β βββ helpers.js # Shared geometry utilities
β βββ mandala.js
β βββ floral.js
β βββ geometric.js
β βββ zentangle.js
β βββ ocean.js
β βββ elephant.js
β βββ butterfly.js
β βββ celestial.js
β βββ garden.js
β βββ mosaic.js
βββ styles/
βββ main.css # Core layout & dark-mode theme
βββ sidebar.css # Sidebar & palette styles
βββ toolbar.css # Toolbar controls
βββ mobile.css # Responsive / touch overrides
βββ onboarding.css
| Layer | Technology | Purpose |
|---|---|---|
| Build | Vite | Fast dev server, ES-module bundling, production builds |
| Rendering | Paper.js | Vector canvas, hit-testing, zoom/pan, SVG export |
| Audio | Web Audio API | Synthesized ambient sounds (no audio files needed) |
| Sharing | LZ-String | URL-safe compression for shareable artwork links |
| UI | Vanilla CSS + JS | Dark-mode interface, responsive layout |
| Fonts | Inter (Google Fonts) | Clean, modern typography |
Each pattern is a generator function that creates Paper.js closed paths β every enclosed region is an individually clickable and fillable item. The fill tool uses Paper.js hitTest() for precise vector hit-testing (no pixel scanning), which means fills are instant and crisp at any zoom level.
Uses a command pattern β each fill/brush operation is recorded as a reversible command object, enabling efficient undo/redo without storing full canvas snapshots.
| Key | Action |
|---|---|
F |
Fill tool |
B |
Brush tool |
G |
Gradient tool |
E |
Eraser tool |
I |
Eyedropper |
Space + drag |
Pan |
+ / - |
Zoom in / out |
0 |
Fit to screen |
Ctrl+Z |
Undo |
Ctrl+Shift+Z |
Redo |
MIT β free for personal and commercial use.