My Projects

A collection of my recent work showcasing my frontend development skills

My World Clock App showing multiple timezone displays with purple gradient interface

My World Clock App

A responsive world clock application built with vanilla JavaScript that displays real-time information across multiple global time zones simultaneously. The app features automatic location detection using the browser's Geolocation API and provides a searchable dropdown of major cities organised by continent.

Key Features

  • Automatic location detection using Geolocation API
  • Searchable dropdown with cities organised by continent
  • Real-time updates every second with smooth transitions
  • Displays both 12-hour and 24-hour time formats
  • Fully responsive design across all devices

Technical Highlights

  • DOM Manipulation: Dynamic updates without page reloads
  • Event Handling: Change listeners for interactive city selection
  • Time Libraries: Moment.js and Moment Timezone for accurate conversions
  • Semantic HTML: Organized select elements with optgroup tags
HTML5 CSS3 JavaScript ES6 Moment.js Moment Timezone Geolocation API Git/GitHub Netlify
My Vanilla Weather App showing real-time weather interface with forecasts

My Weather App

A clean, modern weather application built entirely with vanilla JavaScript that provides real-time weather data and multi-day forecasts using the OpenWeatherMap API. The app features automatic location detection, global city search, and displays comprehensive weather metrics including temperature, humidity, wind speed, and descriptive conditions.

Key Features

  • Real-time weather data using OpenWeatherMap API
  • 5-day forecast with daily high/low temperatures
  • Automatoc location detection via Geolocation API
  • City search for any location worldwide
  • Dark/light theme toggle for user preference
  • Comprehensive metrics: humidity, wind speed, visibility

Technical Highlights

  • API Integration: OpenWeatherMap Current Weather & 5-Day Forecast APIs
  • Async/Await: Modern asynchronous JavaScript for API calls
  • Error Handling: Manages failed requests and invalid searches
  • Theme Management: CSS variables for dark/light mode switching
HTML5 CSS3 JavaScript ES6 OpenWeatherMap API Geolocation API Axios/Fetch API VS Code Git/GitHub Netlify
My Recipe Creator App interface with AI-powered recipe generation

My Recipe Creator App

An AI-powered recipe generator that transforms user-provided ingredients into complete, healthy, budget-friendly recipes using the SheCodes AI API. This application demonstrates advanced API integration by sending ingredient lists to an AI model and parsing the structured response to display comprehensive recipe information, including ingredients, instructions, cooking time, and serving suggestions.

Key Features

  • AI-generated recipes based on available ingredients
  • Smart prompt engineering for healthy, budget-friendly meals
  • Complete recipe display with instructions and cooking times
  • Typewriter effect for engaging content reveal
  • Input validation and loading states

Technical Highlights

  • AI Integration: SheCodes AI API with proper authentication
  • Prompt Engineering: Crafted prompts for consistent outputs
  • String Parsing: Processes AI-generated text for displays
  • Form Handling: User input validation and submission management
HTML5 CSS3 JavaScript ES6 SheCodes AI API Axios/Fetch API API Authentication Git/GitHub Netlify
My AI Poem Generator App interface with creative poetry generation interface

My AI Poem Generator App

A creative writing application that leverages artificial intelligence to generate unique, romantic poems based on user-provided topics and themes. Built with the SheCodes AI API, this project demonstrates proficiency in AI integration, prompt engineering, and creating engaging user experiences with an elegant typewriter effect that reveals poetry line by line.

Key Features

  • AI-powered poetry generation using SheCodes AI API
  • Custom topic input for personalized poems
  • Romantic verse specialization
  • Typewriter animation for dramatic reveal
  • Clean, minimalist interface focused on content

Technical Highlights

  • Prompt Engineering: Crafted prompts for poetic, consistent output
  • Animation: JavaScript-based typewriter effect with timing control
  • Async Operations: Promise handling for API responses
  • UI/UX: Engaging visual feedback during generation
HTML5 CSS3 JavaScript ES6 SheCodes AI API Axios/Fetch API API Authentication Git/GitHub Netlify
My AI Travel Itinerary App interface - Python-based travel planning assistant

My AI Travel Itinerary App

An intelligent command-line travel planning assistant built in Python that creates personalized trip itineraries by combining real-time weather data with AI-generated recommendations. This project demonstrates advanced Python programming concepts including object-oriented design, API integration, and terminal-based UI enhancement using the Rich library for beautiful, colourful output.

Key Features

  • Interactive command-line interface for travel planning
  • Dual API integration: OpenWeather + AI generation
  • Weather-aware itinerary generation
  • Rich library for colourful terminal output
  • Supports custom trip duration and provides estimated cost

Technical Highlights

  • Object-Oriented Programming: Classes for organizing data and logic
  • API Integration: RESTful API calls with error handling
  • Data Structures: Dictionaries and lists for travel information
  • JSON Processing: Parsing API responses
  • Rich Library: Styled console output with colours and formatting

