Final Year Project
01
AI · Civic Tech · Full-Stack
Local Lens
A full-stack civic-reporting platform that lets residents photograph local council issues — potholes, broken lighting, fly-tipping — and have Claude Vision AI automatically pre-fill the structured report. Councils get a dashboard with a priority queue surfacing the most urgent issues, bulk management tools, and a resident account system.
Claude API
Python
Streamlit
Supabase
Docker
Folium
Pandas
Pillow
pytest
View on GitHub
- Custom 0–100 priority scoring engine combining AI severity, time-open, community upvotes, and local report density
- SHA-256 image hashing prevents exact-duplicate submissions; Haversine proximity checks surface nearby similar reports
- Reporter cooldown system blocks repeat submissions within 4 days, preventing abuse
- GPS extracted from EXIF metadata with Nominatim geocoding fallback; interactive heatmap, pin, and cluster map modes
- SMTP email notifications on report status changes; Supabase auth, cloud storage & relational database
02
Java · Robotics · Top Grade
SwiftBot Navigation
Programmed a physical robot to parse QR code navigation commands and execute real-world movement sequences. Awarded top marks at university for clean architecture, input validation, and movement retracing — demonstrating ability to deliver under assessment pressure.
Java
QR Parsing
OOP
Hardware Integration
- Configurable speed & duration per command with full input validation
- T-command for movement retracing (reversal logic)
- Command logging to file for audit trails and debugging
03
Python · Automation · Desktop Tool
File Organiser Bot
A desktop automation tool with a Tkinter GUI that recursively organises any directory by file type, modification date (year/month/week), and sub-category. Handles duplicates intelligently, tracks progress live, and optionally cleans up empty folders post-run.
Python
Tkinter
tqdm
Regex
os / shutil
- Regex-based duplicate detection quarantines conflicting files safely
- Live progress bar with real-time feedback on files processed
- Sub-category sorting: Word, PDF, Excel, PowerPoint, and more
04
C# · Windows UWP · UI/UX
College Mobile App
Multi-screen Windows UWP application for Stanmore College featuring user authentication, personalised timetables, cafeteria menus, department pages, and assignment tracking. Demonstrates cross-platform UI development in a different tech stack.
C#
XAML
Windows UWP
05
Java · Game Dev · Swing
Snake Game
Classic arcade Snake built with Java Swing. Features a welcome screen, color chooser for the snake, pause/resume, sound effects, on-screen scoreboard, and a play-again flow. Designed with an explicit game loop and collision detection for a smooth desktop experience.
Java
Swing / AWT
OOP
Game Loop
- Welcome + start screen with instructions and a color chooser for the snake
- Arrow-key controls, `P` to pause/resume, and responsive game loop timing
- Food spawning that avoids the snake body, sound effects for eat/game-over, and an on-screen high-score
06
Python · API Integration · Desktop
Currency Converter
Fetches real-time and historical exchange rates via API, converts between currencies, and plots trend charts with Matplotlib. Implements smart caching and exponential-backoff retry for resilient API usage.
Python
Tkinter
Matplotlib
requests
JSON Caching
07
Python · Security · Desktop Tool
Password Generator
Tkinter desktop utility using Python's `secrets` for cryptographic-strength passwords. Offers configurable length and minimum counts per character type, a live strength progress bar, copy-to-clipboard and save-to-file features, plus a simple expiration reminder entry.
Python
secrets module
Tkinter
Security
- Cryptographic randomness via `secrets` with minimum-type enforcement to avoid weak passwords
- GUI features: tooltips, strength progress bar, copy-to-clipboard and save-to-`passwords.txt` with timestamp
- Generates a simple expiration reminder entry when a password is produced
08
Python · Image Processing · Tool
QR Code Generator
Feature-rich QR code generator with custom fill and background colours, logo embedding via Pillow, four error-correction levels, optional frame text, and PNG/JPEG export. Built with a clean Tkinter interface.
Python
qrcode
Pillow
Tkinter
09
Python · CLI · API
Weather App
Lightweight CLI weather lookup using the OpenWeatherMap API. Accepts multiple comma-separated city names, supports Celsius or Fahrenheit units, and prints temperature, humidity, wind speed and a short weather description per city with basic error handling.
Python
requests
OpenWeatherMap API
CLI
- Batch queries for multiple cities with unit selection (°C / °F)
- Parses and displays temp, humidity, wind speed and human-readable weather text
- Handles API errors and invalid city names with clear messages
10
Python · NLP · CLI Tool
Simple Translator
Python translation tool supporting 100+ languages via Google Translate API with an in-memory cache for reducing repeat API calls. Dual interface: interactive mode and direct CLI arguments for scripting.
Python
googletrans
CLI / Interactive
Caching
11
Python · Game · Persistence
Rock Paper Scissors
Tkinter GUI Rock Paper Scissors with player name customisation, live score tracking, JSON persistence (`scores.json`), best-of-3 win condition, and save/restart/reset controls. Includes simple UX touches like emoji buttons and champion messages.
Python
Tkinter
JSON
- Best-of-3 match logic with automatic disabling of choice buttons on match end
- Persistent scores saved to `scores.json` and player-name entry with save/reset features
- Simple UI polish: emoji-labelled buttons and champion notifications
12
JavaScript · Web · Generator
Portfolio Generator
Browser-based portfolio generator where users fill in personal details, experience, education, and skills, then export the result as a downloadable PDF using html2pdf.js. Supports dynamic addition of multiple experience and education entries.
JavaScript
HTML/CSS
html2pdf.js
Dynamic DOM