I built a web tool designed to make life easier for Pygame developers: the Pygame Code Inspector.
Instead of running a game script, waiting for it to crash, or spending hours searching for sneaky performance bugs, you can just paste your Python code directly into the app. It uses Python’s built-in ast (Abstract Syntax Tree) module to parse your code safely without executing it. In seconds, it checks for missing initialization/quit calls, unmonitored infinite loops, hardcoded window sizes, uncapped frame rates, and memory leaks from unused assets. Then, it gives your project a clean Code Health Score (0–100) and a letter grade (A through F) so you immediately know what to fix.
🛠️ What Was Challenging
Safe Code Parsing: Getting the ast visitor logic working to reliably detect anti-patterns—like unmonitored while loops or dangling pygame.mixer assets—without actually running user-submitted code required careful structural logic.
Deployment Realities: Uploading the project to GitHub threw a few curveballs! I accidentally dragged an entire virtual environment folder with thousands of extra files at first, and later hit a tricky ModuleNotFoundError on Streamlit Cloud caused by a subtle uppercase/lowercase mismatch in my filenames (Code_Checker.py vs. code_checker.py). Diagnosing and fixing environment issues in Linux deployment environments was a huge learning moment.
✨ What I’m Proud Of
Zero-Setup Web Access: Turning a local Python script into a fully hosted, interactive web application on Streamlit Cloud that anyone can access in their browser with zero local setup.
Actionable Developer Feedback: Creating a tool that isn’t just a basic syntax checker, but an actual quality-of-life upgrade for game devs that translates technical code analysis into an easy-to-understand score and grade.
Full Open-Source Setup: Shipping the full package from scratch—clean repo structure, proper requirements.txt, clear README documentation, and an MIT License.
-summary created by gemini because im too lazy to write
- 2 devlogs
- 3h
- Frictionless