Loading...

Meme Generator – Interactive Web Tool

Role: Frontend Developer & DesignerDuration: Personal Project
HTML5
CSS3
JavaScript
Canvas API

Summary

The Meme Generator is a lightweight web application built with HTML, CSS, and JavaScript. It allows users to upload any image, add styled text, and export a custom meme. The project demonstrates practical front-end engineering skills, user-focused design, and professional polish through compliance considerations.

Gallery

Meme Generator – Interactive Web Tool gallery image 1
Meme Generator – Interactive Web Tool gallery image 2
Meme Generator – Interactive Web Tool gallery image 3

Objectives

  • Build an interactive tool that showcases DOM manipulation and Canvas API.
  • Provide a clean, responsive UI adaptable to desktop and mobile screens.
  • Ensure accessibility and user control over styling options.
  • Add a legal disclaimer footer to reinforce professionalism.

Technical Challenges & Solutions

Dynamic Text Rendering on Canvas

"Rendering and updating text with various styles (font, size, color, shadow) on the HTML Canvas required efficient DOM manipulation and state management without a framework."

Solution: Vanilla JS Event Listeners and Canvas API

app.js

const canvas = document.getElementById('memeCanvas');
const ctx = canvas.getContext('2d');
const textInput = document.getElementById('textInput');

function drawMeme() {
  // 1. Clear canvas and draw image
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.drawImage(image, 0, 0, canvas.width, canvas.height);

  // 2. Set text styles from input controls
  ctx.fillStyle = document.getElementById('colorPicker').value;
  ctx.font = `${document.getElementById('fontSize').value}px ${document.getElementById('fontFamily').value}`;
  ctx.textAlign = 'center';
  
  // 3. Draw text
  ctx.fillText(textInput.value, canvas.width / 2, 50);
}

textInput.addEventListener('input', drawMeme);
Results:
  • Successfully implemented real-time text updates on the canvas as the user types.
  • Created a decoupled system where input controls directly influence canvas re-rendering.

Tools & Techniques

HTML5

Semantic structure & responsive layout

CSS3

Modern styles, grid layout, custom theme colors

JavaScript (Vanilla)

Canvas rendering, drag/drop logic, dynamic updates

Key Outcomes

  • Delivered a functional, interactive web application from scratch.
  • Demonstrated a strong focus on user experience and accessibility.
  • Applied professional practices like including legal notices and a polished UI.

Reflection

This project deepened my understanding of the Canvas API for dynamic rendering and improved my knowledge of creating responsive layouts with CSS Grid and Flexbox. It also taught me to consider legal aspects in product design by adding a disclaimer.