English | 简体中文
FeasOJ Backend and JudgeCore has been migrated to this project.
FeasOJ is an online programming practice platform based on Vue and Golang, supporting multi-languages, discussion forums, contests and other features, aiming to provide users with a convenient and efficient learning and practice environment.
ImageGuard
Profanity Detector
Config Document
- Multi-language support: Support multiple languages, including English, Spanish, French, Italian, Japanese, Simplified Chinese etc
- Multi Programming Language Support: C++, Java, Python, Rust, PHP, Pascal, Golang
- User Authentication: Supports user registration, login, logout and other functions
- Topic Management: Supports topic uploading, editing, deleting, etc
- Discussion Forum: supports users to post, reply, delete comments and so on
- Contests: support the functions of creating, participating and ending contests
- Code Editor: Supports Markdown editor, which is convenient for users to write questions and comments
- Code Highlighting: Support code highlighting, convenient for users to view and edit code
- Code Submission: Support users to submit code and compile and run in the sandbox to return the result
- Real-time notification: Support real-time notification of question results and contest messages (SSE)
FeasOJ
│
├─images
├─docs
├─services # Back-end and JudgeCore src
│ ├─cmd
│ │ ├─app
│ │ │ ├─backend
│ │ │ └─judgecore
│ │ └─pkg
│ ├─go.mod
│ ├─go.sum
│ └─scripts
├─web # Front-end src
│ ├─public
│ ├─src
│ ├─index.html
│ ├─package-lock.json
│ ├─package.json
│ └─vite.config.js
- Vue 3
- Golang 1.25.5
- Docker
- MySQL/PostgreSQL
- Redis
- npm
- The lastest version of Chromium or Firefox
- Clone this repository
- Run
./scripts/deps_update.shunder the project directory to update dependencies for the backend and JudgeCore - Ensure Docker Desktop (Windows/MacOS) or Docker Engine is started
- Run
go run main.goin theservices/cmd/app/backendandservices/cmd/app/judgecoredirectories respectively to start the backend service. Note that you must start the JudgeCore service before the Backend service can be started - On the first start of the backend service,
config.tomlwill be generated in the directory. You will need to modify it and restart the service - Run
npm installunder thewebdirectory to install dependencies - Configure the
apiUrlin/web/src/utils/axios.jsto the address of your FeasOJ-Backend server - Run
npm run devto start the frontend server
This is the first time I've written a big project with Vue + Golang, so the code is going to be terrible, but I'll keep going to improve it! If you find any bugs, please open an issue.
- Arabic
- English
- Espanish
- French
- Italian
- Japanese
- Portuguese
- Russian
- Simplified Chinese
- Traditional Chinese
If you want to contribute adding new language or improving existing language, follow this step:
- Fork this repository
- Copy
/web/src/plugins/locales/en.jsand/services/cmd/app/backend/internal/utils/locales/en.jsoninto/web/src/plugins/localesand/services/cmd/app/backend/internal/utils/localeswith a new language code as the file name or edit the existing language file - Translate all the keys in the new language file
- Create a pull request
More screenshots can be found in the images folder.