This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
Moss Atelier turns one sentence into a playable world. Type "a rainy monastery library at dusk" and a Gemma model returns a colour palette, a font pairing, an ambient soundscape and a story seed. The app applies the theme live, plays the generated ambience, and shows an animated pixel sloth. Then you step into Fable, a six-room text adventure written by Gemma and set in that world.
The effort it saves: nobody has to pick colours, fonts and sounds, or invent a story, just to get a calm place to rest in. You describe the feeling, and the model does the making.
Who gets a little lazier: anyone who wants a quiet space to unwind, or a story to step into without designing one first.
Demo
Code
How I Built It
The app has two Gemma backends behind one interface:
-
Local (offline):
gemma3:1bthrough Ollama. The 4B model did not fit in the 3.7 GB of RAM on my laptop, so the 1B model is the honest offline choice. -
Hosted:
gemma-4-26b-a4b-itthrough the Gemini API, called by a small Node proxy so the API key never reaches the browser.
Every model response goes through a validator: strict JSON, hex colour checks, WCAG AA contrast, and a font allowlist. If the model fails twice, the app falls back to one of three hand-tuned presets, so it never shows an empty screen. Gemma's responses can also include internal reasoning parts. The proxy drops them and forwards only the final text.
The stack is vanilla HTML, CSS and JavaScript (ES modules), with Web Audio for the soundscape, Canvas for the sprite, IndexedDB for saves, and a service worker for offline use. The only runtime dependency is the Sentry browser SDK, used for tracing.
Why Does Open Innovation Matter?
- Privacy: in local mode, the mood text never leaves the machine.
- Offline use: after the first load, the app runs with the network disabled. The README documents that test.
- Ownership: with open weights, I can pin the model version, swap it, and measure exactly how a small model behaves, then report the results honestly.
My Agent Session
The Lazy Payoff
Prize Categories
- Best Use of Gemma
- Best Use of Sentry Agent Tracing
- Best Use of Render
- Best Use of a .tech Domain
- Best Use of Entire
Top comments (0)