{"id":31664029,"url":"https://github.com/tzdanows/img-grid","last_synced_at":"2026-04-20T14:03:20.193Z","repository":{"id":309978045,"uuid":"1035446549","full_name":"tzdanows/img-grid","owner":"tzdanows","description":"an easy to set-up and update media portfolio","archived":false,"fork":false,"pushed_at":"2025-10-08T02:18:40.000Z","size":8175,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-11T14:07:43.792Z","etag":null,"topics":["cloudinary","deno","media","photos"],"latest_commit_sha":null,"homepage":"https://photo-site.deno.dev/","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/tzdanows.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-08-10T12:22:37.000Z","updated_at":"2025-10-11T04:00:13.000Z","dependencies_parsed_at":"2025-08-15T00:14:09.636Z","dependency_job_id":"e8859fe2-4159-452f-aede-56c2a708c457","html_url":"https://github.com/tzdanows/img-grid","commit_stats":null,"previous_names":["tzdanows/img-grid"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tzdanows/img-grid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzdanows%2Fimg-grid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzdanows%2Fimg-grid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzdanows%2Fimg-grid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzdanows%2Fimg-grid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tzdanows","download_url":"https://codeload.github.com/tzdanows/img-grid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzdanows%2Fimg-grid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32050451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["cloudinary","deno","media","photos"],"created_at":"2025-10-07T20:53:40.804Z","updated_at":"2026-04-20T14:03:20.183Z","avatar_url":"https://github.com/tzdanows.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# media showcase for hobbyists\n\na personal gallery for hobby photos \u0026 curated content:\n\n```bash\nHome\n├── gallery1 # name should correspond to tag\n├── gallery2 # name should correspond to tag\n├── gallery...etc...\n└── list of links\n```\n\nPowered by Cloudinary's image repository and deno's task runner to set-up the\nsite.\n\n![Gallery layout example](./static/landscape_sample.png)\n\n## Setup Guide (via deno task)\n\ndeno task enables you to run scripts to modify code instead of manually editing\nfiles. also once you've set up your site layout, you can simply add images via\nthe online cloudinary dashboard for code-free management.\n\n### 1. Install Deno\n\n```bash\n# macOS/Linux\ncurl -fsSL https://deno.land/install.sh | sh\n\n# Windows\nirm https://deno.land/install.ps1 | iex\n```\n\n### 2. Setup a Cloudinary Account\n\n1. Sign up at [cloudinary.com](https://cloudinary.com)\n2. Get your credentials from the [Dashboard](https://cloudinary.com/console)\n3. Upload images to `/assets` and tag their metadata (e.g., \"street\",\n   \"portrait\", \"landscape\") --\u003e you can do this later but they should match the\n   ages/routes you setup\n\n### 3. Configure Your Site\n\n```bash\n# run the interactive setup\ndeno task setup\n```\n\nThis will:\n\n- Set your name, bio (up to 5 paragraphs), hobbies, and quote\n- Define gallery routes (auto-maps to Cloudinary tags)\n- Create a .env file with Cloudinary credentials\n\n### 4. Add Content\n\n```bash\n# edit all modular content (homepage, gallery routes, links)\ndeno task edit\n```\n\nYou can also edit content directly in `content.json`\n\n### 5. Run Your Site\n\n```bash\ndeno task dev\n```\n\nOpen http://localhost:8737 to view your site locally\n\nOR\n\n### 6. Deploy Your Site\n\n```bash\ndeployctl deploy --project={YOUR-PROJECT-NAME} cloudinary-server.ts\n```\n\n[read more here on deployment](https://docs.deno.com/deploy/manual/deployctl/)\n--\u003e _I'll update deployment docs later_\n\n## Commands\n\n- `deno task setup` - Initial configuration wizard\n- `deno task dev` - Development server with hot reload\n- `deno task edit` - Edit homepage (bio, hobbies, quote), galleries, links\n- `deno task add-links` - Quick add links to links page\n- `deno task test` - Run all tests\n- `deno task ci` - Full CI check (fmt, lint, test)\n\n## How It Works\n\n1. **Routes = Tags**: Gallery routes automatically use their names as Cloudinary\n   tags\n   - Route OR Gallery: `/street` → Cloudinary tag `street`\n   - Route OR Gallery: `/portrait` → Cloudinary tag `portrait`\n\n2. **Content/Structure Management**: All website structure stored in\n   `content.json`\n   - Site info, navigation, galleries, links\n   - Hot-reloads when edited\n   - Any information not set by scripts, can be edited directly in\n     `content.json`\n\n3. **Photo Management**: Upload to Cloudinary with matching tags\n   - Images automatically appear in galleries\n   - Responsive optimization built-in\n\n4. **Cache Management**: Cache images and videos locally for faster loading\n   (zero-maintenance due to automatic clearing)\n   - Images and videos are cached in `/cache`\n   - Cache is automatically cleared when content is edited\n   - `/api/cache/status endpoint` shows:\n     - Current memory usage vs limits\n     - Which entries are expired\n     - Active requests in progress\n     - Cache hit rates (indirectly via age)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftzdanows%2Fimg-grid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftzdanows%2Fimg-grid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftzdanows%2Fimg-grid/lists"}