{"id":14989378,"url":"https://github.com/acm309/putongoj","last_synced_at":"2025-04-04T10:08:44.841Z","repository":{"id":39229016,"uuid":"92070092","full_name":"acm309/PutongOJ","owner":"acm309","description":"Putong Online Judge -- An online judge with nothing special","archived":false,"fork":false,"pushed_at":"2025-02-24T07:52:27.000Z","size":6641,"stargazers_count":190,"open_issues_count":15,"forks_count":27,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-04T10:08:37.254Z","etag":null,"topics":["koa","mongodb","node","onlinejudge","redis"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/acm309.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":"2017-05-22T15:36:53.000Z","updated_at":"2025-03-20T06:02:37.000Z","dependencies_parsed_at":"2024-10-14T01:22:20.029Z","dependency_job_id":"85f10b39-db94-4a97-ae77-3a13b2e804b8","html_url":"https://github.com/acm309/PutongOJ","commit_stats":{"total_commits":457,"total_committers":4,"mean_commits":114.25,"dds":"0.42669584245076586","last_synced_commit":"90124859b0ac21105e04a86ea31aa90506ea6888"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm309%2FPutongOJ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm309%2FPutongOJ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm309%2FPutongOJ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm309%2FPutongOJ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acm309","download_url":"https://codeload.github.com/acm309/PutongOJ/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247157283,"owners_count":20893220,"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":["koa","mongodb","node","onlinejudge","redis"],"created_at":"2024-09-24T14:18:16.196Z","updated_at":"2025-04-04T10:08:44.812Z","avatar_url":"https://github.com/acm309.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Putong Online Judge v2\n\n\u003e (初代版本 [here](https://github.com/acm309/PutongOJ/tree/v1))\n\n\u003e (English [here](./README_en.md))\n\n[![Build Status](https://img.shields.io/github/workflow/status/acm309/PutongOJ/Node.js%20CI?style=flat-square)](https://github.com/acm309/PutongOJ/actions/workflows/test.yml)\n[![Codecov](https://img.shields.io/codecov/c/github/acm309/PutongOJ.svg?style=flat-square)](https://codecov.io/gh/acm309/PutongOJ)\n[![Node](https://img.shields.io/badge/node-%3E=16.0.0-ff69b4.svg?style=flat-square)](https://nodejs.org/en/download/releases/)\n[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg?style=flat-square)](https://standardjs.com)\n![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat-square)\n\n### 预览\n\n[Demo](http://acm.cjlu.edu.cn) (测试账号: 123456 / 123456)\n\n## 文档\n\nCurrently Not available\n如果问题，请直接在发起一个 issue。\n\n## Features\n\n- Docker 构建，一件部署\n- 单页应用\n- 多组测试样例\n- Powered by Vue.js, Koa.js, MongoDB, Redis\n\n## 部署\n\n注意，此 OJ 处于 beta 状态。\n\n### Docker\n\n1. 复制此仓库\n\n```bash\ngit clone https://github.com/acm309/PutongOJ.git PutongOJ\n```\n\n2. 配置环境变量\n\n```bash\nmv .env.sample .env\n```\n\n3. compose up\n\n```bash\ndocker-compose up\n```\n\nor\n\ndaemon mode\n```bash\ndocker-compose up -d\n```\n\n会在 80 端口启动。可以直接访问。默认管理员账户 `admin`, 密码 `kplkplkpl`\n\nEnjoy it!\n\n### 手动安装\n\n推荐安装在 Ubuntu 上。可以尝试其他版本，但不保证稳定。\n\n1. 安装 [Node.js](https://nodejs.org) [mongodb](https://www.mongodb.com/download-center?jmp=nav#community) \u0026\u0026 [redis](https://redis.io/)\n\n2. 安装其它依赖 (for ubuntu)\n\n```bash\napt-get install libcairo2-dev libpango1.0-dev build-essential\n```\n\n3. 复制此仓库\n\n```bash\ngit clone https://github.com/acm309/PutongOJ.git\n```\n\n4. 安装项目依赖\n\n```bash\nnpm i -g pnpm\npnpm i\n```\n\n5. 配置环境变量\n\n```bash\nmv .env.sample .env\n```\n\n```bash\nredisURL='your redis url'\ndbURL='your mongodb url'\nport=3000 #the port the application will listen on\n```\n\n6. 下载静态文件和启动判题端\n\n```bash\nnode manager.js setup\n```\n\n`pm2.config.json` 会自动生成.\n\n7. 启动\n\n安装 pm2\n\n```bash\nnpm i -g pm2\n```\n\n用 pm2 启动\n\n```bash\npm2 start pm2.config.json\n```\n\n## 迁移\n\n找到并记住 mongodb 容器的 `Container Id`\n\n```bash\ndocker ps\n```\n\n### 导出\n\n将 `\u003cContainer id\u003e` 替换为上一步中 mongodb 实际运行的 id\n\n```bash\ndocker exec -it \u003cContainer id\u003e mongodump --out /data/backup --db oj\n```\n\n数据会在 `migrations/backup/`\n\n### 恢复\n\n```bash\ndocker exec -it \u003cContainer Id\u003e mongorestore --db oj --drop /data/backup/oj\n```\n\n### 静态文件\n\n将文件复制到 `public`\n\n将 `\u003cContainer id\u003e` 替换为 oj 系统在运行的容器 id\n\n```bash\ndocker cp \u003cSRC_PATH\u003e \u003cContainer Id\u003e:/app/public\n```\n\n## Browser Support\n\n- IE: **NOT** recommended\n- Chrome: 50 or above is recommended\n- Firefox: 50 or above is recommended\n- Edge: recommended\n\n## LICENSE\n\n[MIT](https://github.com/acm309/PutongOJ/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facm309%2Fputongoj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facm309%2Fputongoj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facm309%2Fputongoj/lists"}