{"id":51688506,"url":"https://github.com/cedmax/blogroll","last_synced_at":"2026-07-15T23:33:35.892Z","repository":{"id":369509483,"uuid":"1288563178","full_name":"cedmax/blogroll","owner":"cedmax","description":null,"archived":false,"fork":false,"pushed_at":"2026-07-13T10:00:34.000Z","size":1806,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-13T12:04:55.933Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://blogroll.it","language":"Astro","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/cedmax.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-03T18:21:04.000Z","updated_at":"2026-07-13T10:01:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cedmax/blogroll","commit_stats":null,"previous_names":["cedmax/blogroll"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cedmax/blogroll","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedmax%2Fblogroll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedmax%2Fblogroll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedmax%2Fblogroll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedmax%2Fblogroll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cedmax","download_url":"https://codeload.github.com/cedmax/blogroll/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedmax%2Fblogroll/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35524897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"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":"2026-07-15T23:33:35.403Z","updated_at":"2026-07-15T23:33:35.885Z","avatar_url":"https://github.com/cedmax.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"# blogroll.it\n\nSource for [blogroll.it](https://blogroll.it/) — a feed aggregator for Italian sites.\n\n## Requirements\n\n- Go 1.25+\n- Node.js 24+ (for Astro/npm)\n\n## Commands\n\n```bash\nnpm install      # fetch feeds and write src/data/ (runs go run main.go via postinstall)\nnpm run build    # Astro build → dist/\nnpm run dev      # start Astro dev server at localhost:4321\nnpm run preview  # serve dist/ locally\n```\n\nTo fetch feeds manually without going through npm:\n\n```bash\ngo run main.go              # fetch feeds, write src/data/\ngo run main.go -opml \u003cfile\u003e # use a different OPML file\n```\n\n## Architecture\n\nTwo-stage build: Go fetches the RSS/Atom feeds and writes JSON to `src/data/`; Astro reads that JSON and generates the static site in `dist/`.\n\nFeed results are cached in `cache.json` using ETag/Last-Modified headers for efficient conditional GET on subsequent runs.\n\n## Adding a feed\n\nThe easiest way is to [open a \"Proponi un sito\" issue](../../issues/new?template=add-feed.yml): fill in the site name, URL, and Italian-only feed URL. An automation parses the issue and opens a PR that adds the entry to `public/ita.opml` for review — a separate **Validate submitted feed** check fetches the added feed and fails the PR if it's unreachable or unparseable.\n\nblogroll.it lists **Italian-language sites only**; sites with English content aren't published, so submit a feed that contains only Italian posts.\n\nYou can also edit `public/ita.opml` directly and open a PR yourself. Either way, the next build picks up the change.\n\n## Removing a site\n\nTo report a site for removal, [open a \"Segnala un sito per la rimozione\" issue](../../issues/new?template=remove-feed.yml) with the URL and reason. Removals are reviewed manually — no automated PR is opened.\n\n## Credits\n\n`main.go` is a fork of [peterc/engblogs](https://github.com/peterc/engblogs) by Peter Cooper.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedmax%2Fblogroll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcedmax%2Fblogroll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedmax%2Fblogroll/lists"}