Getting Started with omegaUp Development
Welcome! This guide will help you get started with contributing to omegaUp, a free educational platform that helps improve programming skills.
What is omegaUp?
omegaUp is an educational programming platform used by tens of thousands of students and teachers in Latin America. It provides:
- Problem Solving: Thousands of programming problems with automatic evaluation
- Contests: Organize programming competitions
- Courses: Structured learning paths
- Training: Practice problems organized by topic and difficulty
Before You Begin
If you're new to omegaUp, we recommend:
- Experience the Platform: Visit omegaUp.com, create an account, and solve a few problems
- Learn About Us: Explore omegaup.org to learn more about our organization
- Understand the Codebase: Review the Architecture Overview to understand how omegaUp works
Quick Start Path
-
Set up your local development environment using Docker. This is the first step to start contributing.
-
Learn how to fork the repository, create branches, and submit pull requests.
-
Stuck? Learn how to ask questions effectively and get help from the community.
Development environment overview
omegaUp uses Docker for local development. At a high level:
- Web + API: PHP controllers and DAOs over MySQL (classic MVC; JSON APIs)
- Judge: Go grader, runners, and minijail sandbox
- Browser UI: Vue.js, TypeScript, Bootstrap 4 (ongoing migration away from legacy templates)
- Problem storage: gitserver and zip/case layout as documented under Features → Problems
Where things live in the repo (quick map)
| Area | Path (in the main repository) |
|---|---|
| HTTP API / business rules | frontend/server/src/Controllers/ |
| Database access | frontend/server/src/DAO/ |
| Migrations | frontend/database/ |
| TypeScript / Vue | frontend/www/js/ |
| Legacy templates / i18n | frontend/templates/ |
| PHPUnit API tests | frontend/tests/controllers/ |
| Cypress E2E | cypress/e2e/ |
Papers (architecture context)
- omegaUp: Cloud-Based Contest Management System (IOI Journal, 2014)
- libinteractive — interactive tasks
Supported browsers (contributors and contestants)
Use a current evergreen browser (Chrome, Firefox, Safari, or Edge). The site is HTTPS-only. Very old Internet Explorer versions are not supported.
Development Accounts
When you set up your local environment, you'll have access to two pre-configured accounts:
| Username | Password | Role |
|---|---|---|
omegaup |
omegaup |
Administrator |
user |
user |
Regular user |
Next Steps
- Set up your development environment - Get Docker running and clone the repository
- Read the contributing guide - Learn the workflow for submitting changes
- Explore the architecture - Understand how omegaUp is structured
- Review coding guidelines - Learn our coding standards
Resources
- Website: omegaup.com
- GitHub: github.com/omegaup/omegaup
- Discord: Join our Discord server for community support
- Issues: Report bugs or request features
Ready to start? Head to Development Setup to begin!