Table of Contents
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.
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
Technology | Abstract |
---|---|
React | A JavaScript library for building user interfaces. |
Chakra UI | A flexible and accessible UI component library for React. |
Chakra React Select | A custom select component for Chakra UI. |
React Router DOM | A routing library for React applications. |
Emotion | A CSS-in-JS library for styling React components. |
React OAuth Google | An OAuth library for integrating Google. |
Axios | A promise-based HTTP client for making API requests. |
Formik | A form library for managing form state in React. |
Yup | A JavaScript schema validation library for form validation. |
Framer Motion | A motion library for adding animations to React components. |
React Icons | A library of customizable SVG icons for React. |
React Webcam | A React component for capturing images from a webcam. |
Zustand | A small, fast, and scalable state management library for React. |
Backend
Technology | Abstract |
---|---|
Node.js | A JavaScript runtime environment for server-side development. |
Express | A web application framework for Node.js. |
NestJS | A TypeScript-based server-side framework for building scalable and maintainable applications. |
Axios | A promise-based HTTP client for making API requests. |
JWT | JSON Web Token for authentication and authorization. |
Passport | A middleware for user authentication in Node.js. |
Prisma | A middleware for user authentication in Node.js. |
Class Transformer | A library for transforming plain JavaScript objects to class instances and vice versa. |
Class Validator | A library for input validation and data normalization in classes. |
dotenv | A module for loading environment variables from a .env file. |
Express Session | A session middleware for Express. |
Google Auth Library | A library for integrating Google authentication in Node.js applications. |
Morgan | A logging middleware for HTTP requests in Express. |
Passport Google OAuth 2.0 | A Passport strategy for authenticating with Google using OAuth 2.0. |
Passport JWT | A Passport strategy for authenticating with JSON Web Tokens. |
Passport Local | A Passport strategy for authenticating with a username and password. |
Reflect Metadata | A library for adding and reading metadata annotations in TypeScript. |
Rimraf | A module for deleting files and directories. |
RxJS | A library for reactive programming using Observables. |
Machine Learning
Library | Abstract |
---|---|
Sci-kit learn | A machine learning library in Python that provides tools for building hybrid recommendation models. |
Pandas | A data manipulation library for data preprocessing and analysis. |
Numpy | The 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. |
Pickle | Primarily used in serializing and deserializing a Python object structure. |
Web Scraping and Sentiment Analysis
Library | Abstract |
---|---|
Selenium | A web automation and scraping library. |
Tqdm | A 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
Tool | Abstract |
---|---|
Git | Version control system. |
GitHub | Code repository for collaborative development. |
Docker | A 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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - 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:
- 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
- Dr. Can Yüzkollar : For supervising us throughout the project.
Leave a Reply