Inspiration Last semester in my Python course, half the class lost points on style and documentation because there was no quick way to check code quality before submission. I wanted a tool that gives instant, visual feedback across the dimensions that actually matter in grading — not just "does it run."
What I learned I dove deep into Python's ast module and learned how to extract meaningful metrics from parse trees. Cyclomatic complexity, Halstead volume, docstring coverage — these aren't just academic concepts when you're actually computing them line by line. I also got hands-on with Flask's routing and learned how Content Security Policies can silently break everything if you miss one directive.
How I built it The backend is a Flask server with six independent analyzer modules, each scoring a different quality dimension. The grader engine applies weighted averages (style 25%, complexity 20%, maintainability 20%, documentation 15%, safety 10%, typing 10%) and maps the result to an A+ through F letter grade. A SQLite database stores reports for the leaderboard and shareable links. The frontend uses Chart.js for radar visualization and IntersectionObserver for scroll-triggered animations.
Challenges The hardest part was the safety analyzer — distinguishing genuine hardcoded secrets from innocent variable names without producing false positives. I iterated through several regex approaches before settling on pattern scoring with context-aware checks. The CSP issue that broke CSS/JS loading took longer than I'd like to admit to debug.
Log in or sign up for Devpost to join the conversation.