Apex Coloring is out now on Web, iOS, Android. This is how it got made: the decisions, the pipeline, and what I would do differently.
What it is
Apex Coloring — a 3D art studio for kids 3+. Color 3D animals, paint, solve art puzzles, play mini games, learn letters and numbers. No ads, no data collection, made for little hands.
Color 3D animals, paint, solve art puzzles, play mini games, learn letters and numbers. No ads, no data collection, made for little hands.
Documentation
The documentation for Apex Coloring is located in the docs folder.
- README.md: This file, providing an overview and setup instructions.
- Technical Guides: Detailed documentation on architecture, deployment, and maintenance can be found within the docs
Canvas, lighting, postfx defaults
- with dpr from the quality tier (§4), ACESFilmicToneMapping, SRGBColorSpace output. The canvas key includes the tier + settings revision, so quality changes remount cleanly.
- Lights: one directional sun + hemisphere fill. Shadows per tier (shadows flag): one 2048 map on high, 1024 on medium, off on low; shadow map updates every frame only while the camera moves, else every ~10th frame.
- Day/night is cosmetic, driven by a presentation clock (a full cycle in minutes, not real hours), with an "always day" toggle. Window emissives and lamps key off one global uniform. If audio or other systems mirror this clock, pin the mirror with a test — two copies of daylight() that can drift produce a city at noon with night music.
- Post-processing uses three's own examples/jsm passes (Render → SSAO high-only → emissive-only bloom → SMAA → Output), rendered manually in a useFrame, code-split so tiers with postfx: false never fetch the chunk. No extra postprocessing dependency.
- Motion outside the canvas is CSS on transform/opacity plus one small rAF util (count-up, pulse, stagger). No animation
Local Persistence
All application state is persisted via local storage mechanisms provided by the host platform (Web, iOS, Android).
- User Progress: Completed artwork, current coloring sessions, and mini-game states are saved to the device’s local storage.
- "My Art" Gallery: Saved artworks are stored in a local directory accessible within the app interface under "My Art". The UI displays "Nothing here yet — go make something beautiful!" when the gallery is empty.
- Exported Content: Users can export finished artwork to the device’s native Photos library via the "Save to Photos" action. This writes data to the operating system’s media store, not to an internal application
Departments and Features
Apex Coloring is organized into the following departments:
- Little Chef: Cook items like pancakes and pizza.
- Pet Pals: Care for animals (feed, interact).
- My Garden: Grow plants using soil and
Latest changes
Changelog
Every release of Apex Coloring, newest first. Each entry carries one block per store locale in the format the Play Console release-notes field takes, so the notes can be pasted straight in — and App Store Connect, the website and the in-app What's New panel all read the same source.
Generated by npm run release:sync from shared/content/release-notes.json — edit that file, never this one. Play allows at most 500 characters per language.
What is next
It is live at https://apexkids.reallexi.io. If you have shipped something similar, I would like to hear what you would have cut.

Top comments (0)