{"id":14967583,"url":"https://github.com/gnclmorais/bookshelf","last_synced_at":"2025-05-02T22:31:02.863Z","repository":{"id":40608876,"uuid":"240131351","full_name":"gnclmorais/bookshelf","owner":"gnclmorais","description":"📚 What I’ve read so far, powered by Goodreads","archived":false,"fork":false,"pushed_at":"2025-04-21T02:36:33.000Z","size":219,"stargazers_count":49,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-21T03:43:45.185Z","etag":null,"topics":["goodreads","goodreads-api","nodejs","pug"],"latest_commit_sha":null,"homepage":"https://bookshelf.gnclmorais.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnclmorais.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-02-12T22:48:45.000Z","updated_at":"2025-01-20T17:30:05.000Z","dependencies_parsed_at":"2024-03-18T03:29:10.310Z","dependency_job_id":"4a55faef-5fdd-4865-a4fd-c480ebbb8992","html_url":"https://github.com/gnclmorais/bookshelf","commit_stats":{"total_commits":59,"total_committers":3,"mean_commits":"19.666666666666668","dds":0.1694915254237288,"last_synced_commit":"614cae23f378146e5126a0ff3fa8751cd0f91b72"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnclmorais%2Fbookshelf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnclmorais%2Fbookshelf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnclmorais%2Fbookshelf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnclmorais%2Fbookshelf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnclmorais","download_url":"https://codeload.github.com/gnclmorais/bookshelf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252116082,"owners_count":21697304,"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":["goodreads","goodreads-api","nodejs","pug"],"created_at":"2024-09-24T13:38:18.881Z","updated_at":"2025-05-02T22:30:58.161Z","avatar_url":"https://github.com/gnclmorais.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bookshelf\nWhat I’ve read so far.\n\n![nothing](https://media.giphy.com/media/baPIkfAo0Iv5K/giphy.gif)  \nJust kidding.\n\n\n## About\n\nThis project runs once a week, fetches my [Goodreads profile][2] and generates [a page][1] with its content. Inspired by [Frank Chimero][0], but since I’m not as good of a designer as he is, I put my effort into automating it.\n\n\n## Goals\n\nI’ve looked into a few tools to put this together, but I soon realised that not much was needed. No fancy technologies or front-end frameworks. There was no need to make this anymore complicated than a static page. The only new things I’ve looked at were:\n- [Ramda](https://ramdajs.com), since I was interested in learning something beyond [Lodash](https://lodash.com);\n- [GitHub Actions](https://github.com/features/actions), so this project can tap into this new feature to generate the required [static page][1].\n\n\n## Run this project\n\n```bash\nnpm install\nnpm start\n```\n**Before** running the application, make sure you have these variables set (you can use a `.env` file for it, since I’m using [`dotenv`](https://github.com/motdotla/dotenv)):\n- `GOODREADS_KEY`  \n  As usual for APIs, you’ll need a [Goodreads key](https://www.goodreads.com/api/keys)\n- `GOODREADS_SHELF`  \n  A string of the shelf you walk to look at (mine’s `'read'`)\n- `GOODREADS_USER`  \n  Whenever you’re on your Goodreads profile, your ID will be the numeric part at `https://www.goodreads.com/user/show/12345678-something`\n\nCheck `package.json` for all the available commands, under the `\"scripts\"` key.\n\n\n## Future plans\n- [x] Scope Google Fonts to specific chars ([source][8]\n- [x] Change the GitHub Action from running on push to running every Monday\n- [x] Put this GitHub Page under https://bookshelf.gnclmorais.com\n- [ ] Title filter to allow display of shorter, more custom titles\n\n\n## Resources\n- [sdras/awesome-actions][3]\n- [Storing Weather Data Daily using GitHub Actions][4]\n- [GitHub: Using environment variables][5]\n- [GitHub: Events that trigger workflows][6]\n- [crontab guru][7]\n\n\n[0]: https://frankchimero.com/reading/\n[1]: https://gnclmorais.github.io/bookshelf\n[2]: https://goodreads.com/gnclmorais\n[3]: https://github.com/sdras/awesome-actions\n[4]: https://codeburst.io/storing-weather-data-daily-using-github-actions-c2b0ed513ca6\n[5]: https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables\n[6]: https://help.github.com/en/actions/reference/events-that-trigger-workflows\n[7]: https://crontab.guru\n[8]: https://twitter.com/addyosmani/status/1229344737724784640\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnclmorais%2Fbookshelf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnclmorais%2Fbookshelf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnclmorais%2Fbookshelf/lists"}