WASM OJ Wonderland.
The core instance of WASM OJ, including Web UI and submission management. Fully serverless and scalable.
One of the most important goals of WASM OJ is to provide an easily deployable and scalable online judge system. For runner and compiler components, we use WARK and Compilet. For the problem management, we use Problem Box.
WASM OJ Wonderland is responsible to interact with these components and provide a web UI for users to view problems and submit solutions.
The following platforms are supported by WASM OJ Wonderland:
- Cloudflare Pages
- Vercel
- Deta
- Local
The components of WASM OJ Wonderland are also configurable. There are three components: KV, DB, and Cache.
For DB, we support:
- Cloudflare D1 (only available on Cloudflare Pages)
- SQLite (only available on non-edge environments)
- PostgreSQL
- MySQL
- ... (PRs are welcome!)
For KV, we support:
- Cloudflare KV (only available on Cloudflare Pages)
- Upstash Redis
- Deta Base
- Redis
- JSON file (only available on non-edge environments)
- In-memory
- ... (PRs are welcome!)
For Cache, we support:
- Cloudflare Cache (only available on Cloudflare Pages)
- In-memory
- ... (PRs are welcome!)
You can use the following environment variables to configure:
DB_COMPONENT="..."
KV_COMPONENT="..."
CACHE_COMPONENT="..."
See src/lib/server/platform.ts for more details.
The API documentation is available at https://woj.csie.cool/api.
There are 3 official clients:
- Rust: wasm-oj/woj-rs
- TypeScript / JavaScript: wasm-oj/woj-ts
- Python: wasm-oj/woj-py