hackerkid / mind-expanding-books Goto Github PK
View Code? Open in Web Editor NEW:books: Find your next book to read!
Home Page: https://mindexpandingbooks.com
:books: Find your next book to read!
Home Page: https://mindexpandingbooks.com
The UI of book cards is not that great currently. Lot of improvements can be made in terms of how they look. For example how the category is displayed currently in the card is not pleasant and can be improved. Feel free to make any changes that you think improve the design of cards.
See https://github.com/hackerkid/Mind-Expanding-Books/tree/master/app for details on setting up the development environment.
I noticed that the book description has a "show more" button which is not required some descriptions as they are short. Could we set a condition that triggers only when the description reaches a specific word limit?
There should be a seperate page for each category. Opening /Startups-And-Business for example should display books from Startups and Business category.
Before working on this issue I think it would be great to finish #182 first.
See /app@master for details on setting up the development environment.
The book name is - "Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability (3rd Edition)".
Sorry guys, I never read this but heard about it alot. I hope it will be helpful for design.
Currently, the books in each category are listed in a random order with no real sense of organization.
I think it'd be better if the books were ordered in a particular manner. Few ideas for selecting the criteria for ordering books:
Extract books focusing on economics and create a new genre called economics.
Hi. I'd like to contribute to this project with a Dockerfile for running a self-hosted installation of this software using Docker.
Can I work on this and open a PR during the Hacktoberfest 2021?
Hello, I wrote a tool that can validate README links (valid URLs, not duplicate). It can be run when someone submits a pull request.
It is currently being used by
Examples
If you are interested, connect this repo to https://travis-ci.org/ and add a .travis.yml
file to the project.
See https://github.com/dkhamsing/awesome_bot for options, more information
Feel free to leave a comment ๐
"The Little Prince" under Education has a comma in its Goodreads rating instead of a period. Also, I'm surprised that this is a list of books on github and has nothing about programming ):
๐๐ Hello Hacktoberfest contributors
if you are looking to contribute to Mind-Expanding Books, I would recommend focusing on improving the website which can be accessed at http://books.vishnuks.com/ (soon to get its own domain). The source code lives in /app
directory.
There are a ton of improvements that can be made to the website. I have some issues opened at https://github.com/hackerkid/Mind-Expanding-Books/issues?q=is%3Aissue+is%3Aopen+label%3Awebsite
But don't be limited by the issues. Feel free to open a PR for anything that you think is an improvement.
My goal is to make the website the place where you go to discover what book to read next.
Another project of mine, https://diff.blog is also looking for contributors. The issues there are super friendly for beginners without much coding experience. So you should check them as well.
Hi, im new to open source, but not to webdesign and I think the website has a lot of potential to look much better.
The problem is, I cannot find any instructions on how to setup the site locally. I never used gatsby and I'm not sure, if this is the only thing I need to get started working on the style of the site efficiently.
Maybe this is a stupid question, let me know. :)
There are so many books how do you know if it is mind expanding or not ?
There are so many great books and if we fill it with all it will be too big. Categories like fiction can become so big
List doesnt explain how a particular books helps in expanding the mind . I
The author name of some of the books are missing. Add the author name for them.
The website at the moment is not all responsive and is kind of not usable on mobile and tablet.
Ideally, the website should work properly across all types of devices. Feel free to make any changes to the UI that achieves this goal.
Currently there is now way to filter books according to category. We should build a menubar/navbar that shows all categories and allows users to filter books accoridng to category.
See https://github.com/hackerkid/Mind-Expanding-Books/tree/master/app for details on setting up the development environment.
Hi ๐๐ป
I think it would be nice to have links after each book category in the README.md file to save the user from having to scroll all the way up to the top. If you would also like this then I am happy to add it. Let me know ๐
Currently all the books are loaded when the homepage is loaded. Instead of this implement an infinite scroll that loads more books only when the user scrolls to the bottom of page.
See https://github.com/hackerkid/Mind-Expanding-Books/tree/master/app to setup development environment
We show the Goodreads star count in the website. We fetch the data using the following script
Mind-Expanding-Books/utils/update_json_files.py
The script generates two json files which are then copied to app/src/data
directory.
At the moment I run this script manually. But it would be cool to automate the step using GitHub actions.
The tricky thing is to make sure that you don't call the Google API(used in the script for fetching Amazon link) unnecessarily since it has a very low rate limit.
The action should only fetch the necessary data required and reuse existing data as much as it's possible.
Users should be able to sort books on basis of rating, year published, title etc.
See https://github.com/hackerkid/Mind-Expanding-Books/tree/master/app to setup development environment
If you go through app/src/data/books.json/
you can see that a lot of the books have the description empty. We are not displaying the books without a description in the website.
Your task is to use another API for fetching the book description when Goodreads return an empty description.
The scripts that are used for generating the books.json
file lives in utils
directory
Go through the README file in utils
directory for more details on running the script.
it is more of a tactical book
If you open the website you can see that a lot of books have book covers missing.
eg https://s.gr-assets.com/assets/nophoto/book/111x148-bcc042a9c91a29c1d680899eff700a03.png
The reason behind is that Goodreads don't have the licensing rights to distribute the cover photo of the book using the API (or something like that).
It's easy to see whether the book cover URL is valid or not since Goodreads return the same image URL for books without a valid cover photo.
So your task is to use another API for fetching the book cover when Goodreads return an invalid book cover.
utils
directory has the scripts that is used for generating books.json
Look at the README.md file in the utils
directory for more details.
The task is to generate a unique page for each and every book present in our list.
The page should show the name of the book, year of publishing, description etc. Basically, all the details present in the book card would be shown in thhe page. The user can access the page by clicking on "Show more" in the book card.
The URL of the page can be in this format
/book/name-of-the-book-by-author-name
You don't have to create each and every page manually. You can programmatically generate pages in Gatsby
https://www.gatsbyjs.com/docs/creating-and-modifying-pages/
The data for the pages lives in app/src/data/books.json
We are already using Gatsby Pages in the website. Take a look at how category pages are generated to see how its done.
Recently, Netlify added a free plugin for enabling incremental builds for Gatsby sites. On the ones I've worked on, I noticed significant speed-ups in build times, so it might be a good idea to add that too. I'd be okay with handling the config part myself, but the Netlify plugin also needs to be enabled.
Hi, so I wanted to know is there any particular reason for using a common book image ( " Shoe Dog: A memoir by the creator of Nike " ) for all the books.
I understand that finding cover for every book is a bit cumbersome since there is already a big list present by now, but the same cover looks a bit weird.
I would like to suggest two ways to fix this -
This repository contains books that blowed the mind of a lot of people. f you know of any such ๐ that is not in the list then please make a PR. Thanks for being awesome ๐ . Happy Hacktoberfest. ๐
This link is broken in your Mind-Expanding-Books repository.
I would like to work on adding dark mode for the web-site incase some is not working on it.
If this feature is needed please reply and I will start coding.โบ
It would be awesome if you can write a commandline tool that will sort the books in each category according to Goodreads rating. The tool should basically read from README.md and update it once the task is completed. You can use Goodreads API for achieving this. Let me know if you have any doubt :)
I have built a bare minimum website for mind expanding books using Gatsby. Its acessible at http://books.vishnuks.com.
The source code of the website lives in app
directory and the README in app directory has documentation on how to start a development environment.
If you are interested in improving the website feel free to contribute. Some issues that are on top of the mind are
Show the year book is published.
Show rating as stars for each book
Add a navbar or menu bar that allows users to filter books category wise #182
Add a sort funtionality. ie users should be able to sort books on basis of rating, year published, alpabetical order of title etc #183
Add an infinite scroll instead of loading all the books. #184
There should be a seperate page for each category. ie /Startups-Business urls should display books from that category. #185
Make the UI of the cards better. #186
Add functionality to mark book as "to read" using local storage. #187
If you are interested in working on one of these issues feel free to comment on the issue page to assign you the issue.
If you have any other idea for improving the website feel free to create a new issue and start working on it.
public class BinarySearchTree {
//Represent a node of binary tree
public static class Node{
int data;
Node left;
Node right;
public Node(int data){
//Assign data to the new node, set left and right children to null
this.data = data;
this.left = null;
this.right = null;
}
}
//Represent the root of binary tree
public Node root;
public BinarySearchTree(){
root = null;
}
//insert() will add new node to the binary search tree
public void insert(int data) {
//Create a new node
Node newNode = new Node(data);
//Check whether tree is empty
if(root == null){
root = newNode;
return;
}
else {
//current node point to root of the tree
Node current = root, parent = null;
while(true) {
//parent keep track of the parent node of current node.
parent = current;
//If data is less than current's data, node will be inserted to the left of tree
if(data < current.data) {
current = current.left;
if(current == null) {
parent.left = newNode;
return;
}
}
//If data is greater than current's data, node will be inserted to the right of tree
else {
current = current.right;
if(current == null) {
parent.right = newNode;
return;
}
}
}
}
}
//minNode() will find out the minimum node
public Node minNode(Node root) {
if (root.left != null)
return minNode(root.left);
else
return root;
}
//deleteNode() will delete the given node from the binary search tree
public Node deleteNode(Node node, int value) {
if(node == null){
return null;
}
else {
//value is less than node's data then, search the value in left subtree
if(value < node.data)
node.left = deleteNode(node.left, value);
//value is greater than node's data then, search the value in right subtree
else if(value > node.data)
node.right = deleteNode(node.right, value);
//If value is equal to node's data that is, we have found the node to be deleted
else {
//If node to be deleted has no child then, set the node to null
if(node.left == null && node.right == null)
node = null;
//If node to be deleted has only one right child
else if(node.left == null) {
node = node.right;
}
//If node to be deleted has only one left child
else if(node.right == null) {
node = node.left;
}
//If node to be deleted has two children node
else {
//then find the minimum node from right subtree
Node temp = minNode(node.right);
//Exchange the data between node and temp
node.data = temp.data;
//Delete the node duplicate node from right subtree
node.right = deleteNode(node.right, temp.data);
}
}
return node;
}
}
//inorder() will perform inorder traversal on binary search tree
public void inorderTraversal(Node node) {
//Check whether tree is empty
if(root == null){
System.out.println("Tree is empty");
return;
}
else {
if(node.left!= null)
inorderTraversal(node.left);
System.out.print(node.data + " ");
if(node.right!= null)
inorderTraversal(node.right);
}
}
public static void main(String[] args) {
BinarySearchTree bt = new BinarySearchTree();
//Add nodes to the binary tree
bt.insert(50);
bt.insert(30);
bt.insert(70);
bt.insert(60);
bt.insert(10);
bt.insert(90);
System.out.println("Binary search tree after insertion:");
//Displays the binary tree
bt.inorderTraversal(bt.root);
Node deletedNode = null;
//Deletes node 90 which has no child
deletedNode = bt.deleteNode(bt.root, 90);
System.out.println("\nBinary search tree after deleting node 90:");
bt.inorderTraversal(bt.root);
//Deletes node 30 which has one child
deletedNode = bt.deleteNode(bt.root, 30);
System.out.println("\nBinary search tree after deleting node 30:");
bt.inorderTraversal(bt.root);
//Deletes node 50 which has two children
deletedNode = bt.deleteNode(bt.root, 50);
System.out.println("\nBinary search tree after deleting node 50:");
bt.inorderTraversal(bt.root);
}
}
Every Shot Counts, while perhaps a fine book, is even described by many of its goodreads reviews as limited in scope and audience.
Currently the genres in fiction are science fiction, fantasy and others. The others
can be further expanded to different genres . I reccomend to start by extracting classics and mystery
from the list. But you can choose any genre of your choice.
Your task is to improve the SEO of mind-expanding books website. Feel free to create a pull request with any changes that you think would improve the SEO.
Given that Books that will blow your mind is very subjective, it would help to define what does a book have to do, to be considered "Mind Expanding".
Given the current selection, it seems that any book that is well known and has a goodreads rating ~4.0 makes the list. If it's difficult to come up with anything else, shouldn't we at least codify this part?
It would be good to make the navbar fixed and scroll the content as the side list navigation is all fixed so the spacing on top of it looks odd after scroll.
@hackerkid Should i fix it and raise the PR?
Hey, I'd like to contribute for the hacktoberfest.
I could refactor the layout to one from ant design if you want to use more of their stuff later on?
I'd pick one of these, I suggest the sider one as its pretty similar to the one already existing.
Let me know what you think
I don't know offhand when Jane Austen published Sense and Sensibility, but I strongly suspect it was not 2003. Leo Tolstoy, having died in 1910, did not release much in the 2010s.
A lot of these dates are wildly incorrect. I suspect this may have been done automatically, perhaps grabbing whatever date GoodReads has, but clearly the information gleaned was incorrect and needs to be reviewed more thoroughly.
Users should be able to mark books as to read. The data can be stored in local stoarge. There should be also an option to see all the books that users marked as to read. Future project would be to sync the data with a backend but that is beyond the scope of this issue.
See https://github.com/hackerkid/Mind-Expanding-Books/tree/master/app for details on setting up the development environment.
Still haven't added me as contributor. -_- :P
There are so many books that are 'mind expanding' in the investment world which can help in life outside.
Examples
a) Principles - Ray Dalio
b) The essays of Warren Buffett
etc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.