Inspiration

Finding a good book is a harder task than it needs to be - especially in today's digital age where reading is becoming a rarer habit. We want to make it easier for people to find their next book by eliminating any decision paralysis and understanding their likes and dislikes.

There are no good book recommenders out there and we want to make finding your next book a fun and enjoyable experience, that is also easy and low-effort. One of the most fun way to get users preferences is inspired by dating apps -- where users get recommended dates based on their swipes. We adopted this in our app to help users find their next book.

What it does

Date-A-Book is a dating app but for books. You swipe left/right on books instead of people! We have condensed each book's description into a short summary which you can read quickly to get an idea of what the book is about -- and then you can decide whether you like it or not!

When a user likes a book, we populate their recommendations with more books like the ones they like. Meanwhile, we filter out books they dislike (swipe right on) to help keep recommendations as accurate as possible.

How we built it

We used the FARM stack. FastAPI powers the backend API, MongoDB stores the book data and user preferences, and React handles the frontend. We used Tailwind CSS with custom theming and ShadCN UI components to make the interface clean and responsive. We also added swipe gesture support and animations using Framer Motion.

We used MongoDB Atlas to store the book dataset, creating embeddings and run vector search. This allowed us to leverage AI/ML technologies to improve the efficiency of the searches and innovate book recommendations (instead of using keywords).

To deploy our web app, we used Google Cloud Run to host our backend as a containerized service, and Firebase Hosting to serve our static frontend. This setup allows for scalable, serverless backend deployment with Cloud Run, while Firebase Hosting delivers fast and globally distributed frontend content.

Challenges we ran into

Time was our biggest constraint. As full-time students juggling part-time jobs and assignments, we had very limited windows to work on the project. On top of that, we were in the middle of the exam period, which made it even harder to coordinate. Most of our collaboration happened late at night or in weekends, so staying focused and on track was a real challenge.

Another significant challenge was finding an adequately good book dataset - to our surprise, there were no well-maintained datasets for books. Many of them were outdated, limited dimensionality or wrong information. A lot of time was spent pre-processing the data and filling in missing information. We were also limited by our spending which impacted the quality of our short summaries (since we were using a free Gemini LLM which was rate-limited).

Accomplishments that we're proud of

We’re proud of how polished the app feels. From the smooth animations to the mobile responsiveness, it feels like a real product. We're also proud of building a full-stack app from scratch that’s both fun and functional. We are also proud of how we leveraged vector search for this purpose to build something truly unique and innovative.

What we learned

We learned how to collaborate better under tight time pressure. This was our first time building a project using the FARM stack (FastAPI, React, and MongoDB) so we had to quickly pick up backend and database integration. We also gained hands-on experience deploying a full-stack app on Google Cloud. Beyond the technical skills, we learned how to manage swipe gestures, maintain shared state across pages, and work together efficiently despite a packed schedule. We also learned a lot about how much time and effort it takes to pre-process data which was the first step we had to take.

What's next for Date A Book

We're planning to improve the recommendation engine using smarter algorithms or lightweight machine learning models to better match users with books they’ll love. We also want to refine the user experience by enhancing swipe interactions, animations, and responsiveness across devices. On the DevOps side, we aim to automate our deployment pipeline to streamline future updates. Eventually, we'd love to add features like book reviews, ratings, and even social connections between readers with similar tastes.

Built With

Share this project:

Updates