{"id":14984953,"url":"https://github.com/dbushell/granary","last_synced_at":"2025-04-10T23:14:46.648Z","repository":{"id":250149415,"uuid":"833510090","full_name":"dbushell/granary","owner":"dbushell","description":"🌾 Git Large File Storage (LFS) server implementation written in TypeScript (sorry)","archived":false,"fork":false,"pushed_at":"2024-10-25T08:05:10.000Z","size":27,"stargazers_count":46,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T23:14:24.104Z","etag":null,"topics":["bun","deno","git","git-lfs","javascript","nodejs","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbushell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-07-25T07:47:41.000Z","updated_at":"2025-01-03T22:09:18.000Z","dependencies_parsed_at":"2024-09-25T00:31:37.487Z","dependency_job_id":null,"html_url":"https://github.com/dbushell/granary","commit_stats":{"total_commits":5,"total_committers":1,"mean_commits":5.0,"dds":0.0,"last_synced_commit":"fcc85c9996261317c6cecbd77a830230be5d1090"},"previous_names":["dbushell/granary"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbushell%2Fgranary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbushell%2Fgranary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbushell%2Fgranary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbushell%2Fgranary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbushell","download_url":"https://codeload.github.com/dbushell/granary/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248312135,"owners_count":21082638,"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":["bun","deno","git","git-lfs","javascript","nodejs","typescript"],"created_at":"2024-09-24T14:09:54.901Z","updated_at":"2025-04-10T23:14:46.627Z","avatar_url":"https://github.com/dbushell.png","language":"TypeScript","funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# 🌾 Git Granary\n\n**Git Granary** is a [Git Large File Storage](https://git-lfs.com) (LFS) server implementation written in TypeScript (sorry).\n\nGit Granary was designed for self-hosted personal use. See my [introduction blog post](https://dbushell.com/2024/07/25/git-granary/).\n\n⚠️ Work in progress! ⚠️\n\n## Security and Configuration\n\n[Basic HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#basic_authentication_scheme) is used for initial requests. Running behind a HTTPS proxy like [Caddy](https://caddyserver.com) or [Traefik](https://traefik.io/traefik/) is *strongly recommended*. Short-lived single use tokens are generated for each download \u0026 upload operation.\n\n### Server Configuration\n\nBasic auth username and password are configured using `GGLFS_USERNAME` and `GGLFS_PASSWORD` environment variables.\n\nFor HTTPS reverse proxies set `GGLFS_ORIGIN` to a full URL, e.g. `https://lfs.example.com`. If defined the server will only respond to proxies that set `x-forwarded` headers.\n\nSee `.env.example` for all config options.\n\n### Client Configuration\n\nGit clients can be configured with `.lfsconfig`:\n\n```ini\n[lfs]\n\turl = http://user:pass@localhost:8000/repo\n```\n\nOr `git config` command:\n\n```shell\ngit config lfs.url 'http://user:pass@localhost:8000/repo'\n```\n\nSee the [Git LFS documentation](https://github.com/git-lfs/git-lfs/blob/main/docs/man/git-lfs-config.adoc) for full client configuration.\n\n## JavaScript Runtimes\n\nGit Granary is coded with cross-runtime JavaScript where possible. Adapters are used for runtime specific APIs like filesystem access and HTTP servers.\n\nDeno is the primary full featured implementation. Bun and Node adapters are minimum viable implementations.\n\n## Notes\n\nNo Windows support because the server assumes posix paths. It might run under WSL. I don't know, I don't care.\n\nNo affordances are made for Git clients that fail to conform to the specification.\n\n* * *\n\n[MIT License](/LICENSE) | Copyright © 2024 [David Bushell](https://dbushell.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbushell%2Fgranary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbushell%2Fgranary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbushell%2Fgranary/lists"}