This is a submission for Weekend Challenge: Generosity Edition
When brainstorming an idea to build around charity and generosity, I knew I wanted to build something that turns a simple act of kindness into a shared experience. Something both people can keep forever and look back on. That reminded me of Pokémon GO, and how it got us to actually go outside and collect Pokémon (Oh good ‘ol 2016). What if we could go out and start collecting kind acts instead, and get a unique plant for each one?! 👀
What I Built
I built KindWood! 🌸 A virtual garden that grows more and more lush, every time you’re generous and kind to someone.
The idea is simple: you help someone, then describe it in a sentence in your own words. Google AI then classifies it into a plan species and a short lore about what it means.
A code appears then on your screen. The person you helped types that code in, sees what you said, and confirms it really happened. Only then does a plant bloom 🌱!! on both your gardens! When tapped it shows a memory card showing what happened, when, both your names.
But I wanted the garden to feel more alive, like its talking to you. So when you tap on the voice icon on a memory card, the memory is narrated back to you in a calm voice soothing voice, powered by ElevenLabs. Takes you right back!
Every plant needs two people to agree it happened. That’s the whole trust model. kindness in KindWood is never something you claim solo. It always takes two. 🫱🏻🫲🏻
Demo
Check out the demo video here:
Code
You can find the code on GitHub:
A virtual garden that grows more and more lush the more kind acts you’re part of.
Two people, one moment, one plant. When someone helps another person with something real, they describe it in a sentence. Google AI turns that into a plant species and a short piece of garden lore. The person who was helped confirms it happened with a short code, and only then does a plant bloom- The same plant, in both of their gardens, forever a shared memory of that moment.
Built for DEV.to’s Weekend Challenge: Generosity Edition.
Setup
You’ll need three free accounts
1. Firebase (the shared database)
- Go to https://console.firebase.google.com → Add project → name it anything, skip Google Analytics.
- On the project’s “Get started” page, click the
</>(web) icon → register a web app (skip Firebase Hosting). - Copy the
firebaseConfigobject shown — you’ll need every value from it. - In the…
How I Built It
Stack: React, Tailwind, Firebase/Firestore as the shared source of truth and Framer Motion to make every interacting feel a lot more fun!
The core mechanic is simpler than it seems. There isn’t a per-user garden. A garden is just a live query showing every act where they are either a Giver or a Receiver and that the act has been confirmed, which happens when the receiver confirms it.
A kind act is a single Firestore document that contains a short lived four digit code that lets the receiver query and find it. Once they confirm, their user id and details get populated into the receivers field of the kind act and the status moved from pending to confirmed. That’s when the plant appears on both their devices!
Google AI (Gemini) is what turns plain sentences into a garden lore! Every description gets classified into one of six plant species, a short poetic lore for the memory card, and a separate, more conversational narration thats meant to be spoken rather than read. This made the garden feeling alive rather than static.
ElevenLabs narrates that spoken narration, from the memory card. I felt like it really changed what looking back at a memory feels like, instead of just re-reading what happened, almost like the garden is speaking to you.
Prize Categories
- Best Use of Google AI: I used Google AI to turn natural language descriptions of kind acts into a plant lore and classify the act into plant species.
- Best Use of ElevenLabs: I used ElevenLabs to breathe life into to garden and make it as if its speaking to you, describing all your kind acts in a clam soothing voice.
Thanks for reading it all!
If KindWood does one thing, I hope it’s this: Charity and kindness doesn’t need to always be loud, tracked, or public to really matter. It just needs to be real to the two people it happened between. Just someone who cared enough to notice.
Go be that someone for one person today. Let’s get out there and be generous! ✨







