{"id":19696227,"url":"https://github.com/mithi/hunts","last_synced_at":"2025-10-10T18:04:09.646Z","repository":{"id":227099102,"uuid":"770427795","full_name":"mithi/hunts","owner":"mithi","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-15T14:57:18.000Z","size":1189,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T18:04:08.071Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hunts-nine.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/mithi.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":"2024-03-11T14:34:20.000Z","updated_at":"2024-03-11T15:01:07.000Z","dependencies_parsed_at":"2024-11-11T19:35:41.091Z","dependency_job_id":"145890e9-dac7-477f-8c3e-2a75505989dc","html_url":"https://github.com/mithi/hunts","commit_stats":null,"previous_names":["mithi/hunts"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mithi/hunts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fhunts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fhunts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fhunts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fhunts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mithi","download_url":"https://codeload.github.com/mithi/hunts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fhunts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004903,"owners_count":26083802,"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","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-11T19:34:20.990Z","updated_at":"2025-10-10T18:04:09.615Z","avatar_url":"https://github.com/mithi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hunts User Interface\n\nView in https://hunts-nine.vercel.app/\n\n## How to Run\n\nMake sure you have Node and `pnpm` installed. See also: https://pnpm.io/installation\n\n```\n$ nvm use 18\nNow using node v18.18.2 (npm v10.5.0)\n$ brew install pnpm\n```\n\nClone, Install, Build and Preview\n\n```\n$ git clone https://github.com/mithi/hunts.git\n$ pnpm install\n$ pnpm run build\n$ pnpm run preview\n\nhttp://127.0.0.1:4173/\n\n```\n\n## Screenshots\n\n![Asset Details Popover First Screenshot](./screenshots/x-asset-details-popover-2.png)\n![Asset Details Popover First Screenshot](./screenshots/x-asset-details-popover.png)\n![Hand Modal Screenshot](./screenshots/x-attach-to-hunt-modal.png)\n![Autocomplete Screenshot](./screenshots/x-autocomplete-hunt.png)\n\n## Known Issues and Limitations\n\n- Pagination not implemented\n- The `autocomplete filter` algorithm used for `combobox.tsx` and `multiselect.tsx` is the default one, which I feel doesn't really work well. Better to use a custom one.\n- Error boundaries not implemented - https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\n- Text overflow (long character strings) and responsiveness not implemented\n- No validation when attaching assets to specific hunts\n- Attached assets to hunts are stored in-memory. So if you shut down the server, everything gets wiped.\n- Form semantics and accessibility can be improved (We are not using `\u003cform\u003e` or `\u003cbutton type=\"submit\"\u003e`)\n- There are some non-ideal implementation details in `./common/multiselect.tsx` (check the comments of that file for details) which might be related to the error below that is sometimes logged in the console but it doesn't have any user visible unexpected behavior, I haven't investigated how to fix it.\n\n```\nfilter-by-asset-details-form.tsx:127 Warning: Cannot update a component (`FilterByAssetDetailsForm`) while rendering a different component (`MultiSelect`). To locate the bad setState() call inside `MultiSelect`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render\n    at MultiSelect\n```\n\n## Mocked Routes\n\nsee `./db/` and `./hooks/api` for more information\n\n```\n// GET /api/asset-filter-parameters\n// GET /api/tenants/:tenantId/assets/?technology=TECH_NAME\u0026versions=VERSION1,VERSION2\n// GET /api/hunts/:huntId/assets/\n// GET /api/tenants/:tenantId/assets/:assetId/\n// PUT /api/hunts/:huntId\n```\n\n## Used\n\n- Node - https://nodejs.org/\n- Vite - https://vitejs.dev/guide/\n- React - https://react.dev/\n- pnpm - https://pnpm.io/\n- Typescript - https://www.typescriptlang.org/\n- Tanstack Table - https://tanstack.com/table/\n- `useSWR` - https://swr.vercel.app/\n- `CMDK 0.2.0` https://github.com/pacocoursey/cmdk, used `0.2.0` because of this issue: https://github.com/shadcn-ui/ui/pull/2945\n- Shadcn - https://ui.shadcn.com/ which is built upon https://www.radix-ui.com/\n- Tailwind - https://tailwindcss.com/docs/guides/vite\n- Multiselect - copied and modified from https://craft.mxkaske.dev/post/fancy-multi-select\n\n## Misc\n\n- https://gist.github.com/mithi/f9fe0de62a318dcbb86faafeca40f7d6\n- Prettier `npx prettier . --write`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmithi%2Fhunts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmithi%2Fhunts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmithi%2Fhunts/lists"}