WnSOJ is a platform where you can solve programming and math tasks, learn new algorithms and concepts and find job. Platform offers effective testing system
, categorized problemset
, editorials and solutions
, submissions
, job search
, users
and statistics
.
Check it out at wnsoj.xyz!
- Download the project:
git clone https://github.com/spike1236/WnSOJ.git
cd WnSOJ
- Download required Python modules:
pip install -r requirements.txt
- Install g++ compiler, isolate; Work and Solve Online Judge uses cgroups v2-based isolate, check this for installation.
- Fill out
./.pgpass
,./.env
and~/.pg_service.conf
according to provided templates. - Launch server and testing system (celery worker):
python3 manage.py runserver
celery -A app worker -B -l info
You can also wrap launches as systemd services (which is recommended).
- Open Main page
- Enjoy the project! 😎
Platform provides an extensive set of olympiad programming tasks. To submit solution you need to be signed in system. You can register or sign in into existing account and submit solutions to problems. The testing system runs in parallel with server using Celery worker. You can use Redis, RabbitMQ or Amazon SQS as a broker for Celery worker (more info here; personally, I use Redis).
System will automatically test your solution in isolated sandboxes provided by isolate and report verdict, max used time and max used memory.
Also, each problem has editorial and solution in C++ language.
Platform administrators can add new problems.
In the platform you can also find or publish/edit/delete job. There are 2 types of accounts:
- Common account - these users can find job and communicate with employers by email or phone.
Open job that you liked, read the description and if job suits you, communicate with employer by email or phone. - Business account - these users or companies can publish, edit or delete jobs, also find and communicate by email or phone with other users.
Publish job, edit it if it is need, and just wait until some qualified specialist will communicate with you by email or phone number.
In the profile, you can see user's username, email, phone number and statistics about problems: submissions statistics and last 10 attempts.
Also you can change your icon or password in 'Edit profile' page.
The platform provides a comprehensive REST API with the following features:
- JWT Authentication
- User registration and profile management
- Access to problems, categories, and submissions
- Job board integration
API documentation is available through:
- Swagger UI:
/api/schema/swagger-ui/
- ReDoc:
/api/schema/redoc/
Main API endpoints:
- Authentication:
/api/token/
and/api/token/refresh/
- User Registration:
/api/register/
- User Profile:
/api/profile/
- Problems:
/api/problems/
- Categories:
/api/categories/
- Submissions:
/api/submissions/
- Jobs:
/api/jobs/
Following technologies and libraries were used to create this project:
- Django
- Django REST Framework
- drf-spectacular (OpenAPI Schema)
- PostgreSQL
- isolate
- Celery
- Redis
- Pillow
- ZipFile
- io
Following components were used to create this project:
- Rakhmetulla Akram - spike1236
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
See LICENSE file for details.
- USDT TRC20: TTH6RmF1WZgEo4Cy8EMr3j9CNsumhJKxvT
- BTC: 14w77gqVkFLrYL6BNKHNaTAugT7WaVqEh1
- SOL: 4NBbQWwJwLTBp7R9RSs7mCGvg1jCHU9K6QbgFEZFcsip
- TON: UQAMJHIuaHL4ZAMnM3b4QQ0nRXs35cIauJ0SLdx0ygCTQ-Ox