OHARA BOOKSHELF

OHARA BOOKSHELF

04 JULY 2023
Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

OHARA is a revolutionary online platform designed for e-book enthusiasts to manage, track, and enhance their reading experience. With a user-friendly interface and intuitive features, OHARA empowers users to create and organize personalized bookshelves, explore the collections of other users, and receive smart book recommendations.

The platform allows users to effortlessly manage their e-book collections by creating and customizing bookshelves. They can categorize their books, track their reading progress, and easily access their favorite titles. Additionally, OHARA encourages interaction and collaboration among users, as they can explore and engage with the bookshelves of fellow bibliophiles. This fosters a vibrant community where users can discover new books and share their literary interests.

OHARA takes reading recommendations to the next level with its intelligent algorithms. By analyzing users' reading preferences, history, and engagement with the platform, it provides personalized book recommendations that align with individual tastes and interests. This ensures that users are constantly discovering new books that resonate with them. Furthermore, OHARA leverages cutting-edge technologies such as web scraping and text mining to provide valuable insights and ratings for recommended books. Users can access reviews from trusted sources, enabling them to make informed decisions before selecting their next read.

To add a touch of personalization, OHARA integrates with neural networks and real-world survey data to analyze users' emotions. By capturing facial expressions through a built-in camera feature, the platform can determine users' current emotional states and recommend books that align with their mood and emotional needs. In a nutshell, OHARA is a comprehensive platform that aims to revolutionize the e-book reading experience. With its intuitive interface, personalized bookshelves, collaborative features, intelligent recommendations, and emotional analysis, it provides a seamless and enriching reading journey for bibliophiles worldwide.


Demba Sow - Ohara Bookshelf

Built With

Ohara bookshelf is my first all-in-one project. where I used a lot of technologies, frameworks, and libraries. Here are some of the major ones:

Frontend
TechnologyAbstract
ReactA JavaScript library for building user interfaces.
Chakra UIA flexible and accessible UI component library for React.
Chakra React SelectA custom select component for Chakra UI.
React Router DOMA routing library for React applications.
EmotionA CSS-in-JS library for styling React components.
React OAuth GoogleAn OAuth library for integrating Google.
AxiosA promise-based HTTP client for making API requests.
FormikA form library for managing form state in React.
YupA JavaScript schema validation library for form validation.
Framer MotionA motion library for adding animations to React components.
React IconsA library of customizable SVG icons for React.
React WebcamA React component for capturing images from a webcam.
ZustandA small, fast, and scalable state management library for React.
Backend
TechnologyAbstract
Node.jsA JavaScript runtime environment for server-side development.
ExpressA web application framework for Node.js.
NestJSA TypeScript-based server-side framework for building scalable and maintainable applications.
AxiosA promise-based HTTP client for making API requests.
JWTJSON Web Token for authentication and authorization.
PassportA middleware for user authentication in Node.js.
PrismaA middleware for user authentication in Node.js.
Class TransformerA library for transforming plain JavaScript objects to class instances and vice versa.
Class ValidatorA library for input validation and data normalization in classes.
dotenvA module for loading environment variables from a .env file.
Express SessionA session middleware for Express.
Google Auth LibraryA library for integrating Google authentication in Node.js applications.
MorganA logging middleware for HTTP requests in Express.
Passport Google OAuth 2.0A Passport strategy for authenticating with Google using OAuth 2.0.
Passport JWTA Passport strategy for authenticating with JSON Web Tokens.
Passport LocalA Passport strategy for authenticating with a username and password.
Reflect MetadataA library for adding and reading metadata annotations in TypeScript.
RimrafA module for deleting files and directories.
RxJSA library for reactive programming using Observables.
Machine Learning
LibraryAbstract
Sci-kit learnA machine learning library in Python that provides tools for building hybrid recommendation models.
PandasA data manipulation library for data preprocessing and analysis.
NumpyThe fundamental package for scientific computing in Python. It is a Python library that provides a multidimensional array object and various derived tools.
Natural Language Processing (NLTK)Techniques and libraries for text analysis and processing.
PicklePrimarily used in serializing and deserializing a Python object structure.
Web Scraping and Sentiment Analysis
LibraryAbstract
SeleniumA web automation and scraping library.
TqdmA library for adding progress bars to Python code.
Natural Language Processing (NLTK)The Natural Language Toolkit for natural language processing tasks.

Version Control and Deployment

ToolAbstract
GitVersion control system.
GitHubCode repository for collaborative development.
DockerA containerization platform for packaging and deploying applications.

Getting Started

To run OHARA Bookshelf locally, you need to have Node.js, Docker, Python3, and npm installed on your machine.

Prerequisites

Here are the prerequisites you need to have in order to use the software and how to install them:

Backend:

  • npm:

Install npm by running the following command:

npm install npm@latest -g

  • Docker:

Docker is required to run the OHARA Bookshelf backend services. Make sure you have Docker installed on your machine. If not, you can download and install Docker from Docker's official website.

  • Installation To set up OHARA Bookshelf and its backend services, follow these steps:

  • Get a free API Key at https://example.com.

Clone the OHARA Bookshelf repository:

  • .env: You need to create a .env file in the backend folder of the project and add the following environment variables:
PORT=8000
GAUTH_CLIENT_ID=
GAUTH_CLIENT_SECRET=
DATABASE_URL="postgres://postgres:password@localhost:5433/oharaDB"
POSTGRES_USER=postgres
POSTGRES_PASSWORD=
POSTGRES_DB=oharaDB
SESSION_SECRET=secret
JWT_SECRET=
ML_API_URL=http://localhost:8001
EXPRESSION_API_URL=http://localhost:8002
EMOTION_API_URL=http://localhost:8003
REVIEW_API_URL=http://localhost:8004

Frontend:

Install npm by running the following command:

npm install npm@latest -g
  • .env: You need to create a .env file in the backend folder of the project and add the following environment variables:
  VITE_GOOGLE_CLIENT_ID=
  VITE_GOOGLE_CLIENT_SECRET = 
  VITE_API_BASE_URL=http://localhost:8000

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Copyright (c) - 2023

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

If you have any questions, suggestions, project(s), or just want to say hi, feel free to reach out to me

You can also visit my personal website: dembasow98.github.io

Acknowledgments

I would like to thank the following people for their support and encouragement:

  1. Zidan Omar Hamid: We did this final project together. I have learned a lot from him and He is a great friend and a great developer. You can reach him on LinkedIn or view his incredible works in Github
  2. Dr. Can Yüzkollar : For supervising us throughout the project.

⬆️

Leave a Reply