{"id":26694352,"url":"https://github.com/mattf96s/exifbrowser","last_synced_at":"2025-04-13T00:35:08.959Z","repository":{"id":216062915,"uuid":"740230233","full_name":"mattf96s/exifbrowser","owner":"mattf96s","description":"A local-first file browser using OPFS and web workers. Demo soon.","archived":false,"fork":false,"pushed_at":"2024-01-08T15:03:27.000Z","size":755,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T00:34:42.662Z","etag":null,"topics":["comlink","opfs","react","remix","shadcn-ui","sst","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","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/mattf96s.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}},"created_at":"2024-01-07T22:18:10.000Z","updated_at":"2024-10-17T01:49:05.000Z","dependencies_parsed_at":"2024-01-08T09:35:01.164Z","dependency_job_id":null,"html_url":"https://github.com/mattf96s/exifbrowser","commit_stats":null,"previous_names":["mattf96s/exifbrowser"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2Fexifbrowser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2Fexifbrowser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2Fexifbrowser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2Fexifbrowser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattf96s","download_url":"https://codeload.github.com/mattf96s/exifbrowser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650466,"owners_count":21139670,"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":["comlink","opfs","react","remix","shadcn-ui","sst","tailwindcss","typescript"],"created_at":"2025-03-26T18:29:09.854Z","updated_at":"2025-04-13T00:35:08.940Z","avatar_url":"https://github.com/mattf96s.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# exifbrowser.com\n\nA local-first file explorer making use of the new Origin Private File System (OPFS) and web workers.\n\nDrop a folder of 1000+ images onto the page and it will generate a list of all the images and their EXIF data in a couple of seconds.\n\nDemo coming soon (after work).\n\nThis is the base for a custom [iNaturalist](https://www.inaturalist.org/) upload interface.\n\n_Very much a work in progress._\n\nhttps://github.com/mattf96s/exifbrowser/assets/68327846/b9727bc5-1954-434a-89c1-03575cc11eeb\n\n## Tech Stack\n\n- Remix (React)\n- SST (AWS CDK)\n- Comlink (Web Workers)\n- IndexedDB\n\n### Notable Web API's\n\n- OPFS (Origin Private File System)\n- File System Access API\n- Web Workers\n\n### Notable design patterns\n\n- @tanstack/virtual (virtualized list)\n- On-the-fly image compression using a web worker before rendering in the browser (single biggest perf gain).\n\n## Development\n\nTODO\n\n## TODO List\n\n### Features\n\n- File tree directory navigation instead of a flat list. Would allow for separate sessions based off the directory.\n- Experiment with different perf patterns (queues, better caching with IndexedDB + cache API, cancelable promises, async iterators etc.)\n- Image Editing\n- Ability to add GPS data to images with a GPX (or similar) file.\n- Tests\n- Run certain transformations in parallel depending on the number of cores available.\n\n### Refactors / Improvements\n\n- Cleanup + consistent code style\n- Responsive design\n- Browser support\n\n### Deployment\n\n- Deployment pipeline with SEED\n- Add privacy-focused analytics/error tracking (avoid session recordings etc.)\n\n### Documentation\n\n- Add to this README\n\n### Misc\n\n- Add a license\n- Add a contributing guide\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattf96s%2Fexifbrowser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattf96s%2Fexifbrowser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattf96s%2Fexifbrowser/lists"}