Show HN: I made a books recommendation app based on your mood (booksbymood.com)
Hello HN,
I noticed that I often looked for new books, depending on my mood (e.g., if I'm feeling tired, I want to find books that'll help me fix that and improve my sleep).
So, I created my 1st indie project, BooksByMood.
BooksByMood will help you find your next read based on your mood w/
- Books averaging 4.09/5 on Goodreads
- Each book comes with an explanation of why it's selected for your mood
- 18 moods to explore
I hope you'll enjoy using the website,
Cheers!
75 comments
[ 3.5 ms ] story [ 135 ms ] threadWhy not link to Amazon with an affiliate link in there? Collect a few bucks :-)
If I have to be honest, I started with this project to prove to myself that I can build something, ship it, and market it (bring traffic to it). This idea crossed my mind, but I didn't do it because I didn't expect I would have had enough traffic to make it potentially worth it!!
Lesson learned for next time (or next update):
- be more ambitious
- do not doubt yourself and the internet's magic
That's an interesting question; this was a small challenge for some reasons.
1. Since this is my first project, I wanted to ship something clean but fast (scope down to one feature).
2. I initially wanted to use some APIs. TLDR: Goodreads closed its API on December 8th, 2020. OpenLibrary was not bad, but the data required to be more consistent. Google Books API was alright, but I would have also curated manually in the end, and sometimes some info could have been better. Maybe it's a personal feeling, but it's hard to have a good books API out there (probably due to Amazon owning Goodreads and making sure it's hard for competitors to have good data as they do).
3. I knew it'd be complex to satisfy everyone with the recommendations, but I can do my best. My best is to ensure that what is recommended is included, even if it's a small amount, and that the recommendation is well rated by the community (e.g., on Goodreads).
4. Then, I realized (again) that we're in the age of AI, and I could leverage that (at least for a 1st release and see how it goes). Based on that, I tried different prompts with many criteria until I found one I liked. By doing this, I could ensure the quality of what was curated.
If it evolves in the future, this will definitely need improvement. But, for a first release, it does the trick!
I hope it answers your question!
I agree, good book data is hard to find despite so many big sources out there. And Amazon API is unavailable (unless you register as an affiliate, but you need a working relevant project to get approved in the first place).
I am working on a project to scrape some regional book stores, and I am finding it really hard to find an API which can reliably give all the data needed for a book. Google Books API so far has been working okay but turns out a single book has so many ISBNs based on which region or publication its been sold and there isn't an API that provides the list of ISBNs for all its releases.
Your comment made me want to explore AI, hopefully I could find a way to use it for my project and make my life simpler.
If you have tips or pointers, highly appreciated.
Have a great day.
I only have one question: why choose 4.09 for the rating value? (I do not use Goodreads, maybe my question is irrelevant.)
That may be unclear, and I may have to update the small banner on the homepage. As mentioned, it's "an average of 4.09/5 on Goodreads". The calculation works as follows: sum of all unique books rating / number of books = average.
I wanted to highlight that the website has books rated below 4/5 and above 4/5, but overall, the average rating on Goodreads is relatively high (= books recommended by the community).
Is there anything I can improve to make it more clear? :)
I like media of all sorts that matches my mood. If I'm sad, I don't listen to music that cheers me up, I'll listen to the saddest stuff I can find. But this app's approach is really geared towards managing your mood, so it'll try to make you happy. Or if you're confused, it suggests books to improve decision-making. And if you're energized, it suggests you use that energy reading about running and getting healthy.
Again, that's not a bad thing! Just a viewpoint that's embedded in the suggestions. Those choices are explained nicely, so people can decide if that's what they want.
This is one of the reasons I think this space is hard. You kind of want music that (step 1) first resonates with your current mood, and (step 2) then maybe takes you on a journey toward a better mood. And what journey you want depends on a bunch of factors. Am I just feeling blue, then maybe I eventually want to be cheered up. Am I mourning the recent loss of a loved one, then I'm going to be sad for the next N weeks or months, and I just want to be able to handle that in a healthy way.
step 1 and 2 together are maybe easier for books, because a story can start off sad and you can take an uplifting journey with the characters. But it's a little harder for music, because a song typically has one mood. Maybe you can find an album with an emotional arc, but I think practically you'd need to generate a playlist with songs that match at the boundary and overall create a trajectory.
But that's something you can only do when you know what the trajectory is in the first place, which is hard (as I mentioned above).
When I'm feeling down or depressed, I often want to engage in media that lets me wallow in those feelings as a cathartic sort of release. Would love some type of toggle that allows us to "match" a feeling or "improve" a mood. Sometimes we need a pick-me-up! But sometimes, I want to really sit with the discomfort of grief or loss and reading bleak books can help that resonate with me.
And you put the finger on something right here. As you describe, I didn't see it as: "If I'm sad, I want to listen to sad music".
When I built the app, I was really into that mindset of "How can this book help me when I'm in that mood?" (e.g., I'm feeling tired -> Suggesting "Why We Sleep" to fix your sleep and understand why sleeping is essential).
Somehow, I'm happy because what I wanted to do becomes clear when you use the website (based on what you described, which is 100% correct). But that also means I could have worked my "marketing/copies" differently to reflect that more.
(sleepy, rested) -> nsdr playlist.
(sleepy, focused) -> Tony robins talk.
Trying to guess what the user actually needs or wants seems nearly impossibly difficult.
It's possible for some people to feel more alone in groups, especially large groups, than it is for them to feel lonely while reading a book. Maybe one of the main reasons fiction is so appealing to some people is because it does, on a certain level, combat loneliness - some things seem easier to talk about in fiction than in real life.
Some feedback if you want:
- You're overdoing it with the shadows. Simple flat design looks cleaner
- A little too many colors, that are not really aligned with each other. If you're not a designer, check out Tailwind colors and pick 1-2 you like that work complementary. Only use those and white/black/grey.
- For further reading on color picking, read up about the 60/30/10 rule in color design
- Since you've built your site with react, you could think about adding some simple animations (for example, when the books are switched on "next-book" button) by using Framer Motion. This is an opinionated thing from me.
Cool project, good start in the indie hacking community :) Keep doing cool stuff. If you wanna connect, find me on Twitter: @icebearlabs
Your comment is gold!
I will bookmark it and refer to it for my future projects. It's good to have feedback on the design so I can improve it next time.
By any chance, do you have any design resources or books you would recommend for something getting started with that (ideally actionable)?
I just pushed an update to remove the "Show more" button.
I'm not a designer, but I strongly disagree with this one. Given a choice between using something flat or something with shadows, I will almost invariably lean towards the latter. The one place I might eliminate shadows for on this site is the "info" callouts on each book page; I don't think shadows communicate anything there and all other shadowed boxes on the site are clickable, while this one is not.
It's definitely something to add. Do you have other mood suggestions in mind?
If you want to see the detailed answer, I did it in another question below. Feel free to have a look at it!
TLDR: Curations are made with AI using custom prompts and then double-checked + added manually. The main idea behind that was to ensure the quality of the curated content. IMO, for this type of project, having less choice if the curation is good is fine, rather than having something via an API with "inconsistent" data and less relevance.
huh?
Examining the schedule for January 3, 1992, he saw that a businesslike professional attitude was called for. "If I dial by schedule," he said warily, "will you agree to also?" He waited, canny enough not to commit himself until his wife had agreed to follow suit. "My schedule for today lists a six-hour self-accusatory depression," Iran said. "What? Why did you schedule that?" It defeated the whole purpose of the mood organ. "I didn't even know you could set it for that," he said gloomily.
The site itself is very nice.
If someone is sad for 20-40-80 hours, please go talk to a friend!
Unless my mood sparks the interest which extends into different moods. I can still be interested in why I sleep even if I am wide awake as opposed to when I am tired.
I know what that feeling feels like, as I have felt it, so I am still interested in it nonetheless
Enchanting is all Fantasy - but what if I want an enchanting coming of age story?
Some other books to read when being sad is, Dale Carnegie's classic "How to stop worrying and start living" and some books on stoic philosophy by Seneca.