{"id":22880148,"url":"https://github.com/codedwells/bookbindr","last_synced_at":"2025-03-31T15:33:19.780Z","repository":{"id":211944226,"uuid":"730252028","full_name":"Codedwells/BookBindr","owner":"Codedwells","description":"Get a book that matches your personality because your reading experience should be as unique as you are.","archived":false,"fork":false,"pushed_at":"2023-12-12T07:30:52.000Z","size":135,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T21:14:42.987Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://book-bindr.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Codedwells.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-11T14:22:46.000Z","updated_at":"2023-12-11T20:30:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"0b24ceb9-caf6-4836-86b0-bc49232643f8","html_url":"https://github.com/Codedwells/BookBindr","commit_stats":null,"previous_names":["codedwells/bookbindr"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codedwells%2FBookBindr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codedwells%2FBookBindr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codedwells%2FBookBindr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codedwells%2FBookBindr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Codedwells","download_url":"https://codeload.github.com/Codedwells/BookBindr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246489739,"owners_count":20785906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-13T17:16:33.979Z","updated_at":"2025-03-31T15:33:19.756Z","avatar_url":"https://github.com/Codedwells.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BookBindr\n\nThis app recommends books based on a user's preferred book genre.\n\nCheck out live demo [here](https://book-bindr.vercel.app)\n![BookBindr](./client/public/BookBindr.png)\n\n## Data Structures\n\n**Genres**\n\n```\n[{\n  name: \"Drama\",\n  score: 80\n},\n{\n  name: \"Adventure\",\n  score: 95\n}]\n```\nEach genre has a  ``name`` and ``score``\n\n**Books**\n\nBooks\n\n```\n[{\ntitle: \"To Kill a Mockingbird\",\n       link: \"https://en.wikipedia.org/...\",\n       scores: [95, 80, 60, 70]\n},\n{\ntitle: \"The Hitchhiker's Guide ...\",\n       link: \"https://en.wikipedia.org/...\",\n       scores: [60, 90, 80, 95]\n}]\n\n```\n\nEach book has a ``title``, ``link``, and ``scores`` array matching up with the genres array.\n\n## Algorithm\n\nThe recommendation algorithm works as follows:\n\n1. Get user's single preferred genre name from frontend (e.g. \"Drama\")\n2. Lookup preferred genre's score in genres array\n3. Construct user preferences array with preferred genre's score\n4. Fill remaining array entries with 0s\n5. Calculate vector difference between user preferences array and each book's genre score array\n6. Return closest matching book\n\nExample: if user prefers \"Drama\":\n\n```\n1. User prefers \"Drama\"\n2. Drama score is 80\n3. User prefs = [80, 0, 0, 0]\n4. Calculate difference between [80, 0, 0, 0] and book genre scores\n5. Return closest matching book\n```\n\nThis allows matching with just a single preferred genre from the user.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedwells%2Fbookbindr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodedwells%2Fbookbindr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedwells%2Fbookbindr/lists"}