{"id":50293592,"url":"https://github.com/torrentpier/ox","last_synced_at":"2026-05-28T07:30:36.305Z","repository":{"id":357211501,"uuid":"1234960744","full_name":"torrentpier/ox","owner":"torrentpier","description":"📦 TorrentPier. Static read-only archive of the support forum (2011–2026)","archived":false,"fork":false,"pushed_at":"2026-05-11T21:21:39.000Z","size":12948,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T21:34:32.947Z","etag":null,"topics":["archive","cloudflare-d1","cloudflare-r2","cloudflare-workers","forum-archive","forum-software","full-text-search","github-pages","snowball-stemmer","static-site","torrentpier","xenforo"],"latest_commit_sha":null,"homepage":"","language":"Python","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/torrentpier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-05-10T21:30:07.000Z","updated_at":"2026-05-11T21:21:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/torrentpier/ox","commit_stats":null,"previous_names":["torrentpier/ox"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/torrentpier/ox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrentpier%2Fox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrentpier%2Fox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrentpier%2Fox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrentpier%2Fox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/torrentpier","download_url":"https://codeload.github.com/torrentpier/ox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrentpier%2Fox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33599465,"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-05-28T02:00:06.440Z","response_time":99,"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":["archive","cloudflare-d1","cloudflare-r2","cloudflare-workers","forum-archive","forum-software","full-text-search","github-pages","snowball-stemmer","static-site","torrentpier","xenforo"],"created_at":"2026-05-28T07:30:35.346Z","updated_at":"2026-05-28T07:30:36.300Z","avatar_url":"https://github.com/torrentpier.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TorrentPier Ox Archive\n\nStatic, read-only archive of the TorrentPier support forum (XenForo 2),\nwhich ran from 2011 to 2026.\n\n## Goal\n\nPreserve every public thread, post, attachment, resource and profile-post\nas a static, read-only site served from GitHub Pages, with binary files\nhosted on Cloudflare R2 and full-text Russian search powered by a\nCloudflare Worker + D1 (SQLite/FTS5 with Snowball stemming).\n\n## Snapshot\n\nAs of 2026-05-11:\n\n| Threads | Posts  | Authors | Resources | Wall posts | Wall comments | Reviews | Polls |\n|--------:|-------:|--------:|----------:|-----------:|--------------:|--------:|------:|\n| 3,304   | 45,473 | 1,120   | 230       | 217        | 120           | 60      | 17    |\n\nR2 binaries: 3,319 attachments · 506 hi-res avatars · 136 resource icons ·\n511 resource version files · 549 deduped inline images. Full-text search\nruns over every post body via D1 FTS5.\n\n## Layout\n\n| Path             | What it holds                                              |\n|------------------|------------------------------------------------------------|\n| `exporter/`      | XenForo REST API → JSON (CLI: `xf-export`)                 |\n| `mirror/`        | Cloudflare R2 upload for attachments / avatars / inline    |\n| `builder/`       | Jinja2 templates → static HTML in `dist/`                  |\n| `search/`        | Snowball-stemmed FTS5 indexer that produces `seed.sql`     |\n| `search-worker/` | Cloudflare Worker at `search-ox.torrentpier.com`           |\n| `data/`          | Versioned JSON export (one file per thread / resource / user) |\n| `templates/`     | Jinja2 templates                                           |\n| `static/`        | CSS                                                        |\n\n## Build locally\n\n```bash\nuv venv .venv --python 3.13\nuv pip install --python .venv/bin/python -e .\ncp .env.example .env  # fill XF_API_KEY, R2 creds; only needed for re-export\n\n.venv/bin/python -m builder build --data data --out dist\n.venv/bin/python -m http.server 8765 --directory dist\n# open http://127.0.0.1:8765/\n```\n\nThe exporter, mirror and search indexer all read from `data/`, so the\nbuilder can produce the full static site without any network access.\n\n## Architecture\n\nSee [ARCHITECTURE.md](./ARCHITECTURE.md) — Mermaid diagrams of the data\npipeline, the search request flow, the deploy flow, plus a decisions log\nand a verified map of the XenForo API surface.\n\n## License\n\n[MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorrentpier%2Fox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftorrentpier%2Fox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorrentpier%2Fox/lists"}