Git Product home page Git Product logo

h-judge's Introduction

H::Judge

This is the official repository for H::Judge.

Note:

  • The official site of H-Judge has been closed since there're almost no active users, for keeping running the website will lead to unnecessary cost.
  • I currently don't have enough time to continue developing new features for this Online Judge System, but PRs are always welcomed.

Description

A cross-platform, full-featured and fast online judge system.

Featrues

  • Problem management
  • Contest management
  • Group management
  • Rank and statistics
  • Messaging and notifications
  • System console
  • Support for special judge
  • Cross platform
  • And more...

Build Status

master develop
Build Status Build Status

Prerequisites

Projects

  • hjudge.WebHost:

    The web host for H::Judge using .NET Core.

  • hjudge.JudgeHost:

    The judge host for H::Judge using .NET Core.

  • hjudge.FileHost:

    The file host for H::Judge using .NET Core.

  • hjudge.Shared:

    The shared components used by other projects.

  • hjudge.Core:

    The core module of H::Judge containing all the necessary configurations and methods for judging a submission.

  • hjudge.Exec.Windows:

    A module on Microsoft Windows operating system used to run a program and measure time, memory consuming and execution status of the process being created.

  • hjudge.Exec.Linux:

    A module on Linux operating system used to run a program and measure time, memory consuming and execution status of the process being created.

Setup Development Environment

  1. Set environment variable 'DOTNET_ENVIRONMENT' to 'Development'

