/acm-statistics

An online tool (crawler) to analyze users performance in online judges (coding competition websites). Supported OJ: POJ, HDU, HYSBZ, CodeForces, UVA, ICPC Live Archive, FZU, SPOJ, Timus (URAL), LeetCode_CN, CSU, LibreOJ, 洛谷, 牛客OJ, Lutece (UESTC), AtCoder, AIZU, CodeChef, El Judge, BNUOJ, Codewars, UOJ, NBUT, 51Nod, DMOJ, VJudge

Primary LanguageC#GNU Affero General Public License v3.0AGPL-3.0

This repo contains the source code of OJ Analyzer

简体中文版:README_zh-hans.md

Powered by ZenHub Quality Gate codecov Cypress.io Renovate enabled Mergify Status

All Contributors

Build status

Unit Tests Test E2E

Features

  • Querying ac/submissions of oj
  • Storing querying history

Under development

  • Email support
  • Ranks
  • ……

Directory structure

  • frontend: The front end
  • crawler: Crawlers to query OJs. Being used by both frontend and backend
  • crawler-api-backend: A microservice that provides querying api
  • e2e: E2E tests
  • backend: The back end, a monoservice
  • captcha-service: A microservice that provides captcha support
  • ohunt: A stateful, standalone crawler microservice used to support certain OJs such as ZOJ.
  • build: Codes to build and deploy the project. Tool chain: docker, docker-compose, GNU make.
  • tools: Utility scripts and config files in operation

See the README file in each module for specific documents.

Developing and deploying in docker

  • The project needs docker and docker-compose to function correctly.

Development

  • This project uses makefile to manage dependency between modules. Execute make help in repository root to view document.
  • GNU make is required.

Deploy

There are two ways to deploy this project in a server.

One-liner

Execute following code in shell to deploy the project to port 3000.

curl -s https://raw.githubusercontent.com/Liu233w/acm-statistics/master/tools/remote-docker-up.sh | bash

Vjudge crawler is not available in this way.

Config file version

In this way you are able to customise the configuration, enabling all features.

# Create a folder to store config files
mkdir -p ~/www/acm-statistics
cd ~/www/acm-statistics
# Download runner script and add permissions
curl https://raw.githubusercontent.com/Liu233w/acm-statistics/master/tools/remote-docker-up.sh  -o run.sh
chmod +x run.sh
# Run the script once to generate configuration file. It will exit after the line `.env file created, remember to edit it` is shown.
./run.sh
# Edit the config file following the description in it.
vim .env
# Now we can run the project by the script
./run.sh

Then you can use tools such as systemd to run ./run.sh.

./tools/acm-statistics.service is a template config file of systemd.

run.sh checks updates when it is starting. If there are updates to template.env, run.sh will exit and ask you to compare these two files. The script compares the line count of the two files to check update, please make sure they are identical when editing.

Management

  • Set the url of adminer in .env file. It is /adminer by default.
    • You can view and edit database via adminer.
    • The name of the database is acm_statistics. Username is root. You can set password in .env
  • Backups are created automatically in 3:00am each day, stored in db-backup folder, which is in the folder that contains config files.

License

  • All source code except the code in crawler/crawlers are under AGPL-3.0 license
  • The code in crawler/crawlers are under BSD 2-Clause license.

Contribution

  • All contribution especially crawlers are welcomed.
  • Please follow Commit Message Conventions when writing git commit messages.
  • You may use cz-cli to help writing commit messages.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Adelard Collins🔗
🐛

BackSlashDelta🔗
🐛

Bodhisatan_Yao🔗
🐛

Geekxiong🔗
🤔

Halorv🔗
🤔

Kido Zhang🔗
🚇 🤔

Liu233w🔗
💻 🤔 🚇 ⚠️

Meulsama🔗
🤔

Michael Xiang🔗
🐛

Zhao🔗
🐛

bluebear4🔗
🐛

ct🔗
🐛

flylai🔗
💻 🐛

fzu-h4cky🔗
🐛

wwawwaww🔗
🐛

zby🔗
🤔 🐛

This project follows the all-contributors specification. Contributions of any kind welcome!