{"id":26956310,"url":"https://github.com/x404/shoppinglist","last_synced_at":"2026-04-10T12:31:53.053Z","repository":{"id":285768558,"uuid":"958071115","full_name":"x404/shoppinglist","owner":"x404","description":"Piche, testwork","archived":false,"fork":false,"pushed_at":"2025-06-02T14:09:27.000Z","size":3944,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-03T02:57:49.926Z","etag":null,"topics":["bootstrap5","css","github-pages","javascript","react","react-tooltip","redux-toolkit","ts","tsx","typescript","vitejs"],"latest_commit_sha":null,"homepage":"https://x404.github.io/shoppinglist/","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/x404.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-03-31T15:41:44.000Z","updated_at":"2025-05-13T11:02:50.000Z","dependencies_parsed_at":"2025-04-17T15:36:21.067Z","dependency_job_id":"aa9e79e1-71a0-4012-b17c-0af293d3c236","html_url":"https://github.com/x404/shoppinglist","commit_stats":null,"previous_names":["x404/shoppinglist"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/x404/shoppinglist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x404%2Fshoppinglist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x404%2Fshoppinglist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x404%2Fshoppinglist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x404%2Fshoppinglist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/x404","download_url":"https://codeload.github.com/x404/shoppinglist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x404%2Fshoppinglist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31642736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bootstrap5","css","github-pages","javascript","react","react-tooltip","redux-toolkit","ts","tsx","typescript","vitejs"],"created_at":"2025-04-03T03:21:12.089Z","updated_at":"2026-04-10T12:31:53.043Z","avatar_url":"https://github.com/x404.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# React + Vite\nhttps://x404.github.io/shoppinglist/\n\n## Inststurction for start project\n1. Clone the project repository to your local machine\n```\ngit clone https://github.com/x404/shoppinglist.git\ncd shoppinglist-app\n```\n\n2. Install Dependencies\n```\nnpm install\n```\n\n3. Running the App\n```\nnpm run dev\n```\n\n4. Open the app in your browser by URL\n```\nhttp://localhost:5173/\n```\n\n## Architecture and Design Decisions\n### - State Management with Redux Toolkit\nAll product data and UI state (like selected category) are managed in one place\n\n### - Component Structure and Composition\nModular component architecture with clear separation of concerns\n\n### - Form Handling and Validation\nConsistent form handling pattern in 'add product' modal and edit product form\n\n### - Accessibility Considerations\nBuilt with attemption for accessibility (partially)\n\n### - Using Typescript\nAdded type definitions for all components and state\n\n### - UI/UX Decisions\nThoughtful user experience design\n\n\n\n## LocalStorage Data\n**productList** key\n```\n[{\"name\":\"Banana\",\"quantity\":2,\"category\":\"Fruits\",\"purchased\":false,\"id\":1},{\"name\":\"Apple\",\"quantity\":3,\"category\":\"Vegetables\",\"purchased\":false,\"id\":2},{\"name\":\"Milk\",\"quantity\":4,\"category\":\"Dairy\",\"purchased\":false,\"id\":3},{\"name\":\"Chees\",\"quantity\":5,\"category\":\"Dairy\",\"purchased\":false,\"id\":4},{\"id\":1743520846384,\"name\":\"foo\",\"category\":\"Fruits\",\"purchased\":false,\"quantity\":1}]\n```\n\n\n## What you would improve if given more time\n1. Implement routing for categories with React Router\n2. Add support for nested/sub-categories hierarchy\n3. ~~Add internationalization support~~\n4. Improve a11y following WCAG standards\n5. ~~Add in \"View\" section the option about hidding purchased products~~\n6. Auth\n7. Bulk actions (Multiple select for deleting/ mark as purchased)\n8. ~~Add sorting by: status, title, quantity~~\n9. ~~Option to hide empty categories~~\n10. Pagination for large list\n12. Dark mode support\n13. Reduce unnecessary re-renders\n14. ~~Create the store category Redux slice~~\n15. Product drag and drop\n16. ~~Clear categories~~\n17. Move category to another category\n18. Cart with Undo options\n19. ~~Resize sidebar~~\n20. ~~Show/hide sidebar~~\n21. Local/remote storage with option save local to remote\n22. ~~Search~~\n23. SSR\n24. Toggle visibility sidebar on the smartphones\n25. Add color \u0026 icon for folders\n26. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fx404%2Fshoppinglist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fx404%2Fshoppinglist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fx404%2Fshoppinglist/lists"}