Development Run

  1. Setting your connection string to a PostgreSQL Database in ./hjudge.WebHost/src/appsettings.json (or appsettings.Development.json for development environment)
  2. Migrate and update database
    cd hjudge.WebHost/src
    dotnet ef database update
    cd ../../hjudge.FileHost/src
    dotnet ef database update
    
  3. Run hjudge.JudgeHost (can be skipped if you don't use solution submission in Web)
    cd hjudge.JudgeHost/src
    dotnet run
    
  4. Run seaweedfs server (can be skipped if you don't use solution submission in Web)
    weed server
    
  5. Run hjudge.FileHost (can be skipped if you don't use solution submission in Web)
    cd hjudge.FileHost/src
    dotnet run
    
  6. Run frontend dev-server
    cd hjudge.WebHost/src/Frontend
    yarn start
    
  7. Run hjudge.WebHost
    cd hjudge.WebHost/src
    dotnet run
    
  8. Run your favourite broswer and nagivate to http://localhost:5000

Production Build

  1. fake run build.fsx -t Build
  2. Copy the hjudge.Exec.Linux/hjudge.Exec.Windows output library file generated in step 1 to the hjudge.JudgeHost output folder.

Run Test

  1. fake run build.fsx -t Test

h-judge's People

Contributors

dependabot[bot] avatar hez2010 avatar renovate-bot avatar riverstore avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

h-judge's Issues

Problem System

Support Problem:

  • View Problem List
  • Add/Remove Problem
  • Edit Problem
  • View Problem Details
  • Submit solutions
  • Solutions judge result feedback
  • View solution judge result
  • Vote
  • etc

Messaging System

Support Messaging:

  • View Messages
  • Create/Remove Messages
  • Message state management
  • Notifications
  • etc

Group system

Support Group:

  • View Group List
  • Add/Remove Group
  • Edit Group
  • View Group Details
  • OptIn/ OptOut a group
  • Group Announcements
  • Integrate with Contest system
  • Authorization
  • etc

Rank System

Support Rank:

  • View Rank in Problem/Contest/Group
  • Order by Field
  • Caching
  • etc

System Console

Provides system console for admin

  • Languages config
  • System config
  • Run new judge workers/Terminate existing judge workers
  • Reload config
  • Restart app with debug/prod config

Please share the demo database

Hi,

First, thanks a lot for the great work. For easier to test the project, can you please also share the demo database.

Thanks a lot.

'Group' support

  • Add/remove a group
  • Edit group info
  • Add contests to group
  • Private group
  • Group searching
  • Join a group
  • Authentication
    ......

Article System

Support Article:

  • Create/Remove Articles
  • View Articles List
  • View Article contents
  • Vote
  • Comments
  • Scope with Problem/Contest/Group/Global
  • etc

OAuth Support

Instead of CSRF apiKey authentication, I'd prefer to use OAuth for authentication.

  • OAuth in the backend
  • OAuth in requestHelper
  • Deprecating CSRF token validation

New build system design

Use yaml or toml for new build system.

  • Modules support
  • Template snippets
  • Flow designer
  • YAML/TOML editor
  • Uniformed reports

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update dependency newtonsoft.json to v13.0.3
  • chore(deps): update dependency npgsql.entityframeworkcore.postgresql to v5.0.10
  • chore(deps): update dependency react.aspnet to v5.2.12
  • chore(deps): update dependency react.router to v5.2.12
  • chore(deps): update dependency sixlabors.imagesharp to v1.0.4
  • chore(deps): update dependency webpack-dev-server to v3.11.3
  • chore(deps): update react monorepo (@types/react, @types/react-dom, eslint-plugin-react-hooks)
  • chore(deps): update babel monorepo (@babel/core, @babel/plugin-proposal-object-rest-spread, @babel/plugin-transform-regenerator, @babel/preset-env, @babel/preset-react, @babel/preset-typescript)
  • chore(deps): update dependency @types/node to v16.18.60
  • chore(deps): update dependency @types/react-router-dom to v5.3.3
  • chore(deps): update dependency astroturf to v1.2.0
  • chore(deps): update dependency babel-loader to v8.3.0
  • chore(deps): update dependency eslint-plugin-jsx-a11y to v6.8.0
  • chore(deps): update dependency eslint-plugin-react to v7.33.2
  • chore(deps): update dependency google.protobuf to v3.25.0
  • chore(deps): update dependency grpc.aspnetcore to v2.58.0
  • chore(deps): update dependency grpc.aspnetcore.server to v2.58.0
  • chore(deps): update dependency grpc.net.client to v2.58.0
  • chore(deps): update dependency grpc.tools to v2.59.0
  • chore(deps): update dependency nswag.aspnetcore to v13.20.0
  • chore(deps): update dependency postcss-loader to v6.2.1
  • chore(deps): update dependency rabbitmq.client to v6.6.0
  • chore(deps): update dependency sass-loader to v12.6.0
  • chore(deps): update dependency stackexchange.redis to v2.7.4
  • chore(deps): update dependency typescript to v4.9.5
  • chore(deps): update javascriptengineswitcher monorepo to v3.21.0 (JavaScriptEngineSwitcher.ChakraCore, JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64, JavaScriptEngineSwitcher.ChakraCore.Native.win-x64, JavaScriptEngineSwitcher.Extensions.MsDependencyInjection)
  • fix(deps): update dependency react-router-dom to v5.3.4
  • fix(deps): update dependency semantic-ui-react to v2.1.4
  • chore(deps): update dependency @svgr/webpack to v8
  • chore(deps): update dependency @types/node to v20
  • chore(deps): update dependency babel-loader to v9
  • chore(deps): update dependency eslint to v8
  • chore(deps): update dependency eslint-config-react-app to v7
  • chore(deps): update dependency eslint-plugin-flowtype to v8
  • chore(deps): update dependency eslint-webpack-plugin to v4
  • chore(deps): update dependency node-sass to v9
  • chore(deps): update dependency npgsql.entityframeworkcore.postgresql to v7
  • chore(deps): update dependency postcss-loader to v7
  • chore(deps): update dependency rimraf to v5
  • chore(deps): update dependency sass-loader to v13
  • chore(deps): update dependency sixlabors.imagesharp to v3
  • chore(deps): update dependency typescript to v5
  • chore(deps): update dependency webpack-cli to v5
  • chore(deps): update dependency webpack-dev-server to v4
  • chore(deps): update react monorepo to v18 (major) (@types/react, @types/react-dom, react, react-dom)
  • chore(deps): update typescript-eslint monorepo to v6 (major) (@typescript-eslint/eslint-plugin, @typescript-eslint/parser)
  • fix(deps): update dependency markdown-it to v13 (markdown-it, @types/markdown-it)
  • fix(deps): update dependency react-ace to v10
  • fix(deps): update dependency react-router-dom to v6
  • fix(deps): update dotnet monorepo to v7 (major) (@microsoft/signalr, Microsoft.AspNetCore.Identity.EntityFrameworkCore, Microsoft.AspNetCore.Mvc.NewtonsoftJson, Microsoft.AspNetCore.SpaServices.Extensions, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Design, Microsoft.EntityFrameworkCore.Proxies, Microsoft.EntityFrameworkCore.Tools, Microsoft.Extensions.Caching.Memory, Microsoft.Extensions.Caching.StackExchangeRedis, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Hosting, Microsoft.Extensions.Logging, System.Resources.Extensions)
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

cargo
hjudge.Exec/Cargo.toml
  • serde 1.0
  • serde_json 1.0
  • winapi 0.3
html
hjudge.WebHost/src/Frontend/public/index.html
  • highlight.js 11.0.1
npm
hjudge.WebHost/src/Frontend/package.json
  • @microsoft/signalr 5.0.17
  • es6-promise 4.2.8
  • fetch-ponyfill 7.1.0
  • highlight.js 11.1.0
  • katex 0.13.11
  • markdown-it 12.1.0
  • react 17.0.2
  • react-ace 9.4.1
  • react-dom 17.0.2
  • react-router-dom 5.2.0
  • semantic-ui-react 2.0.3
  • @babel/core 7.19.3
  • @babel/plugin-proposal-class-properties 7.18.6
  • @babel/plugin-proposal-object-rest-spread 7.18.9
  • @babel/plugin-transform-regenerator 7.18.6
  • @babel/polyfill 7.12.1
  • @babel/preset-env 7.19.3
  • @babel/preset-react 7.18.6
  • @babel/preset-typescript 7.18.6
  • @svgr/webpack 5.5.0
  • @types/katex 0.11.1
  • @types/markdown-it 12.0.3
  • @types/node 16.3.1
  • @types/react 17.0.14
  • @types/react-dom 17.0.9
  • @types/react-router-dom 5.1.8
  • @typescript-eslint/eslint-plugin 4.28.2
  • @typescript-eslint/parser 4.28.2
  • astroturf 1.0.0-beta.22
  • autoprefixer 10.2.6
  • babel-loader 8.2.5
  • css-loader 5.2.6
  • eslint 7.30.0
  • eslint-config-react-app 6.0.0
  • eslint-plugin-flowtype 5.8.0
  • eslint-plugin-import 2.23.4
  • eslint-plugin-jsx-a11y 6.4.1
  • eslint-plugin-react 7.24.0
  • eslint-plugin-react-hooks 4.2.0
  • eslint-webpack-plugin 3.2.0
  • file-loader 6.2.0
  • isomorphic-style-loader 5.1.0
  • node-sass 6.0.1
  • postcss-loader 6.1.1
  • rimraf 3.0.2
  • sass-loader 12.1.0
  • typescript 4.3.5
  • url-loader 4.1.1
  • webpack 5.44.0
  • webpack-cli ^4.7.2
  • webpack-dev-server 3.11.2
nuget
hjudge.Core/src/hjudge.Core.csproj
  • Microsoft.Extensions.Logging 5.0.0
hjudge.FileHost/src/hjudge.FileHost.csproj
  • StackExchange.Redis 2.2.62
  • Npgsql.EntityFrameworkCore.PostgreSQL 5.0.7
  • Microsoft.Extensions.Caching.StackExchangeRedis 5.0.1
  • Microsoft.EntityFrameworkCore.Design 5.0.17
  • Microsoft.EntityFrameworkCore 5.0.17
  • Grpc.AspNetCore.Server 2.38.0
  • Grpc.AspNetCore 2.38.0
  • Google.Protobuf 3.17.3
hjudge.JudgeHost/src/hjudge.JudgeHost.csproj
  • Grpc.Tools 2.38.1
  • RabbitMQ.Client 6.2.2
  • Microsoft.Extensions.Hosting 5.0.0
  • Grpc.Net.Client 2.38.0
  • Google.Protobuf 3.17.3
hjudge.Shared/hjudge.Shared.csproj
  • RabbitMQ.Client 6.2.2
  • Microsoft.Extensions.DependencyInjection 5.0.2
hjudge.WebHost/src/hjudge.WebHost.csproj
  • Grpc.Tools 2.38.1
  • Grpc.Net.Client 2.38.0
  • Google.Protobuf 3.17.3
  • System.Resources.Extensions 5.0.0
  • System.IO.Compression 4.3.0
  • StackExchange.Redis 2.2.62
  • SixLabors.ImageSharp 1.0.3
  • React.Router 5.2.11
  • React.AspNet 5.2.11
  • RabbitMQ.Client 6.2.2
  • NSwag.AspNetCore 13.11.3
  • Npgsql.EntityFrameworkCore.PostgreSQL 5.0.7
  • Microsoft.Extensions.Caching.StackExchangeRedis 5.0.1
  • Microsoft.EntityFrameworkCore.Tools 5.0.17
  • Microsoft.EntityFrameworkCore.Proxies 5.0.17
  • Microsoft.EntityFrameworkCore.Design 5.0.17
  • Microsoft.EntityFrameworkCore 5.0.17
  • Microsoft.AspNetCore.SpaServices.Extensions 5.0.17
  • Microsoft.AspNetCore.Mvc.NewtonsoftJson 5.0.17
  • Microsoft.AspNetCore.Identity.EntityFrameworkCore 5.0.17
  • JavaScriptEngineSwitcher.Extensions.MsDependencyInjection 3.19.0
  • JavaScriptEngineSwitcher.ChakraCore.Native.win-x64 3.18.2
  • JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64 3.18.2
  • JavaScriptEngineSwitcher.ChakraCore 3.19.0
  • BuildBundlerMinifier 3.2.449
smartbox.SeaweedFs.Client/smartbox.SeaweedFs.Client.csproj
  • Newtonsoft.Json 13.0.1
  • Microsoft.Extensions.Caching.Memory 5.0.0
  • Microsoft.CSharp 4.7.0

  • Check this box to trigger a request for Renovate to run again on this repository

Cross-plat judge

Currently the judge is Windows-only (hjudge.Exec.Windows), and I'm planning to rewrite judge with Rust (hjudge.Exec).

Homepage Design

  • Announcements
  • Messages Hub
  • Statistics Hub
  • New problem, new contests and new groups
  • Top ranked users
  • Release notes

Discussion System

Support Discussion:

  • View discussions
  • Enable/Disable discussions
  • Reply a discussion
  • Scope with Problem/Contest/Group/Global
  • Integrate with Messaging System
  • etc

Contest system

Support Contest:

  • View Contest list
  • View Contest details
  • Add/Remove a Contest
  • Edit Contest
  • Integrate with Problem system
  • Competitors in a Contest
    • APIs
    • UI
  • Vote
  • etc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.