CODARA is a Django web platform designed for Competitive Programming, Problem Solving, and algorithmic coaching.
It connects students with experienced coaches and provides a structured environment for learning algorithms, joining contests, solving problem sets, tracking progress, and redeeming rewards.
- Overview
- Main Features
- User Roles
- Tech Stack
- Project Structure
- Database Models
- Installation
- How to Run
- Useful Commands
- Screenshots
- Future Improvements
- Authors
Many students want to improve their competitive programming skills for contests such as CPC, ACPC, and ICPC. Traditional platforms usually provide only problem lists, without personalized coaching or progress support.
CODARA solves this by offering a complete learning platform where students can:
- learn problem solving progressively;
- request coaching from experienced coaches;
- participate in contests;
- solve daily tasks and problem sets;
- track progress through dashboards;
- earn points, badges, and rewards.
Coaches can manage students, publish problem sets, create contests, and handle coaching requests.
- Email-based authentication.
- Separate registration flows for students and coaches.
- Custom Django user model.
- Role-based redirection after login.
- Student dashboard.
- Profile management.
- Placement test to determine level.
- Coach discovery and coaching requests.
- Access to problem sets from accepted coaches.
- Contest participation.
- Progress tracking using daily activity.
- Points, badges, rewards store, and personal inventory.
- Coach dashboard.
- Coach profile with expertise, rating, price, university, and social links.
- Accept or reject student coaching requests.
- Create, update, publish, and delete problem sets.
- Create and manage contests.
- View students and estimated monthly revenue.
- Contest problem sets.
- Daily task problem sets.
- Difficulty levels: Easy, Medium, Hard, Expert.
- Tags such as DP, Graphs, Trees, Greedy, Math.
- Multiple external problem links per problem set.
- Public contests.
- Contest start and end time.
- Automatic status detection: Upcoming, Live, Ended.
- Contest participation tracking.
- Score and ranking system structure.
- Student points system.
- Badges.
- Rewards store.
- Reward redemption.
- Student inventory.
- Multiple-choice questions.
- Topics include arrays, strings, dynamic programming, graphs, mathematics, sorting, trees, and greedy algorithms.
- Automatic score calculation.
- Student level assignment.
A student can:
- create an account;
- log in;
- complete a placement test;
- request a coach;
- solve problem sets;
- participate in contests;
- view progress on the dashboard;
- earn badges and rewards.
A coach can:
- create an account;
- manage a coach profile;
- handle student requests;
- create problem sets;
- publish contests;
- manage students;
- view dashboard statistics.
| Category | Technology |
|---|---|
| Backend | Django |
| Programming Language | Python |
| Frontend | HTML, CSS, JavaScript |
| UI Framework | Bootstrap |
| Database | SQLite3 |
| Architecture | Django MVT |
| Media Handling | Django ImageField / Pillow |
cp_platform/
├── accounts/ # Users, student profiles, coach profiles, coaching requests
├── config/ # Django settings, URLs, ASGI/WSGI configuration
├── contests/ # Contest creation, listing, details, participation
├── core/ # Landing page, about, contact, pricing
├── dashboard/ # Student and coach dashboards
├── placement/ # Placement test and placement results
├── problems/ # Contest and daily task problem sets
├── rewards/ # Badges, reward items, redemptions, inventory
├── static/ # CSS, JavaScript, images, web assets
├── templates/ # Django HTML templates
├── manage.py
└── requirements.txt
The project contains multiple related models, including:
User: custom email-based user model.StudentProfile: student information, level, points, streak, solved problems.CoachProfile: coach information, expertise, rating, price, availability.CoachingRequest: request workflow between students and coaches.DailyActivity: daily progress tracking.ContestProblemSet: problem sets used for contests.DailyTaskProblemSet: daily training problem sets.Contest: contest information and timing.ContestParticipation: student participation in contests.Badge: gamification badge model.RewardItem: rewards store items.RewardRedemption: reward redemption history.StudentInventory: acquired rewards.PlacementQuestion: placement test questions.PlacementResult: placement test results and assigned level.
git clone https://github.com/IDMen/codara-django-platform.git
cd codara-django-platformpython -m venv venv
venv\Scripts\activatepython3 -m venv venv
source venv/bin/activatepip install -r requirements.txtpython manage.py makemigrations
python manage.py migratepython manage.py createsuperuserIf the file inject_placement_questions.py exists in the project, run:
python inject_placement_questions.pyStart the development server:
python manage.py runserverThen open:
http://127.0.0.1:8000/
Admin panel:
http://127.0.0.1:8000/admin/
# Check project issues
python manage.py check
# Create migrations
python manage.py makemigrations
# Apply migrations
python manage.py migrate
# Run local server
python manage.py runserver
# Create admin user
python manage.py createsuperuser
# Collect static files, useful for deployment
python manage.py collectstaticAdd screenshots here after pushing the project.
Recommended folder:
assets/screenshots/
Example:


Recommended repository name:
codara-django-platform
Recommended GitHub description:
Django competitive programming coaching platform with student/coach dashboards, problem sets, contests, placement tests, and rewards.
Recommended topics:
django python competitive-programming coaching-platform problem-solving bootstrap sqlite student-dashboard coach-dashboard
- Add real-time contest leaderboard.
- Add Codeforces API integration.
- Add payment system for coaching subscriptions.
- Add chat or messaging between students and coaches.
- Add advanced analytics for student progress.
- Add email notifications.
- Deploy the platform online.
- Add unit tests and integration tests.
Developed by:
- Mohamed Azzouz
Academic year: 2025–2026
This project was created for academic and learning purposes.