Skip to content

TechLabs-Berlin/ss23-friends-shelves

Repository files navigation

ss23-friends-shelves

What is Friends Shelves?

A book-sharing web app where friends can easily share and borrow books from each other.

The journey of the project can be followed in the presentation slides for midterm and final presentation.

Webdevelopment

How to run the prototype?

The in this repo created prototype is a MERN WebApp. To run it from the console you need node installed and npm install all the necessary packages from the backend and from the frontend directory. To connect to the MongoAtlas Database you need to ask a team member for the content of the .env file. If you want to run it without the .env just on your local machine, you might use it with your local mongo store. To do so, change the mongo.connect in the backend/app.js and backend/seeds/index.js files accordingly. As a next step you need to run the app from the backend directory using "node app.js" and from the frontend directory using "npm run dev". Opening http://localhost:5173/ in your browser will then direct you to the login page. Using the shared MongoDB you might now register your own account and use the app. If you went with the local mongo DB, please create 3 users and extract their user._id's from the DB or the react developer tools, once logged in. To seed the database, replace the 3 user._ids called bookOwners at the bottom of backend/seeds/seedHelpers.js. Then run "node seeds/index.js" from the backend directory to seed the local database and restart the backend server. You should now have a fully functioning prototype to test.

What the prototype can do/ functionalities the code includes

Authentification:

The App uses expression-session and passport to authenticate the user.

What a user can do:

A user can create, read, update and delete his/her own books. He/she has access to all of his/her own books with all the data stored on the book object in the books collection. This includes all the past and currently open requests.

Apart from that the user can browse all books in the database, that he/she doesn't own, for these books he/she is only accessing the book info, but no sensible data about e.g. the books' owner or any requests the user didn't participate in. If a user is interested in borrowing a certain book from another user a borrowing request can be send. If the book owner accepts this request he thereby acknowledges the borrower to receive access to his/her user info. In the process of borrowing and lending a request passes through different states, which are aknowledegd by the appropriate user. The potential borrower (B) creates the borrowing request and sets the bookLocation of the request to home. The book owner (lender L) can now decide to either decline or accept the request and will set the request to declined or transferLtoB. Once the book reaches B he will set the book to atB. By sending messages back and forth in any state the B can e.g. ask for a prolonged reading time, thus the L can adjust the due date. Either B or L can set the request to transferBtoL. When the book made it backHome the L will click, that the book returned home.

Further Features:

Not yet implemented in the prototype on the main branch are the following features, that already work on the BE and can be tried out using Postman (or similar programs):

The FE prototype deletes a borrowingrequest when the owner clicks, that the book returned home. The BE can do a little more here. The book can be set to a state called backHome which closes the borrowing request and stores it on the book, so it is then accessible by the book owner in the books request history and by the borrower on his borrowingRequestLog. Furthermore books can be added to the users watchlist and a list, that contains all books, the user already read/knows.

Furthermore books can be added to the users watchlist and a list, that contains all books, the user already read/knows. Aditionally the CRUD routes for user reviews of books exist.

All these functionalities can be found in the branch watchlistAndSimilarLists.

The branch initialsetup includes the intial ejs protoype which was remodeled to the MERN prototype on main.

Team members - Web Development

Esther Rauschert (backend) and Alexander Sommers (frontend)

Mentor: Larry Almeida

Data Science

Project Overview

  • Data Exploration and Cleaning: In this phase, I analyzed the dataset to understand its structure, find missing data, and make necessary data preprocessing. The cleaned dataset forms the basis for the following steps.
  • Data Visualization: I used various data visualization techniques to gain insights into the book data. This helps users and collaborators understand the data's characteristics and trends.
  • Linear Regression Model: I implemented a linear regression model for predicting book ratings. This model allows users to estimate the ratings of books based on certain features or criteria, providing a valuable tool for book enthusiasts.
  • Collaborative Recommendation System (Work in Progress): While the project includes a linear regression model, I am actively working on implementing a collaborative recommendation system. This feature will provide users with book recommendations based on their preferences and behaviours, enhancing the app's usability.
  • Team members - Data Science

Nitin Sain

Lena (part-time contribution)

Mentor: Larry Almeida

User Experience

Designing and Testing a book borrow and lend Web App Pages platform. These tasks were carried out uniformly between Albert and Jennipher as have been shown on our Miro Board.

Project Overview

  1. List out the web application features
  2. Create the Information Architecture
  3. Progress to User Flow
  4. Move to Figma for Design System, Low/High Fidelity and Prototyping.

We begun with brainstorming as and entire Friends Shelves team, then we (UX team) moved on to do user research whose results you will findin the User research folder (of the UX folder). Results from user research were combined together with original Friends shelves idea

formation goal and from this possible features were chosen and presented to the whole team. Final features for Friends Shelves were chosen and agreed upon by the whole Friends Shelves team using the MOSCOW priotization. Project progressed with creating of Information Architecture, User Flow, Low and then to high fidelity wireframes which then progressed to protype whose user journey we tested. Please check out our Figma Miro links.

CONCLUSION

The most helpful tools that helped us in completing our tasks were; Figma, Miro, Logo.com, google forms as main tools to design the prototype.Z

The UX tasks do not simply end with this report, but continue as the project grows and may need constant updates, edits and adjustments.
![image](https://github.com/TechLabs-Berlin/ss23-friends-shelves/assets/80153432/fdb5142a-6273-4166-afb2-358a8e61ee35)

UserFlow in Miro

Figma

Goggledrive

Team members - User Experience

Jennipher M. Kasemire and Albert Kweku Bening

Mentor: Vincent Oluwadamilare Akinyoyenu

Deep Learning

Extracting Text from Image

Optical Character Recognition (OCR) software or online OCR tools to extract text from an image. Many free and paid OCR tools are available online that can help you to separate the text. In this project, Pytesseract is a Python wrapper used as a module for text extraction, an open-source Optical Character Recognition (OCR) engine that converts scanned images of text into machine-encoded text.

About the Project

Pytesseract enables the extraction of text from images, PDFs, or scanned documents by utilizing the OCR capabilities. It processes images and identifies the characters and words in the image, converting them into machine-readable text to perform further processes.

Prerequisites

You will need the following packages:

  1. pandas
  2. numpy
  3. cv2
  4. glob
  5. bytes io
  6. tqdm notebook

For Text Extraction:

  1. pytesseract
  2. pillow

few Installing can be done by

pip3 install numpy
pip3 install pillow
pip install opencv-python

Simple Code Execution of the model

You can see this in the below image when the user uploads the image from the local machine. The detector extracted text from the image Separately. Next, it takes the extracted text as input for further processing by performing a search and match task with the dataset; when it finds a matching text, it brings out all the corresponding data columns as final output.

Step 1: Identifying the text and extracting

image

Step 2: Performing search, match

image

Step 3: Execute result

image

Conclusion:

There are many methods to upload book covers, like uploading from our local device or directly pasting the URL from the web. Both ways, it will work with simple alterations in our code. Also, Many models are available, but I used Pytesseract as a text extractor despite its difficulties with low-quality images. I wanted to test with py-tesseract because the identifier must perform even if we write text on paper and upload it so that not just book covers but also thesis papers and journals our friends' shelves can have.

Team members - Deep Learning

Jayashree Prabhakaran

Mentor: Larry Almeida

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published