{"id":29283312,"url":"https://github.com/spongepowered/systemofadownload","last_synced_at":"2026-04-17T06:04:41.153Z","repository":{"id":38012318,"uuid":"268347182","full_name":"SpongePowered/SystemOfADownload","owner":"SpongePowered","description":"Downloads webpage builder, backend builds the database and pages","archived":false,"fork":false,"pushed_at":"2026-04-14T04:57:13.000Z","size":2567,"stargazers_count":7,"open_issues_count":8,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-14T06:21:40.715Z","etag":null,"topics":["akka-streams","hacktoberfest","indexer","java","lagom","lagom-java","lagom-services"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/SpongePowered.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"patreon":"Sponge"}},"created_at":"2020-05-31T19:15:49.000Z","updated_at":"2026-04-14T04:36:32.000Z","dependencies_parsed_at":"2023-11-14T01:33:51.655Z","dependency_job_id":"b325a244-df98-4594-b07a-0df8686b7d48","html_url":"https://github.com/SpongePowered/SystemOfADownload","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/SpongePowered/SystemOfADownload","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FSystemOfADownload","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FSystemOfADownload/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FSystemOfADownload/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FSystemOfADownload/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpongePowered","download_url":"https://codeload.github.com/SpongePowered/SystemOfADownload/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FSystemOfADownload/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31826906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"online","status_checked_at":"2026-04-15T02:00:06.175Z","response_time":63,"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":["akka-streams","hacktoberfest","indexer","java","lagom","lagom-java","lagom-services"],"created_at":"2025-07-05T19:18:08.063Z","updated_at":"2026-04-15T05:02:37.602Z","avatar_url":"https://github.com/SpongePowered.png","language":"Go","funding_links":["https://patreon.com/Sponge"],"categories":[],"sub_categories":[],"readme":"# SystemOfADownload\n\nThe metadata generator webapp that serves up enhanced information\nand \"tagging\" for artifacts from a Maven repository. This is intended to\nserve as a backend to power the data to generate for serving an enhanced\ndownloads website.\n\n## Requirements\n\nUsing [Mise](https://mise.jdx.dev/), the `mise.toml` file defines tool requirements, notably\nGo 1.25 as a minimum.\n\n### Deployment\n\nBeing a webapp, there's two distinct binaries that run:\n- `server` - the web api server\n- `worker` - the background worker that does the indexing and maintenance\n\n\n## Project layout (DDD + TDD-friendly)\n\nThis repo uses a lightweight Domain-Driven Design structure with pure domain types, an application layer, and adapters for delivery (HTTP) and background workers.\n\nDirectory overview:\n\n- `internal/domain` — Pure domain entities and logic (no framework deps)\n- `internal/app` — Application services/use cases orchestrating domain logic\n- `internal/httpapi` — HTTP adapter and routing for the server binary\n- `internal/worker` — Background worker orchestration\n- `cmd/server` — Entrypoint for the HTTP API server\n- `cmd/worker` — Entrypoint for the background worker\n\nTesting: standard library `testing` and `net/http/httptest` are used, no external test deps.\n\nRun tests:\n\n```\ngo test ./...\n```\n\nBuild binaries:\n\n```\ngo build -o bin/server ./cmd/server\ngo build -o bin/worker ./cmd/worker\n```\n\nRun locally:\n\n```\n./bin/server   # serves HTTP on :8080\n./bin/worker   # runs background loop\n```\n\nHTTP API quickstart:\n\n- Health check: `GET http://localhost:8080/healthz` → 200 OK\n- Metadata generation (example):\n\n```\ncurl -sS -X POST http://localhost:8080/v1/metadata \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"group_id\":\"org.example\",\"artifact_id\":\"demo\",\"version\":\"1.0.0\",\"tags\":[\"Latest\",\"  stable  \"]}'\n```\n\nResponse:\n\n```\n{\n  \"coordinates\": \"org.example:demo:1.0.0\",\n  \"tags\": [\"latest\",\"stable\"],\n  \"is_stable\": true\n}\n```\n\n## Development\n\n### Contributing\n\nThis project uses [Conventional Commits](https://www.conventionalcommits.org/) for automated releases.\nPlease format your commit messages accordingly:\n\n```\nfeat: add new feature\nfix: correct bug\ndocs: update documentation\n```\n\nSee [docs/RELEASES.md](./docs/RELEASES.md) for complete release process documentation.\n\n### Setting up the development environment\n\n1. Install [Mise](https://mise.jdx.dev/)\n2. Run `mise install` to install all required tools\n3. See [docs/TOOLS.md](./docs/TOOLS.md) and [docs/AGENTS.md](./docs/AGENTS.md) for detailed development guidelines\n\n### Code generation\n\nGenerate API, database, and mock code:\n\n```bash\ngo generate ./...\n```\n\n## Releases\n\nReleases are automatically created using release-please when conventional commits are merged to main.\nSee [docs/RELEASES.md](./docs/RELEASES.md) for details.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspongepowered%2Fsystemofadownload","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspongepowered%2Fsystemofadownload","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspongepowered%2Fsystemofadownload/lists"}