Case Study for Bukness full-stack project

bukness' main view

Overview

Bukness is a web app, developed using the MERN stack, that provides users with access to information about books related with TECH, business and self-help. Users are able to create an account, update their personal data, and create a list of favorite books.

Purpose & Context

Bukness was a personal project I built as part of my web development course at CareerFoundry to demonstrate my mastery of full-stack JavaScript development.

Objective

The project aimed at having an ambitious full-stack project I can add to my professional portfolio. My intention was to build the complete server and client-side for the application from scratch.


postman authorization

Server-Side

I created a RESTful API using Node.js and Express, which interact with a non-relational database (MongoDB). The API can be accessed via commonly used HTTP methods such as GET or POST. CRUD methods are used to retrieve and store data in the database. The API provides the information about books in JSON format.

I used Node.js and it's most popular framework Express, to create its different routes.


view API documentation


To test the API, I used Postman. I also included basic user HTTP authentication and JWT authentication.

Passwords are hashed using Bcrypt, following the industry's best practice on security.


login in bukness

Client-Side

After completing the API, I started to build an interface that users need, in order to make requests and receive responses from the server. It is a single-page, responsive application, developed with React and React-Redux.

It includes the following React views:

  • Main view (shows a list of all books)
  • Single book view (shows data about a single book and allows users to add the book to their list of favorites)
  • Login and registration view
  • Profile view (where users can update their user data and list of favorites)

Users can also update their profile, delete their account, and read about authors and book genres (as the API allows to)


Challenges

This was both my favorite and most challenging project. I have enjoyed building the API and working with database structures. I also quickly became familiar with using the terminal for MongoDB. With regards to the client-side, it took me a while to understand how React and Redux work and how to achieve the desired results. However with the help of my great tutor and after a couple of pair-programming session with an experienced developer, I was finally able built the project.

Duration

The development of the client-side took me double of what took completing the server side. This was because I needed time to fully understand how React (and React Redux) works. Including every feature, the learning process and the main functionality, the whole activity took aproximately 3 months.

Thanks to this project, I became much more familiar with how RESTful arquitecture works and how structure of bigger projects is built. I also learnt a lot more about JavaScript and of course it's most famous library, React.

Credits

Role: Lead Full-stack Developer

Tutor: Matthew Wacha

Mentor: Aroh Sunday M.




Back See Github Live project