I've been building software for sixteen years. I've built countless websites, mobile apps, backend solutions and quirky side projects. The latter never got as serious as this one and I'm both excited and terrified.
I have no idea where it would lead, but I hope that you'll find my fresh experience, as I live it, relatable and hopefully benefit from watching me fail or succeed. And most importantly, I'd really appreciate any feedback you would be willing to share!
But alas, let me introduce you to the idea of Hounty:
Idea
I have two kids (9 & 10 years old); I love them dearly and they're the best family I could ever wish for. But the mess is endless: just like me they are creative and more often than not they drop their clothes everywhere, snack on everything from couch to beds and leave crafty leftovers all over. You can see some of it on the picture above.
About a month ago, sometime around Christmas, in a desperate attempt to make them help I offered to play a game:
"Take your phones",- I said - "one of you would need to take as many pictures of everything out of place in this room as you can and then we'll clean those bounties for points".
We used our WhatsApp group for it:
It was hard to keep track of who's cleaning what, which pictures are before and which are after, but it took us about 15 minutes to make the room look more presentable. It worked!
User experience was horrible though, not to mention the mess in my photo library :)
Proof of concept
The very first version had an s3 bucket for a backend, but was scrapped in favour of IndexedDB. You know what's better than serverless? No servers at all!
Here, you can try it yourself: https://hounty.app/clean
It's a single page web application; all the data is stored in the local database:
Images are also stored right there as data:image/png;base64,...
IndexedDB has a bit of annoying callback-y API so I wrapped it in promises to make it more pleasant to work with, e.g.:
/**
* Open local indexedDB database & setup schema
* @returns {Promise<IDBDatabase>}
*/
export const openDb = () => {
return new Promise((resolve, reject) => {
try {
const req = indexedDB.open("bounties", 1);
req.onerror = (_event) => {
reject(`Failed to open database`,);
};
req.onsuccess = () => resolve(req.result)
req.onupgradeneeded = () => {
const db = req.result;
db.onerror = console.error;
const objectStore = db.createObjectStore("bounties", {
keyPath: "id",
});
objectStore.createIndex("status", "status", { unique: false });
objectStore.createIndex("session", "session", { unique: false });
objectStore.createIndex("createdAt", "createdAt", { unique: false });
return resolve(db);
};
} catch (error) {
reject(error)
}
})
};
And then I could use something like:
/**
* Add new bounty to the database
* @param {IDBDatabase} db
* @param {import("./types").OpenBounty} bounty
* @returns {Promise<IDBValidKey>}
*/
export const createBounty = (db, bounty) => new Promise((resolve, reject) => {
if (!db) return reject("No opened database");
const t = db
.transaction("bounties", "readwrite")
.objectStore("bounties")
.add(bounty);
t.onerror = () => {
reject("Failed to create a bounty");
};
t.onsuccess = () => {
resolve(t.result);
};
})
Any device storage is limited and so, as a quick fix I added ability to clear database when "Play again" is pressed.
As far as stack goes - it started as Preact project, but now I've moved code to Svelte (Kit) to incorporate the game into the world's most boring landing page:
Hounty?
I've started using the cleaner game almost daily; Even installed it through "Add to home screen" for easier access. It's an interesting feeling to write a software that helps YOU: kinda makes me wonder what the heck was I doing for the past sixteen years ;-)
But kids were not too excited about it: yes, they used it occasionally, but only when I insisted on it. If anything, management taught me that the easiest way to get answers is to ask questions and listen - so I asked them point blank what makes an app exciting.
"Rewards!",- they told me - "Would be cool if we could get points and buy avatars!".
Let me get it straight: I wouldn't need to bribe them with allowance and gifts anymore? They'd clean for imaginary points and SVGs?!
Rewards. Bounties. Home. Home bounty. Hounty? Yes, cleaning haunts me daily! How about a little helpful ghost that cleans?
Here are some work in progress stages from AI generated prototypes to SVG drawn mascots and logos:
Starting a business
I got excited! Not only could I build something meaningful that I am in a desperate need for, but I could finally have an excuse to code!
You see in the past year, ever since I've picked up management, I've been spending more and more time in meetings than coding. Don't get me wrong - I love making good changes happen and meeting room is the right place for it! And I have over a dozen of amazing developers that can code much better than me! But I still don't want to let go of it. I don't think I'll be able to be a good manager if I'd lose a grip on tech side of things - how would I be able to understand people who rely on me if I can't relate to their struggles?
Besides, I tend to get a tad bit too pushy and opinionated at times and I think it's good to have a place to nourish all my crazy/visionary ideas without disturbing flow of others too early for them to reap the benefits of the change.
With that said, I am going to remain dedicated to success of Strawberry and will keep doing my best at my current position. And with the blessing from my employer - I'll spend my free time to work on Hounty as a sole proprietor.
I submitted the documents for it yesterday 🎉
It's scary. It's bloody terrifying. There's a whole new world of new rules and obligations and it would be so much easier just to keep doing websites and apps B2B. But I have a vision and I'm gonna give it time and the best effort I can.
I believe that software can change lives for the better. I know how hard it is to be responsible for a household, to juggle chores, work and shape next generation on the side day in and out. And I know that I'm not alone in this struggle.
I believe that if laundry, cooking and cleaning would take less time and mental energy from me I'd be able to create amazing things! Be it music, apps or miniatures ( I got into miniature painting recently, it's so much fun!) or anything else that I am yet to discover!
And I believe that if I can make it a bit easier for others - they'd come up with a way to solve another problem and another...
I'm a dreamer, but of a realist kind. I know it'll be very hard to juggle work, kids, side business, promote consumer app in general and it might take a hell lot of time before I get it right.
But I've decided that I'm gonna do it.
Right now all I have is a wireframe prototype, that's where it starts:
Let me know if you have any questions, suggestions or feedback!
And I'd really appreciate if any of you would be interested in participating in a user interview: a 15-20 minutes video call.
Reach out to me here, at LinkedIn or at valeria@hounty.app if you're interested.
Either way, I'll keep you posted on the progress!
Top comments (14)
I was building something on these lines using firebase called chore rewards I wanted that they would have a family group they would all see and got hung up on the architecture adding and removing family members joining other families etc
Very relatable! Using every trick I know to keep myself focused too 😅
What did you use for frontend or did you start with the API first?
That's the best reason to start a business I ever heard 🤘
Haha thank you 😎
wow that's a brilliant idea, I hope it works with my children too😅
I hope so too!
Brilliant
Thank you ☺️
Awesome
Thank you!
I was looking to do something similar myself, at least from the standpoint of taking pics.
For future reference, have a look at Dexie.js, it's a nicer wrapper around IndexDB.
Thanks a ton, will do!
as an AuDHDer, colour me interested lol
Haha, yup, that’s spot on!
So far it looks promising: two people with add/autism managed to clean with the app, but trying new things is rarely an issue - making it into a habit is a completely different story 🤗