This repo contains the source code of OJ Analyzer
简体中文版:README_zh-hans.md
Build status
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 isroot
. 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!