Bookaroo - Book Exchange App

Hello all,

I have completed the portfolio project and wanted to follow it up by sharing it here.

Please check out the app and code using the links below.

Live Site
Frontend Code
Backend Code

Bookaroo is a fully functioning PERN app for connecting users to exchange or donate unwanted books (sort of freecycle or gumtree but just for books).

Whilst not strictly an e-commerce site (it doesn’t include any simulated shopping cart or transactions), it does have many of the typical features associated with traditional e-commerce sites.

Features include:

• User authentication and authorisation using JWT and protected routes.
• User registration and login/logout.
• Update user details, set preferences and liked books.
• Receive recommendations based on set preferences.
• Search for books in the db by title, author, and category of literature.
• Create listings for books to exchange or give away and delete once complete.
• Exchange messages with other users through the internal messaging system.

Tech Stack:

Frontend - hosted on Vercel

• React JS
• React Router DOM
• Styled Components
• Axios
• Formik
• Yup

Backend - hosted on Heroku

• Node JS
• Express Server
• Passport
• PG
• Cookie-Parser
• Axios
• Sequelize
• Supabase JS
• Yup

PostgreSQL database hosted on Supabase

Overview:

The idea is that users can create an account and create listings of their unwanted books to either give them away to those who want them or connect with other users to arrange to exchange books and even discover new books to reead based on other’s recommendations etc.

To have something meaningful to demonstrate, I have created around 10 different users, each with roughly 10 listed books to give a fairly decent-sized books database for real users to interact with.

In order to try Bookaroo, follow these steps:

• Create an account, make up an email address and username, choose a password and enter a valid UK postcode.
• Set your reading preferences once logged in and browse books.
• Try creating a listing using the on-screen instructions.
• Message users if they have a book you’re intersted in.

For this demonstration app, I am using the Google Books API for listing books. I’ve created a few users and made listings for them so there is a substantial database of books to have a look at.

The bulk of the development lead-time was around 4 weeks. Debugging the deployment has taken an additional 3 weeks due to persistent issues around CORS and cookies. After a lot of investigation and some extensive re-writes to the codebase I was able to solve the problems and get it to deploy correectly. It turns out that I had some additional security settings on my personal google account that were blocking 3rd-party cookies and causing my app to fail. Some advice I would offer to others is always check your deployments on a variety of browsers if possible as this will definitely help reveal unexpected issues and save you a lot of time!

I have really pushed myself with this project, it incorporates a lot of elements of full stack development that I have been wanting to practice and I am very happy with the results. Thanks for checking this out, any feedback welcome!