{"slug": "how-i-finished-my-ai-code-reviewer-using-github-copilot", "title": "How I Finished My AI Code Reviewer Using GitHub Copilot", "summary": "A developer built Bugloo, a free AI code reviewer for students that analyzes code snippets for bugs, style issues, and improvements using FastAPI, Supabase, and Groq's llama3-70b-8192 model. The project was completed as part of the GitHub Finish-Up-A-Thon Challenge, with GitHub Copilot assisting in writing error-handling functions that convert raw Supabase and Groq error messages into human-readable responses. Bugloo is now live at bugloo.vercel.app with features including automatic language detection, user dashboards, and API documentation.", "body_md": "*This is a submission for the GitHub Finish-Up-A-Thon Challenge*\n\nIn college, nobody really reviews your code. You submit assignments, get a grade, and move on. There's no one telling you \"this function is doing too much\" or \"you're ignoring this edge case.\" I got tired of that, so I built Bugloo.\n\nBugloo is a free AI code reviewer for students. Paste any snippet, in any language, and you get back a breakdown of bugs, style issues, improvements, a quality score, and a plain-English explanation of what your code is actually doing. The whole thing runs on FastAPI, Supabase, and Groq's `llama3-70b-8192`\n\n, all free tier, no credit card.\n\n**Live demo: bugloo.vercel.app**\n\n*Home Page — paste your code and the language is detected automatically*\n\n*Review Output — bugs, style issues, improvements, and a quality score in one shot*\n\n*Dashboard — every review you've run, saved to your account*\n\n*API Docs — auto-generated by FastAPI, all endpoints documented out of the box*\n\nHonest version of where this project started: it worked on my laptop, barely. The Groq integration was functional but the rest was a mess. No real auth flow, raw Supabase error objects printing directly to the UI, manual language selection that nobody would actually use, and `.pyc`\n\nfiles committed to Git like I had no shame.\n\nI knew what I wanted to build. I just kept hitting friction and leaving it half-done.\n\nHere's what I actually finished for this challenge:\n\n`highlight.js`\n\nto detect the language as you type. A badge updates in real time. Nobody has to pick from a dropdown.`get_current_user`\n\ndependency on every protected route.`.env.example`\n\n, set up `render.yaml`\n\nfor deployment.Before this challenge it was a prototype I was embarrassed to share. Now it's something I'd actually put in front of a recruiter.\n\n```\nUser pastes code\n      ↓\nhighlight.js detects language (client-side)\n      ↓\nPOST /api/review → FastAPI\n      ↓\nGroq API (llama3-70b-8192) analyzes code\n      ↓\nStructured JSON response parsed\n      ↓\nReview saved to Supabase + displayed to user\n```\n\nI used Copilot mostly for the stuff I kept putting off because it felt tedious.\n\nThe error mapper was the clearest example. I needed a function that takes raw Supabase and Groq error messages and returns something a human can read. I wrote two cases by hand, Copilot filled in the rest. I just checked it over and adjusted a few strings.\n\n``` php\ndef map_auth_error(error_msg: str) -> str:\n    msg_lower = error_msg.lower()\n    if any(term in msg_lower for term in [\"connection\", \"network\", \"timeout\", \"offline\", \"cannot connect\", \"failed to connect\", \"unreachable\"]):\n        return \"Authentication service is unavailable. Please try again shortly.\"\n    if \"invalid login credentials\" in msg_lower or \"invalid_credentials\" in msg_lower:\n        return \"Incorrect email or password. Please try again.\"\n    if \"already registered\" in msg_lower or \"user_already_exists\" in msg_lower:\n        return \"An account with this email already exists. Try logging in.\"\n    if \"weak_password\" in msg_lower or \"password should be at least\" in msg_lower:\n        return \"Password must be at least 8 characters.\"\n    if \"invalid_email\" in msg_lower or \"valid email\" in msg_lower:\n        return \"Please enter a valid email address.\"\n    return \"Something went wrong. Please try again.\"\n\ndef map_groq_error(status_code: int, error_msg: str) -> dict:\n    if status_code == 400:\n        return {\"status\": 400, \"message\": \"Please paste at least 10 characters of code.\"}\n    elif status_code == 504:\n        return {\"status\": 504, \"message\": \"The AI took too long to respond. Please try again.\"}\n    elif status_code == 429:\n        return {\"status\": 429, \"message\": \"You've hit the rate limit. Please wait 30 seconds and try again.\"}\n    elif status_code == 503:\n        return {\"status\": 503, \"message\": \"Couldn't reach the AI service. Check your connection and retry.\"}\n    else:\n        return {\"status\": 500, \"message\": \"Internal configuration error. Please contact the admin.\"}\n```\n\nPrompt engineering was another area where Copilot saved me real time. Getting Groq to consistently return clean JSON without markdown fences or any extra text took more iteration than I expected. Copilot helped me try variations faster than I could write them myself.\n\nThe `highlight.js`\n\ndebounce logic for the language detection badge was also Copilot-assisted. JavaScript isn't where I'm strongest and I was avoiding that part. I described the behavior, it gave me a working implementation, I read through it, tweaked it, and moved on.\n\nMainly what Copilot gave me was speed on the parts I was putting off. Once those were done the project actually started feeling finished.\n\nBuilt and maintained by [Mohit Pandey](https://github.com/mohitpandeycs)", "url": "https://wpnews.pro/news/how-i-finished-my-ai-code-reviewer-using-github-copilot", "canonical_source": "https://dev.to/mohitpandeycs/how-i-finished-my-ai-code-reviewer-using-github-copilot-18d6", "published_at": "2026-05-27 21:54:11+00:00", "updated_at": "2026-05-27 22:10:39.131402+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "large-language-models", "generative-ai", "artificial-intelligence"], "entities": ["GitHub Copilot", "Bugloo", "FastAPI", "Supabase", "Groq", "llama3-70b-8192", "Vercel", "highlight.js"], "alternates": {"html": "https://wpnews.pro/news/how-i-finished-my-ai-code-reviewer-using-github-copilot", "markdown": "https://wpnews.pro/news/how-i-finished-my-ai-code-reviewer-using-github-copilot.md", "text": "https://wpnews.pro/news/how-i-finished-my-ai-code-reviewer-using-github-copilot.txt", "jsonld": "https://wpnews.pro/news/how-i-finished-my-ai-code-reviewer-using-github-copilot.jsonld"}}