From c97871d8cb66fdbf513e5ac77cc78770f50817b5 Mon Sep 17 00:00:00 2001 From: Userunknown84 Date: Wed, 20 May 2026 21:24:47 +0530 Subject: [PATCH 1/3] commit --- data/projects.json | 284 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 283 insertions(+), 1 deletion(-) diff --git a/data/projects.json b/data/projects.json index a4f51d8b..7a52428a 100644 --- a/data/projects.json +++ b/data/projects.json @@ -273,7 +273,289 @@ "MDN HTML Forms: https://developer.mozilla.org/en-US/docs/Learn/Forms" ], "starter_code": "starter_code/survey_form/index.html" - } + }, + { + "id": 10, + "title": "AI Powered Interview Platform", + "skills": ["JavaScript", "HTML", "CSS"], + "level": "Advanced", + "interest": "Web", + "time": "High", + "description": "A mock interview platform with webcam recording, speech analysis, timer-based coding rounds, and AI-generated interview feedback. Focuses on browser APIs and advanced frontend workflows.", + "features": [ + "Webcam and microphone recording", + "AI-based speech feedback analysis", + "Coding interview timer", + "Performance analytics dashboard" + ], + "tech_stack": ["HTML", "CSS", "JavaScript", "WebRTC", "Chart.js"], + "roadmap": [ + "Step 1: Build authentication and dashboard UI", + "Step 2: Integrate webcam and microphone using WebRTC", + "Step 3: Create coding challenge interface", + "Step 4: Implement timer and session controls", + "Step 5: Add analytics charts and feedback system", + "Step 6: Optimize media handling and storage", + "Step 7: Deploy and test across browsers" + ], + "resources": [ + "WebRTC docs: https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API", + "Chart.js docs: https://www.chartjs.org/docs", + "MediaDevices API: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices" + ], + "starter_code": "starter_code/interview_platform.html" +}, +{ + "id": 11, + "title": "Multiplayer Browser Game Engine", + "skills": ["JavaScript", "HTML", "CSS"], + "level": "Advanced", + "interest": "Games", + "time": "High", + "description": "A realtime multiplayer browser game engine with player movement, collision detection, matchmaking, and leaderboard systems. Teaches advanced game loops and realtime synchronization.", + "features": [ + "Realtime multiplayer gameplay", + "Physics and collision detection", + "Matchmaking rooms", + "Leaderboard and scoring system" + ], + "tech_stack": ["HTML", "CSS", "JavaScript", "Canvas API", "Socket.IO"], + "roadmap": [ + "Step 1: Create the game rendering engine", + "Step 2: Add player movement and controls", + "Step 3: Implement collision detection logic", + "Step 4: Create websocket server for multiplayer", + "Step 5: Sync game states between players", + "Step 6: Add matchmaking and leaderboard system", + "Step 7: Optimize performance and FPS rendering" + ], + "resources": [ + "Canvas Game Tutorial: https://developer.mozilla.org/en-US/docs/Games", + "Socket.IO multiplayer guide: https://socket.io", + "Game physics basics: https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection" + ], + "starter_code": "starter_code/multiplayer_game.html" +}, +{ + "id": 12, + "title": "Advanced E-Commerce Platform", + "skills": ["JavaScript", "HTML", "CSS"], + "level": "Advanced", + "interest": "Web", + "time": "High", + "description": "A fully featured e-commerce frontend with product filtering, payment integration, realtime inventory updates, and advanced animations. Focuses on scalable frontend architecture.", + "features": [ + "Advanced product filtering and search", + "Shopping cart and checkout flow", + "Realtime inventory updates", + "Responsive admin dashboard" + ], + "tech_stack": ["HTML", "CSS", "JavaScript", "Stripe API", "Firebase"], + "roadmap": [ + "Step 1: Design the storefront UI", + "Step 2: Build dynamic product listing system", + "Step 3: Implement cart and checkout flow", + "Step 4: Integrate Stripe payment gateway", + "Step 5: Add Firebase realtime database", + "Step 6: Build admin analytics dashboard", + "Step 7: Optimize responsiveness and loading speed" + ], + "resources": [ + "Stripe docs: https://stripe.com/docs", + "Firebase docs: https://firebase.google.com/docs", + "MDN Web Performance: https://developer.mozilla.org/en-US/docs/Web/Performance" + ], + "starter_code": "starter_code/ecommerce_platform.html" +}, +{ + "id": 13, + "title": "Task Management Dashboard", + "skills": ["JavaScript", "HTML", "CSS"], + "level": "Intermediate", + "interest": "Web", + "time": "Medium", + "description": "A productivity dashboard that allows users to manage tasks, set deadlines, organize projects, and track progress visually. Focuses on dynamic UI interactions and local data management.", + "features": [ + "Create, edit, and delete tasks", + "Drag-and-drop task organization", + "Progress tracking dashboard", + "Dark and light mode support" + ], + "tech_stack": ["HTML", "CSS", "JavaScript", "LocalStorage API"], + "roadmap": [ + "Step 1: Build the dashboard layout", + "Step 2: Create task cards dynamically", + "Step 3: Implement task CRUD functionality", + "Step 4: Add drag-and-drop support", + "Step 5: Store tasks using LocalStorage", + "Step 6: Create progress analytics section", + "Step 7: Add responsive mobile design" + ], + "resources": [ + "MDN LocalStorage: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage", + "Drag and Drop API: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API", + "CSS Grid guide: https://css-tricks.com/snippets/css/complete-guide-grid" + ], + "starter_code": "starter_code/task_dashboard.html" +}, +{ + "id": 14, + "title": "Realtime Chat Application", + "skills": ["JavaScript", "HTML", "CSS"], + "level": "Intermediate", + "interest": "Web", + "time": "Medium", + "description": "A browser-based chat application with realtime messaging, typing indicators, online user tracking, and responsive chat rooms. Teaches realtime frontend communication concepts.", + "features": [ + "Realtime one-to-one messaging", + "Typing indicators", + "Online/offline user status", + "Responsive chat interface" + ], + "tech_stack": ["HTML", "CSS", "JavaScript", "Socket.IO"], + "roadmap": [ + "Step 1: Build the chat UI layout", + "Step 2: Create message rendering components", + "Step 3: Set up Socket.IO communication", + "Step 4: Implement realtime message sync", + "Step 5: Add typing indicator logic", + "Step 6: Add responsive mobile layout", + "Step 7: Optimize performance and reconnection logic" + ], + "resources": [ + "Socket.IO docs: https://socket.io/docs/v4", + "WebSocket guide: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API", + "Responsive design basics: https://web.dev/responsive-web-design-basics" + ], + "starter_code": "starter_code/realtime_chat.html" +}, +{ + "id": 15, + "title": "Movie Recommendation Web App", + "skills": ["JavaScript", "HTML", "CSS"], + "level": "Intermediate", + "interest": "Web", + "time": "Medium", + "description": "A movie browsing and recommendation app that fetches movie data from an external API and displays trending films, ratings, and search results with an interactive UI.", + "features": [ + "Search movies by title", + "Display trending and popular movies", + "Movie rating and details page", + "Save favorite movies locally" + ], + "tech_stack": ["HTML", "CSS", "JavaScript", "TMDB API"], + "roadmap": [ + "Step 1: Design the movie listing interface", + "Step 2: Integrate the movie API", + "Step 3: Implement search functionality", + "Step 4: Create movie details modal", + "Step 5: Add favorites system with LocalStorage", + "Step 6: Implement pagination", + "Step 7: Optimize responsive design" + ], + "resources": [ + "TMDB API docs: https://developer.themoviedb.org/docs", + "MDN Fetch API: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API", + "CSS animations guide: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations" + ], + "starter_code": "starter_code/movie_app.html" +}, +{ + "id": 16, + "title": "Full Stack Project Management Platform", + "skills": ["SQL", "Node.js", "TypeScript", "React"], + "level": "Intermediate", + "interest": "Web", + "time": "High", + "description": "A collaborative project management platform where teams can create projects, assign tasks, track progress, and communicate in realtime. Focuses on full stack architecture and scalable frontend development.", + "features": [ + "User authentication and authorization", + "Project and task management", + "Realtime notifications", + "Analytics dashboard" + ], + "tech_stack": ["React", "TypeScript", "Node.js", "Express.js", "PostgreSQL"], + "roadmap": [ + "Step 1: Set up React frontend with TypeScript", + "Step 2: Create Express backend and API routes", + "Step 3: Design PostgreSQL database schema", + "Step 4: Implement JWT authentication", + "Step 5: Build task CRUD functionality", + "Step 6: Add realtime notifications using Socket.IO", + "Step 7: Deploy frontend and backend" + ], + "resources": [ + "React docs: https://react.dev", + "TypeScript docs: https://www.typescriptlang.org/docs", + "Node.js docs: https://nodejs.org/en/docs", + "PostgreSQL docs: https://www.postgresql.org/docs" + ], + "starter_code": "starter_code/project_management_platform.tsx" +}, +{ + "id": 17, + "title": "E-Commerce Admin Dashboard", + "skills": ["SQL", "Node.js", "TypeScript", "React"], + "level": "Intermediate", + "interest": "Web", + "time": "Medium", + "description": "An admin dashboard for managing products, orders, customers, and sales analytics in an e-commerce system. Focuses on API integration, database management, and responsive dashboard design.", + "features": [ + "Product inventory management", + "Order tracking system", + "Sales analytics charts", + "Customer management panel" + ], + "tech_stack": ["React", "TypeScript", "Node.js", "MySQL", "Chart.js"], + "roadmap": [ + "Step 1: Create responsive admin dashboard layout", + "Step 2: Design MySQL database schema", + "Step 3: Build REST APIs using Express", + "Step 4: Connect frontend with backend APIs", + "Step 5: Add analytics charts and reports", + "Step 6: Implement role-based authentication", + "Step 7: Optimize performance and API handling" + ], + "resources": [ + "Express.js guide: https://expressjs.com", + "MySQL docs: https://dev.mysql.com/doc", + "Chart.js docs: https://www.chartjs.org/docs", + "React Router docs: https://reactrouter.com" + ], + "starter_code": "starter_code/ecommerce_dashboard.tsx" +}, +{ + "id": 18, + "title": "Realtime Collaboration Notes App", + "skills": ["SQL", "Node.js", "TypeScript", "React"], + "level": "Advanced", + "interest": "Web", + "time": "High", + "description": "A realtime collaborative notes application where multiple users can edit notes simultaneously with autosave, version history, and team collaboration features.", + "features": [ + "Realtime collaborative editing", + "Autosave and version history", + "Team workspace management", + "Markdown support" + ], + "tech_stack": ["React", "TypeScript", "Node.js", "Socket.IO", "PostgreSQL"], + "roadmap": [ + "Step 1: Set up React and TypeScript frontend", + "Step 2: Build Node.js backend APIs", + "Step 3: Design PostgreSQL schema for notes and users", + "Step 4: Implement authentication system", + "Step 5: Add realtime collaboration using Socket.IO", + "Step 6: Implement autosave and history tracking", + "Step 7: Deploy using Docker and cloud hosting" + ], + "resources": [ + "Socket.IO docs: https://socket.io/docs/v4", + "PostgreSQL tutorial: https://www.postgresql.org/docs", + "React TypeScript cheatsheet: https://react-typescript-cheatsheet.netlify.app", + "Docker docs: https://docs.docker.com" + ], + "starter_code": "starter_code/collab_notes_app.tsx" +} ] From be0589259a7f75ffc65d9f47ff2c9df4dc74fd27 Mon Sep 17 00:00:00 2001 From: Userunknown84 Date: Thu, 28 May 2026 14:48:21 +0530 Subject: [PATCH 2/3] commit --- app.py | 3 + data/projects.json | 286 +----------------------------------------- routes/main_routes.py | 87 +++++++------ routes/test_model.py | 6 + static/script.js | 5 + 5 files changed, 67 insertions(+), 320 deletions(-) create mode 100644 routes/test_model.py diff --git a/app.py b/app.py index d7892bd9..2e391357 100644 --- a/app.py +++ b/app.py @@ -10,9 +10,12 @@ # Business logic, recommendation scoring, and data loading all live in # the utils/ and routes/ packages, not here. +import os + from flask import Flask, render_template from routes.main_routes import main + app = Flask(__name__) # Register all routes defined in the main Blueprint diff --git a/data/projects.json b/data/projects.json index 7a52428a..8335275b 100644 --- a/data/projects.json +++ b/data/projects.json @@ -273,290 +273,10 @@ "MDN HTML Forms: https://developer.mozilla.org/en-US/docs/Learn/Forms" ], "starter_code": "starter_code/survey_form/index.html" - }, - { - "id": 10, - "title": "AI Powered Interview Platform", - "skills": ["JavaScript", "HTML", "CSS"], - "level": "Advanced", - "interest": "Web", - "time": "High", - "description": "A mock interview platform with webcam recording, speech analysis, timer-based coding rounds, and AI-generated interview feedback. Focuses on browser APIs and advanced frontend workflows.", - "features": [ - "Webcam and microphone recording", - "AI-based speech feedback analysis", - "Coding interview timer", - "Performance analytics dashboard" - ], - "tech_stack": ["HTML", "CSS", "JavaScript", "WebRTC", "Chart.js"], - "roadmap": [ - "Step 1: Build authentication and dashboard UI", - "Step 2: Integrate webcam and microphone using WebRTC", - "Step 3: Create coding challenge interface", - "Step 4: Implement timer and session controls", - "Step 5: Add analytics charts and feedback system", - "Step 6: Optimize media handling and storage", - "Step 7: Deploy and test across browsers" - ], - "resources": [ - "WebRTC docs: https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API", - "Chart.js docs: https://www.chartjs.org/docs", - "MediaDevices API: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices" - ], - "starter_code": "starter_code/interview_platform.html" -}, -{ - "id": 11, - "title": "Multiplayer Browser Game Engine", - "skills": ["JavaScript", "HTML", "CSS"], - "level": "Advanced", - "interest": "Games", - "time": "High", - "description": "A realtime multiplayer browser game engine with player movement, collision detection, matchmaking, and leaderboard systems. Teaches advanced game loops and realtime synchronization.", - "features": [ - "Realtime multiplayer gameplay", - "Physics and collision detection", - "Matchmaking rooms", - "Leaderboard and scoring system" - ], - "tech_stack": ["HTML", "CSS", "JavaScript", "Canvas API", "Socket.IO"], - "roadmap": [ - "Step 1: Create the game rendering engine", - "Step 2: Add player movement and controls", - "Step 3: Implement collision detection logic", - "Step 4: Create websocket server for multiplayer", - "Step 5: Sync game states between players", - "Step 6: Add matchmaking and leaderboard system", - "Step 7: Optimize performance and FPS rendering" - ], - "resources": [ - "Canvas Game Tutorial: https://developer.mozilla.org/en-US/docs/Games", - "Socket.IO multiplayer guide: https://socket.io", - "Game physics basics: https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection" - ], - "starter_code": "starter_code/multiplayer_game.html" -}, -{ - "id": 12, - "title": "Advanced E-Commerce Platform", - "skills": ["JavaScript", "HTML", "CSS"], - "level": "Advanced", - "interest": "Web", - "time": "High", - "description": "A fully featured e-commerce frontend with product filtering, payment integration, realtime inventory updates, and advanced animations. Focuses on scalable frontend architecture.", - "features": [ - "Advanced product filtering and search", - "Shopping cart and checkout flow", - "Realtime inventory updates", - "Responsive admin dashboard" - ], - "tech_stack": ["HTML", "CSS", "JavaScript", "Stripe API", "Firebase"], - "roadmap": [ - "Step 1: Design the storefront UI", - "Step 2: Build dynamic product listing system", - "Step 3: Implement cart and checkout flow", - "Step 4: Integrate Stripe payment gateway", - "Step 5: Add Firebase realtime database", - "Step 6: Build admin analytics dashboard", - "Step 7: Optimize responsiveness and loading speed" - ], - "resources": [ - "Stripe docs: https://stripe.com/docs", - "Firebase docs: https://firebase.google.com/docs", - "MDN Web Performance: https://developer.mozilla.org/en-US/docs/Web/Performance" - ], - "starter_code": "starter_code/ecommerce_platform.html" -}, -{ - "id": 13, - "title": "Task Management Dashboard", - "skills": ["JavaScript", "HTML", "CSS"], - "level": "Intermediate", - "interest": "Web", - "time": "Medium", - "description": "A productivity dashboard that allows users to manage tasks, set deadlines, organize projects, and track progress visually. Focuses on dynamic UI interactions and local data management.", - "features": [ - "Create, edit, and delete tasks", - "Drag-and-drop task organization", - "Progress tracking dashboard", - "Dark and light mode support" - ], - "tech_stack": ["HTML", "CSS", "JavaScript", "LocalStorage API"], - "roadmap": [ - "Step 1: Build the dashboard layout", - "Step 2: Create task cards dynamically", - "Step 3: Implement task CRUD functionality", - "Step 4: Add drag-and-drop support", - "Step 5: Store tasks using LocalStorage", - "Step 6: Create progress analytics section", - "Step 7: Add responsive mobile design" - ], - "resources": [ - "MDN LocalStorage: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage", - "Drag and Drop API: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API", - "CSS Grid guide: https://css-tricks.com/snippets/css/complete-guide-grid" - ], - "starter_code": "starter_code/task_dashboard.html" -}, -{ - "id": 14, - "title": "Realtime Chat Application", - "skills": ["JavaScript", "HTML", "CSS"], - "level": "Intermediate", - "interest": "Web", - "time": "Medium", - "description": "A browser-based chat application with realtime messaging, typing indicators, online user tracking, and responsive chat rooms. Teaches realtime frontend communication concepts.", - "features": [ - "Realtime one-to-one messaging", - "Typing indicators", - "Online/offline user status", - "Responsive chat interface" - ], - "tech_stack": ["HTML", "CSS", "JavaScript", "Socket.IO"], - "roadmap": [ - "Step 1: Build the chat UI layout", - "Step 2: Create message rendering components", - "Step 3: Set up Socket.IO communication", - "Step 4: Implement realtime message sync", - "Step 5: Add typing indicator logic", - "Step 6: Add responsive mobile layout", - "Step 7: Optimize performance and reconnection logic" - ], - "resources": [ - "Socket.IO docs: https://socket.io/docs/v4", - "WebSocket guide: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API", - "Responsive design basics: https://web.dev/responsive-web-design-basics" - ], - "starter_code": "starter_code/realtime_chat.html" -}, -{ - "id": 15, - "title": "Movie Recommendation Web App", - "skills": ["JavaScript", "HTML", "CSS"], - "level": "Intermediate", - "interest": "Web", - "time": "Medium", - "description": "A movie browsing and recommendation app that fetches movie data from an external API and displays trending films, ratings, and search results with an interactive UI.", - "features": [ - "Search movies by title", - "Display trending and popular movies", - "Movie rating and details page", - "Save favorite movies locally" - ], - "tech_stack": ["HTML", "CSS", "JavaScript", "TMDB API"], - "roadmap": [ - "Step 1: Design the movie listing interface", - "Step 2: Integrate the movie API", - "Step 3: Implement search functionality", - "Step 4: Create movie details modal", - "Step 5: Add favorites system with LocalStorage", - "Step 6: Implement pagination", - "Step 7: Optimize responsive design" - ], - "resources": [ - "TMDB API docs: https://developer.themoviedb.org/docs", - "MDN Fetch API: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API", - "CSS animations guide: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations" - ], - "starter_code": "starter_code/movie_app.html" -}, -{ - "id": 16, - "title": "Full Stack Project Management Platform", - "skills": ["SQL", "Node.js", "TypeScript", "React"], - "level": "Intermediate", - "interest": "Web", - "time": "High", - "description": "A collaborative project management platform where teams can create projects, assign tasks, track progress, and communicate in realtime. Focuses on full stack architecture and scalable frontend development.", - "features": [ - "User authentication and authorization", - "Project and task management", - "Realtime notifications", - "Analytics dashboard" - ], - "tech_stack": ["React", "TypeScript", "Node.js", "Express.js", "PostgreSQL"], - "roadmap": [ - "Step 1: Set up React frontend with TypeScript", - "Step 2: Create Express backend and API routes", - "Step 3: Design PostgreSQL database schema", - "Step 4: Implement JWT authentication", - "Step 5: Build task CRUD functionality", - "Step 6: Add realtime notifications using Socket.IO", - "Step 7: Deploy frontend and backend" - ], - "resources": [ - "React docs: https://react.dev", - "TypeScript docs: https://www.typescriptlang.org/docs", - "Node.js docs: https://nodejs.org/en/docs", - "PostgreSQL docs: https://www.postgresql.org/docs" - ], - "starter_code": "starter_code/project_management_platform.tsx" -}, -{ - "id": 17, - "title": "E-Commerce Admin Dashboard", - "skills": ["SQL", "Node.js", "TypeScript", "React"], - "level": "Intermediate", - "interest": "Web", - "time": "Medium", - "description": "An admin dashboard for managing products, orders, customers, and sales analytics in an e-commerce system. Focuses on API integration, database management, and responsive dashboard design.", - "features": [ - "Product inventory management", - "Order tracking system", - "Sales analytics charts", - "Customer management panel" - ], - "tech_stack": ["React", "TypeScript", "Node.js", "MySQL", "Chart.js"], - "roadmap": [ - "Step 1: Create responsive admin dashboard layout", - "Step 2: Design MySQL database schema", - "Step 3: Build REST APIs using Express", - "Step 4: Connect frontend with backend APIs", - "Step 5: Add analytics charts and reports", - "Step 6: Implement role-based authentication", - "Step 7: Optimize performance and API handling" - ], - "resources": [ - "Express.js guide: https://expressjs.com", - "MySQL docs: https://dev.mysql.com/doc", - "Chart.js docs: https://www.chartjs.org/docs", - "React Router docs: https://reactrouter.com" - ], - "starter_code": "starter_code/ecommerce_dashboard.tsx" -}, -{ - "id": 18, - "title": "Realtime Collaboration Notes App", - "skills": ["SQL", "Node.js", "TypeScript", "React"], - "level": "Advanced", - "interest": "Web", - "time": "High", - "description": "A realtime collaborative notes application where multiple users can edit notes simultaneously with autosave, version history, and team collaboration features.", - "features": [ - "Realtime collaborative editing", - "Autosave and version history", - "Team workspace management", - "Markdown support" - ], - "tech_stack": ["React", "TypeScript", "Node.js", "Socket.IO", "PostgreSQL"], - "roadmap": [ - "Step 1: Set up React and TypeScript frontend", - "Step 2: Build Node.js backend APIs", - "Step 3: Design PostgreSQL schema for notes and users", - "Step 4: Implement authentication system", - "Step 5: Add realtime collaboration using Socket.IO", - "Step 6: Implement autosave and history tracking", - "Step 7: Deploy using Docker and cloud hosting" - ], - "resources": [ - "Socket.IO docs: https://socket.io/docs/v4", - "PostgreSQL tutorial: https://www.postgresql.org/docs", - "React TypeScript cheatsheet: https://react-typescript-cheatsheet.netlify.app", - "Docker docs: https://docs.docker.com" - ], - "starter_code": "starter_code/collab_notes_app.tsx" -} + } ] + + diff --git a/routes/main_routes.py b/routes/main_routes.py index 5cb34592..d14df92a 100644 --- a/routes/main_routes.py +++ b/routes/main_routes.py @@ -3,12 +3,19 @@ # Each route is kept thin: it validates input, calls a utility function, # and returns a response. No business logic lives here. +import json + from flask import Blueprint, render_template, request, jsonify, send_from_directory, abort from utils.recommender import get_recommendations, validate_recommendation_inputs from utils.data_loader import find_project_by_id, get_project_stats from utils.file_server import read_starter_code, resolve_starter_file, get_starter_code_dir import os +from groq import Groq +from dotenv import load_dotenv + +load_dotenv() +groq_client = Groq(api_key=os.environ["GROQ_API_KEY"]) # Create the Blueprint that app.py will register main = Blueprint("main", __name__) @@ -31,46 +38,52 @@ def health_check(): }), 200 + @main.route("/api/recommend", methods=["POST"]) def recommend(): - """ - Accept a JSON body with user inputs and return matching project recommendations. - - Expected JSON fields: - skills (str) - comma-separated list of skills - level (str) - Beginner | Intermediate | Advanced - interest (str) - Web | Data | Education | Automation | Games - time (str) - Low | Medium | High - """ - payload = request.get_json() - - if not payload: - return jsonify({"error": "Request body must be valid JSON."}), 400 - - skills = payload.get("skills", "").strip() - level = payload.get("level", "").strip() - interest = payload.get("interest", "").strip() - time_availability = payload.get("time", "").strip() - - # Validate before running the recommendation engine - errors = validate_recommendation_inputs(skills, level, interest, time_availability) - if errors: - # Return only the first error to keep the UI message clean - return jsonify({"error": errors[0]}), 400 - - results = get_recommendations(skills, level, interest, time_availability) - - if not results: + try: + data = request.json or {} + skills = data.get("skills", "") + level = data.get("level", "") + interest = data.get("interest", "") + time = data.get("time", "") + + prompt = f"""Generate 3 UNIQUE coding projects. +Return ONLY a raw JSON array like this: +[ + {{ + "id": 1, + "title": "Project name", + "description": "What it does", + "skills": ["skill1", "skill2"], + "level": "{level}", + "time": "{time}" + }} +] + +Skills: {skills} +Level: {level} +Interest: {interest} +Time: {time}""" + + response = groq_client.chat.completions.create( + model="llama-3.3-70b-versatile", # ye use karo + messages=[{"role": "user", "content": prompt}] + ) + raw = response.choices[0].message.content.strip() + raw = raw.replace("```json", "").replace("```", "").strip() + projects = json.loads(raw) + + return jsonify({"projects": projects, "source": "ai"}) + + except Exception as e: + results = get_recommendations(skills, level, interest, time) return jsonify({ - "projects": [], - "message": ( - "No projects matched your inputs. " - "Try different skills or broaden your interest area." - ) - }), 200 - - return jsonify({"projects": results}), 200 - + "projects": results, + "source": "stored", + "error": str(e) + }) + @main.route("/project/") def project_detail(project_id): diff --git a/routes/test_model.py b/routes/test_model.py new file mode 100644 index 00000000..665f7c31 --- /dev/null +++ b/routes/test_model.py @@ -0,0 +1,6 @@ +from google import genai + +client = genai.Client(api_key="AIzaSyCk-GdXq8a6pFhQcRSqeCO1oBS-0WKN8Cs") # paste your actual key here + +for model in client.models.list(): + print(model.name) \ No newline at end of file diff --git a/static/script.js b/static/script.js index 3a1141aa..84a03e89 100644 --- a/static/script.js +++ b/static/script.js @@ -589,6 +589,11 @@ if (isIndexPage) { link.href = "/project/" + project.id; //each project has a unique id footer.appendChild(link); + + +// Add starter code block +var codeBlock = document.createElement("pre"); +codeBlock.textContent = project.code || ""; // Assemble the card in order card.appendChild(title); From 7a1d75698dc8e91049d038974d6d8d3d051c4a01 Mon Sep 17 00:00:00 2001 From: Aditya Sharma <146428217+Userunknown84@users.noreply.github.com> Date: Thu, 28 May 2026 14:50:05 +0530 Subject: [PATCH 3/3] Delete routes/test_model.py --- routes/test_model.py | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 routes/test_model.py diff --git a/routes/test_model.py b/routes/test_model.py deleted file mode 100644 index 665f7c31..00000000 --- a/routes/test_model.py +++ /dev/null @@ -1,6 +0,0 @@ -from google import genai - -client = genai.Client(api_key="AIzaSyCk-GdXq8a6pFhQcRSqeCO1oBS-0WKN8Cs") # paste your actual key here - -for model in client.models.list(): - print(model.name) \ No newline at end of file