What is Wecode?
Wecode is a free and open source online judge platform designed specifically for programming courses. It provides a complete solution for instructors to create programming assignments, automatically grade student submissions, and manage course assessments. Wecode employs Docker to contain and execute user-submitted code in a secure sandboxed environment. The web interface is built with Laravel (PHP framework) while the judging backend is implemented in BASH.Wecode is a complete rewrite of Wecode Judge, bringing modern features and improved architecture.
Key Features
Wecode provides a comprehensive set of features for managing programming courses:User Management
- Multiple user roles: Admin, head instructor, instructor, and student roles with appropriate permissions
- Bulk user creation: Add multiple users at once
- Fine-grained access control: Different permissions for different course roles
Secure Code Execution
- Docker sandboxing: All submitted code runs in isolated Docker containers
- Resource limits: Precise time and memory limits using Perl
- Output size limits: Prevents excessive output from submitted code
Assignment Features
- Multiple grading methods:
- Output Comparison: Compare program output against expected results
- Tester Code: Use custom test code to validate submissions
- Problem descriptions: Support for PDF, Markdown, and HTML formats
- Code templates: Create “fill in the blank” assignments with starter code
- Late submission handling: Custom rules for grading late submissions
- Submission queue: Manage and process submissions efficiently
Academic Integrity
- Moss integration: Cheat detection using Stanford’s Moss (Measure of Software Similarity)
- Similar code detection: Identify potential plagiarism across submissions
Results & Analytics
- Scoreboard: Real-time leaderboard for competitive assignments
- Excel export: Download results in spreadsheet format
- Code download: Get all submitted codes in a zip file
- Rejudge capability: Re-evaluate submissions with updated test cases
Notifications
- Built-in notification system to keep students and instructors informed
- Alerts for new submissions, grading completion, and important updates
Use Cases
Wecode is ideal for:Academic Programming Courses
- Automate grading for introductory programming classes
- Manage assignments for data structures and algorithms courses
- Support multiple programming languages in a single course
Competitive Programming
- Host coding competitions with real-time scoreboards
- Create practice problems for programming contests
- Train students for ACM ICPC and similar competitions
Coding Practice
- Provide students with a platform to practice programming
- Offer instant feedback on code correctness
- Track student progress over time
Architecture Overview
Wecode is built on a modern, scalable architecture:Core Components
Laravel Backend (/home/daytona/workspace/source/)
- Built with Laravel 12.0+ framework
- Handles user authentication, assignment management, and web interface
- Manages submission queue and results storage
- Uses PHP 8.0.2 or higher
- Supports both MySQL and PostgreSQL
- Stores users, assignments, submissions, and results
- Configured via
.envfile
- BASH-based judging system
- Communicates with Docker daemon via
shell_exec() - Enforces time, memory, and output limits
- Compares output or runs tester code
- Isolated containers for each submission
- Prevents malicious code from affecting the host system
- Supports multiple programming languages
Security Model
- All code execution happens in Docker containers
- PHP has controlled access to shell commands via
shell_exec() - File system isolation prevents unauthorized access
- User roles ensure proper access control
Supported Languages
Wecode supports multiple programming languages through Docker containers, including:- C/C++
- Java
- Python
- And more (extensible through Docker images)
License
Wecode is released under the GPL v3 license, making it free to use, modify, and distribute.Next Steps
Quickstart
Get Wecode up and running in minutes
Installation
Detailed installation and configuration guide

