Skip to content

IDMen/codara-django-platform

Repository files navigation

CODARA — Competitive Programming Coaching Platform

Django Python SQLite Bootstrap

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.


Table of Contents


Overview

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.


Main Features

Authentication and Accounts

  • Email-based authentication.
  • Separate registration flows for students and coaches.
  • Custom Django user model.
  • Role-based redirection after login.

Student Features

  • 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 Features

  • 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.

Problem Sets

  • 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.

Contests

  • Public contests.
  • Contest start and end time.
  • Automatic status detection: Upcoming, Live, Ended.
  • Contest participation tracking.
  • Score and ranking system structure.

Rewards and Gamification

  • Student points system.
  • Badges.
  • Rewards store.
  • Reward redemption.
  • Student inventory.

Placement Test

  • Multiple-choice questions.
  • Topics include arrays, strings, dynamic programming, graphs, mathematics, sorting, trees, and greedy algorithms.
  • Automatic score calculation.
  • Student level assignment.

User Roles

Student

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.

Coach

A coach can:

  • create an account;
  • manage a coach profile;
  • handle student requests;
  • create problem sets;
  • publish contests;
  • manage students;
  • view dashboard statistics.

Tech Stack

Category Technology
Backend Django
Programming Language Python
Frontend HTML, CSS, JavaScript
UI Framework Bootstrap
Database SQLite3
Architecture Django MVT
Media Handling Django ImageField / Pillow

Project Structure

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

Database Models

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.

Installation

1. Clone the Repository

git clone https://github.com/IDMen/codara-django-platform.git
cd codara-django-platform

2. Create a Virtual Environment

Windows

python -m venv venv
venv\Scripts\activate

macOS / Linux

python3 -m venv venv
source venv/bin/activate

3. Install Dependencies

pip install -r requirements.txt

4. Apply Migrations

python manage.py makemigrations
python manage.py migrate

5. Create an Admin User

python manage.py createsuperuser

6. Optional: Load Placement Questions

If the file inject_placement_questions.py exists in the project, run:

python inject_placement_questions.py

How to Run

Start the development server:

python manage.py runserver

Then open:

http://127.0.0.1:8000/

Admin panel:

http://127.0.0.1:8000/admin/

Useful Commands

# 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 collectstatic

Screenshots

Add screenshots here after pushing the project.

Recommended folder:

assets/screenshots/

Example:

![Landing Page](assets/screenshots/landing-page.png)
![Student Dashboard](assets/screenshots/student-dashboard.png)
![Coach Dashboard](assets/screenshots/coach-dashboard.png)

GitHub Repository Setup

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

Future Improvements

  • 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.

Authors

Developed by:

  • Mohamed Azzouz

Academic year: 2025–2026


License

This project was created for academic and learning purposes.

About

Django competitive programming coaching platform with student/coach dashboards, problem sets, contests, placement tests, and rewards.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors