Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions data/clusters.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"k": 3,
"clusters": {
"1": 0,
"2": 1,
"3": 0,
"4": 2,
"5": 1,
"6": 2,
"7": 2,
"8": 0,
"9": 1,
"10": 2,
"11": 0,
"12": 0,
"13": 1,
"14": 0,
"15": 1,
"16": 2,
"17": 2,
"18": 1,
"19": 2
},
"members": {
"0": [
1,
3,
8,
11,
12,
14
],
"1": [
2,
5,
9,
13,
15,
18
],
"2": [
4,
6,
7,
10,
16,
17,
19
]
}
}
214 changes: 181 additions & 33 deletions data/projects.json
Original file line number Diff line number Diff line change
Expand Up @@ -416,35 +416,26 @@
"starter_code": "starter_code/survey_form/index.html"
},
{
"id": 12,
"id": 10,
"title": "API ETL Pipeline",
"skills": [
"Python",
"pandas",
"requests"
],
"skills": ["Python", "pandas", "requests"],
"level": "Intermediate",
"interest": "Data",
"time": "Medium",
"description": "Enter a public API URL to fetch data and automatically transform it into a structured CSV dataset.",
"features": [
"Fetch data from public APIs",
"handle missing values",
"Handle missing values",
"Normalize nested JSON",
"Generate summary statistics",
"Export the processed CSV for any other Analytics projects"
],
"tech_stack": [
"Python",
"pandas",
"requests",
"JSON"
"Export the processed CSV for any other analytics projects"
],
"tech_stack": ["Python", "pandas", "requests", "JSON"],
"roadmap": [
"Step 1: Install required modules via pip",
"Step 2: Find a public API key for this project",
"Step 3: Fetch the data from the API using requests",
"Step 4: Validate the response you just fetched From the API",
"Step 4: Validate the response you just fetched from the API",
"Step 5: Normalize the nested JSON data by flattening it",
"Step 6: Use the fetched data to build a pandas dataframe",
"Step 7: Handle missing values or duplicate values",
Expand Down Expand Up @@ -512,7 +503,7 @@
"starter_code": "starter_code/ai_resume_analyzer.py"
},
{
"id": 14,
"id": 11,
"title": "Number Guessing Game",
"skills": [
"Python"
Expand Down Expand Up @@ -548,7 +539,7 @@
"starter_code": "starter_code/number_guessing.py"
},
{
"id": 15,
"id": 12,
"title": "Simple Email Automation",
"skills": [
"Python"
Expand Down Expand Up @@ -585,7 +576,7 @@
"starter_code": "starter_code/email_automation.py"
},
{
"id": 16,
"id": 13,
"title": "Quiz App",
"skills": [
"HTML",
Expand Down Expand Up @@ -625,34 +616,191 @@
"starter_code": "starter_code/quiz_app.html"
},
{
"id": 17,
"id": 14,
"title": "File Organiser Script",
"skills": ["Python"],
"level": "Beginner",
"interest": "Automation",
"time": "Low",
"description": "A command-line script that sorts files in a folder into subfolders by file extension (Images, Documents, Videos, etc.). Great for learning the os and shutil modules and writing your first automation tool.",
"description": "A Python script that scans a folder and automatically sorts files into subfolders by type — images, documents, videos, code files. Great for learning os and shutil modules.",
"features": [
"Scan a target folder for files",
"Group files by extension into category subfolders",
"Skip already-sorted files and folders",
"Print a summary of files moved per category"
"Detect file type by extension",
"Create subfolders automatically",
"Move files into the correct folder",
"Print a summary of what was moved"
],
"tech_stack": ["Python", "os module", "shutil module", "pathlib"],
"tech_stack": ["Python", "os module", "shutil module"],
"roadmap": [
"Step 1: Set up the Python file and import os, shutil, pathlib",
"Step 2: Define a mapping of extensions to category folders",
"Step 3: List all files in the target directory",
"Step 4: Determine each file's category from its extension",
"Step 5: Create category subfolders if they do not exist",
"Step 6: Move each file into its category folder using shutil.move",
"Step 7: Print a summary count of files moved per category"
"Step 1: Import os and shutil",
"Step 2: Define a dictionary mapping extensions to folder names",
"Step 3: Loop through files in the target directory",
"Step 4: Check each file's extension",
"Step 5: Create the destination folder if it doesn't exist",
"Step 6: Move the file using shutil.move()",
"Step 7: Print a summary of moved files"
],
"resources": [
"Python os module: https://docs.python.org/3/library/os.html",
"Python shutil module: https://docs.python.org/3/library/shutil.html",
"Python pathlib guide: https://docs.python.org/3/library/pathlib.html"
"Real Python file handling: https://realpython.com/working-with-files-in-python"
],
"starter_code": "starter_code/file_organiser.py"
},
{
"id": 15,
"title": "Flashcard Study App",
"skills": ["HTML", "CSS", "JavaScript"],
"level": "Beginner",
"interest": "Education",
"time": "Low",
"description": "A browser-based flashcard app where users can flip cards to reveal answers. Reinforces DOM manipulation, CSS transitions, and basic data storage in JavaScript.",
"features": [
"Flip card animation on click",
"Navigate between cards",
"Track how many cards reviewed",
"Shuffle deck order"
],
"tech_stack": ["HTML", "CSS", "JavaScript"],
"roadmap": [
"Step 1: Create the card HTML structure with front and back faces",
"Step 2: Write CSS for the 3D flip animation",
"Step 3: Store flashcard data as a JavaScript array",
"Step 4: Render the current card from the array",
"Step 5: Add click handler to trigger the flip",
"Step 6: Add next/previous navigation buttons",
"Step 7: Implement the shuffle function"
],
"resources": [
"CSS 3D transforms: https://developer.mozilla.org/en-US/docs/Web/CSS/transform",
"JavaScript arrays: https://javascript.info/array",
"W3Schools CSS: https://www.w3schools.com/css"
],
"starter_code": "starter_code/flashcard_app.html"
},
{
"id": 16,
"title": "Budget Tracker Web App",
"skills": ["HTML", "CSS", "JavaScript"],
"level": "Intermediate",
"interest": "Data",
"time": "Medium",
"description": "A browser-based personal finance tracker that lets users add income and expense entries and visualises the balance over time with a simple chart.",
"features": [
"Add income and expense entries",
"Show running balance",
"Colour-code entries by type",
"Render a bar chart of monthly totals"
],
"tech_stack": ["HTML", "CSS", "JavaScript", "Chart.js"],
"roadmap": [
"Step 1: Build the HTML form for adding entries",
"Step 2: Store entries in a JavaScript array",
"Step 3: Render the entry list dynamically",
"Step 4: Calculate and display the running balance",
"Step 5: Group entries by month for chart data",
"Step 6: Import Chart.js via CDN",
"Step 7: Render a bar chart using the monthly totals",
"Step 8: Add delete functionality for individual entries"
],
"resources": [
"Chart.js docs: https://www.chartjs.org/docs/latest",
"MDN DOM: https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model",
"JavaScript arrays: https://javascript.info/array"
],
"starter_code": "starter_code/budget_tracker.html"
},
{
"id": 17,
"title": "Network Port Scanner",
"skills": ["Python"],
"level": "Intermediate",
"interest": "Cybersecurity",
"time": "Medium",
"description": "A Python tool that scans a target host for open ports within a given range. Teaches socket programming, threading for speed, and basic network concepts.",
"features": [
"Accept host and port range as input",
"Check each port using sockets",
"Display open ports with service names",
"Use threading to speed up scanning"
],
"tech_stack": ["Python", "socket module", "threading module"],
"roadmap": [
"Step 1: Import socket and threading modules",
"Step 2: Write a function to test a single port",
"Step 3: Loop through the port range and test each",
"Step 4: Add threading to run scans concurrently",
"Step 5: Map common ports to service names",
"Step 6: Display results sorted by port number",
"Step 7: Add input validation for host and port range"
],
"resources": [
"Python socket docs: https://docs.python.org/3/library/socket.html",
"Python threading: https://docs.python.org/3/library/threading.html",
"OWASP testing guide: https://owasp.org/www-project-web-security-testing-guide"
],
"starter_code": "starter_code/port_scanner.py"
},
{
"id": 18,
"title": "Typing Speed Test",
"skills": ["HTML", "CSS", "JavaScript"],
"level": "Beginner",
"interest": "Games",
"time": "Medium",
"description": "A browser-based typing test that measures words per minute and accuracy. Great for practising timers, string comparison, and dynamic DOM updates.",
"features": [
"Display a random passage to type",
"Start timer on first keypress",
"Highlight correct and incorrect characters in real time",
"Show WPM and accuracy on completion"
],
"tech_stack": ["HTML", "CSS", "JavaScript"],
"roadmap": [
"Step 1: Store a list of sample passages",
"Step 2: Display a random passage in the UI",
"Step 3: Listen for keypress events in the input field",
"Step 4: Start the timer on the first keypress",
"Step 5: Compare typed characters to the passage character by character",
"Step 6: Highlight correct characters green and errors red",
"Step 7: Stop the timer when the passage is complete",
"Step 8: Calculate and display WPM and accuracy"
],
"resources": [
"JavaScript timers: https://developer.mozilla.org/en-US/docs/Web/API/setInterval",
"JavaScript string methods: https://javascript.info/string",
"MDN keyboard events: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent"
],
"starter_code": "starter_code/typing_test.html"
},
{
"id": 19,
"title": "Course Progress Tracker",
"skills": ["Python"],
"level": "Intermediate",
"interest": "Education",
"time": "Medium",
"description": "A CLI tool to track progress through online courses. Users can add courses, mark lessons complete, and see a visual progress bar per course.",
"features": [
"Add courses with a total lesson count",
"Mark individual lessons as complete",
"Display a text progress bar per course",
"Save and load state from a JSON file"
],
"tech_stack": ["Python", "json module", "os module"],
"roadmap": [
"Step 1: Define the course data structure",
"Step 2: Write add_course() and add_lesson() functions",
"Step 3: Implement mark_complete() logic",
"Step 4: Build a text progress bar renderer",
"Step 5: Write JSON save and load functions",
"Step 6: Create a menu loop for user interaction",
"Step 7: Display all courses with progress on startup"
],
"resources": [
"Python JSON module: https://docs.python.org/3/library/json.html",
"Real Python CLI apps: https://realpython.com/command-line-interfaces-python-argparse",
"Python os module: https://docs.python.org/3/library/os.html"
],
"starter_code": "starter_code/course_tracker.py"
}
]
Loading
Loading