{"id":29313000,"url":"https://github.com/bosecodes/kitaabi-keeda","last_synced_at":"2026-05-19T15:12:46.637Z","repository":{"id":301849993,"uuid":"1010150000","full_name":"bosecodes/kitaabi-keeda","owner":"bosecodes","description":"An Angular app for browsing, searching, and favoriting books with dark mode and pagination.","archived":false,"fork":false,"pushed_at":"2025-06-29T14:09:18.000Z","size":313,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-29T15:19:22.427Z","etag":null,"topics":["angular","material-ui","observable","reactive-forms","rxjs","streams","subject","typescript"],"latest_commit_sha":null,"homepage":"https://bosecodes.github.io/kitaabi-keeda/","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/bosecodes.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,"zenodo":null}},"created_at":"2025-06-28T13:05:04.000Z","updated_at":"2025-06-29T14:13:37.000Z","dependencies_parsed_at":"2025-06-29T15:19:23.574Z","dependency_job_id":null,"html_url":"https://github.com/bosecodes/kitaabi-keeda","commit_stats":null,"previous_names":["bosecodes/medium_clone","bosecodes/kitaabi-keeda"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bosecodes/kitaabi-keeda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosecodes%2Fkitaabi-keeda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosecodes%2Fkitaabi-keeda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosecodes%2Fkitaabi-keeda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosecodes%2Fkitaabi-keeda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bosecodes","download_url":"https://codeload.github.com/bosecodes/kitaabi-keeda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosecodes%2Fkitaabi-keeda/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264049079,"owners_count":23549405,"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":["angular","material-ui","observable","reactive-forms","rxjs","streams","subject","typescript"],"created_at":"2025-07-07T09:13:55.239Z","updated_at":"2026-05-19T15:12:45.574Z","avatar_url":"https://github.com/bosecodes.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kitaabi Keeda 📚\n\n**Kitaabi Keeda** is an Angular web app that displays a list of books, allowing users to:\n- Search books by title or author\n- Paginate through the list\n- Mark books as favorites ❤️ (with persistence via `localStorage`)\n- Add new books (with auto-generated random images)\n- Switch between Dark 🌚 and Light 🌞 mode\n- Enjoy minimal styling using **Angular Material**\n\n---\n\n## 🌟 Features\n\n✅ **Book List with Random Images**  \nBooks are displayed with randomly generated image URLs.\n\n✅ **Search \u0026 Filter**  \nInstantly filter books by typing in the search bar (no need to press enter or click a button).\n\n✅ **Pagination**  \nNavigate through books using previous/next buttons. Total pages are calculated dynamically.\n\n✅ **Add Book**  \nAdd new books via a form. New books appear immediately in the list.\n\n✅ **Favorite Books (❤️/🤍)**  \nMark/unmark books as favorites. Favorites persist in `localStorage`.\n\n✅ **Dark/Light Mode**  \nToggle between dark and light themes with Gen Z style emoji indicators 🌞/🌚.\n\n✅ **Responsive, Minimal Design**  \nBuilt with **Angular Material** components for a clean UI.\n\n---\n\n## 🛠️ Tools \u0026 Technologies\n\n- **Angular** (with CLI)\n- **RxJS**\n  - `BehaviorSubject`, `Subject`\n  - `Observable`, `combineLatest`\n  - Operators: `map`, `filter`, `debounceTime`, `distinctUntilChanged`, `startWith`\n- **Angular Material**\n- **Custom Directive**  \n  `appFavorite` directive handles favorite icon toggling.\n\n- **Custom Pipe**\n- **HTTP Interceptor**\n- **LocalStorage** for persistence\n- **GitHub Pages** for deployment\n\n---\n\n## ⚙️ Key Angular concepts demonstrated\n\n- Template forms \u0026 Reactive forms  \n- `@ViewChild` + `ngAfterViewInit`  \n- `ngOnDestroy` (for cleaning up subscriptions)  \n- Routing + RouterOutlet  \n- Lazy loaded images  \n- Custom directives  \n- Pure/Impure pipes\n\n---\n\n## 🚀 Deployment\n\nThe app is deployed using **GitHub Pages**.\n\n### To build + deploy:\n```bash\nng build --base-href /kitaabi-keeda/\nnpx angular-cli-ghpages --dir=dist/kitaabi-keeda\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbosecodes%2Fkitaabi-keeda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbosecodes%2Fkitaabi-keeda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbosecodes%2Fkitaabi-keeda/lists"}