{"id":37960183,"url":"https://github.com/criyle/go-judge-client","last_synced_at":"2026-01-16T18:03:41.144Z","repository":{"id":57519354,"uuid":"249283324","full_name":"criyle/go-judge-client","owner":"criyle","description":"Online Judge runner client","archived":false,"fork":false,"pushed_at":"2025-08-15T19:38:01.000Z","size":72,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-10T06:16:57.994Z","etag":null,"topics":[],"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/criyle.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":"2020-03-22T22:21:05.000Z","updated_at":"2025-08-15T19:38:04.000Z","dependencies_parsed_at":"2025-09-10T04:44:59.501Z","dependency_job_id":"6032623c-3882-4801-ba12-98098b68887d","html_url":"https://github.com/criyle/go-judge-client","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/criyle/go-judge-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/criyle%2Fgo-judge-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/criyle%2Fgo-judge-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/criyle%2Fgo-judge-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/criyle%2Fgo-judge-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/criyle","download_url":"https://codeload.github.com/criyle/go-judge-client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/criyle%2Fgo-judge-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28480513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: 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":[],"created_at":"2026-01-16T18:03:40.235Z","updated_at":"2026-01-16T18:03:41.138Z","avatar_url":"https://github.com/criyle.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-judge-client\n\nUnder designing \u0026 development\n\n[![GoDoc](https://godoc.org/github.com/criyle/go-judge-client?status.svg)](https://godoc.org/github.com/criyle/go-judge-client) [![Go Report Card](https://goreportcard.com/badge/github.com/criyle/go-judge-client)](https://goreportcard.com/report/github.com/criyle/go-judge-client) [![Release](https://img.shields.io/github/v/tag/criyle/go-judge-client)](https://github.com/criyle/go-judge-client/releases/latest)\n\nThe goal to to reimplement [syzoj/judge-v3](https://github.com/syzoj/judge-v3) in GO language using [go-sandbox](https://github.com/criyle/go-sandbox) and [go-judge](https://github.com/criyle/go-judge)\n\n## Workflow\n\n``` text\n+-----------------------------------------------+     +--------+\n| Judger (judger logic)                         | \u003c-\u003e | Client |\n+--------------------------+-------------+------+     +--------+\n| Language (Compile + Run) | ProgramConf | Data |\n+--------------------------+-------------+------+\n| Executor Server (RPC)    |\n+--------------------------+\n```\n\n## Interfaces\n\n- client: receive judge tasks (websocket / socket.io / RabbitMQ / REST API / gRPC stream)\n- data: interface to download, cache, lock and access test data files from website (by dataId)\n- language: programming language compile \u0026 execute configurations for Executor Server\n- problem: parse problem definition from configuration files\n\n## Logic\n\n- judger: execute judge logics (compile / standard / interactive / answer submit) then collect and calculate results\n\n## Models\n\n- JudgeTask: judge task pushed from website (type, source, data)\n- JudgeResult: judge task result send back to website\n- JudgeSetting: problem setting (from yaml) and JudgeCase\n\n## Planned API\n\n### Client Status\n\nUp \u003c-\u003e Down\n\n### Task Progress\n\nClient is able to report progress to the web front-end. Task should maintain its states\n\nPlanned events are:\n\n(Preparing) -\u003e Parsed -\u003e (Compiling) -\u003e Compiled -\u003e\nloop each sub task\n    (Judging)\n    Progressed\nend\nFinished\n\n- Parsed: problem data have been downloaded and problem configuration have been parsed (pass problem config to task)\n- Compiled: user code have been compiled (success / fail)\n- Progressed: single test case finished (success / fail - detail message)\n- Finished: all test cases finished / compile failed\n\nContext are defined by the client to handle cancellation. Subsequent task will be cancelled and the correspond event may not be trigger.\n\n## TODO\n\n- [x] socket.io client with namespace\n- [x] judge_v3 protocol\n- [ ] executor server integration\n- [ ] refactor\n- [ ] syzoj problem YAML config parser\n- [ ] syzoj data downloader\n- [ ] syzoj compile configuration\n- [ ] file io\n- [ ] special judger\n- [ ] interact problem\n- [ ] answer submit\n- [ ] demo site\n- [ ] uoj support\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcriyle%2Fgo-judge-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcriyle%2Fgo-judge-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcriyle%2Fgo-judge-client/lists"}