Note: This is an interactive Jupyter Notebook on Google Colab. Run it directly in your browser!

Python 3 OpenWeather API AI API Rich Library Requests Library JSON Object-Oriented Programming Google CoLab Git/GitHub
Cancun Travel Website showing a vibrant, fully responsive travel guide for Cancun, Mexico

My Cancun Travel Website

A fully responsive, accessible, and SEO-optimized travel website showcasing Cancun, Mexico and the wider Riviera Maya region. Built entirely with vanilla HTML and CSS as part of the SheCodes Responsive Add-on course, this project demonstrates production-ready code with a strong focus on mobile-first design, web accessibility, and Lighthouse performance - achieving perfect scores of 100/100 for Performance, Accessibility, and SEO on desktop.

Key Features

  • Fully responsive mobile-first design supporting 320px through 1600px+
  • Interactive embedded Google Maps and YouTube video content
  • Photo gallery showcasing Cancun destinations, food, and culture
  • WCAG 2.1 AA accessibility compliance with skip links and ARIA labels
  • PWA-ready with a web app manifest for installability
  • SEO structured data via JSON-LD Schema.org markup

Technical Highlights

  • CSS Grid & Flexbox: Card component system using grid-template-rows: auto 1fr auto for consistent alignment
  • CSS Custom Properties: Centralized design tokens for colour, spacing, and typography across all breakpoints
  • Performance: DNS prefetch, preconnect, lazy loading, fetchpriority hints, and async image decoding
  • Semantic HTML5: Proper use of <header>, <main>, <section>, <nav>, and <footer>
  • Lighthouse Scores (Desktop): Performance 100 · Accessibility 100 · SEO 100
HTML5 CSS3 CSS Grid Flexbox Responsive Design Google Maps API YouTube Embed API WCAG 2.1 JSON-LD PWA Git/GitHub Netlify
Vite React Weather App showing a real-time weather interface built with React and Vite

My Vite React Weather App

A weather application rebuilt from scratch using React and Vite — marking the transition from vanilla JavaScript into modern component-based development. This project demonstrates core React skills including component architecture, hooks for state and side effects, and API integration, using the SheCodes Weather API to deliver real-time weather data with a fast, optimised Vite build pipeline.

Key Features

  • Real-time weather data via the SheCodes Weather API
  • Component-based architecture separating search, display, and forecast concerns
  • City search for any location worldwide
  • Current conditions including temperature, humidity, and wind speed
  • Fully responsive layout across mobile and desktop

Technical Highlights

  • React 18: Functional components with useState and useEffect hooks
  • Vite: Fast development server with Hot Module Replacement (HMR) and optimised production builds
  • API Integration: Axios/Fetch for SheCodes Weather App calls with async/await and error handling
  • Component Thinking: First project applying React's reusable, self-contained component model
  • ESLint: Configured linting for consistent, maintainable code quality
React 18 Vite JavaScript ES6 CSS3 OpenWeatherMap API Axios/Fetch API React Hooks ESLint Git/GitHub Netlify
Lexi Dictionary App interface showing word definitions, pronunciation audio, and related photography

Lexi Dictionary App

A fast, modern dictionary web app built with React 18 and Vite that goes beyond a basic word lookup tool. Search any word to receive instant definitions grouped by part of speech, a custom-built pronunciation audio player, example sentences, related photography sourced from the Pexels API, and a curated random word on load. Built as part of the SheCodes React Add-on course, this project showcases advanced component architecture, triple API integration, and a rigorous performance optimisation journey that improved the mobile Lighthouse score from 51 to 82.

Key Features

  • Word search with input validation, clear button, and a random default word on load
  • Definitions grouped by part of speech with example sentences
  • Custom-built pronunciation audio player with play/pause and progress bar
  • Related Pexels photo grid with skeleton loading state and photographer attribution
  • Full error handling for API failures, timeouts, and invalid input
  • WCAG-compliant accessibility: semantic HTML, ARIA labels, keyboard navigation, and screen reader support

Technical Highlights

  • Triple API Integration: SheCodes Dictionary API, DictionaryAPI.dev (pronunciation audio), and Pexels (photography)
  • Component Architecture: 9 single-responsibility components including AudioPlayer, DefinitionList, PhotoGrid, and ErrorMessage
  • Performance Optimisation: Lighthouse mobile score improved from 51 → 82 through 12+ targeted fixes including Bootstrap removal, image sizing, preconnect hints, and GPU-composited animations
  • Design System: CSS Custom Properties design token approach for colours, spacing, and typography — consistent by default
  • PropTypes: Runtime type checking for robust, maintainable component contracts
  • Lighthouse Scores (Desktop): Performance 88 · Accessibility 100 · SEO 100
React 18 Vite JavaScript ES6 CSS3 SheCodes Dictionary API DictionaryAPI.dev Pexels API Axios PropTypes React Hooks WCAG 2.1 Git/GitHub Netlify