FrameIt

FrameIt

Web Development | Design

View Site
FrameIt overview

Overview

For this project, I created FrameIt, a dynamic digital memory board that enables users to create personalized memory boards with photos, polaroids, sticky notes, and stickers. This project showcased object-oriented JavaScript implementation, modular development, and bundling with Parcel.js.

Using a class-based architecture, I developed an intuitive drag-and-drop interface powered by GSAP animations to make the application engaging and interactive. FrameIt demonstrates practical application of OOP principles while offering users a creative and responsive platform for digital memory creation.

Summary

Year: 2025
Role: Front-End Developer
Deliverables: Single-page OOP JavaScript application with responsive UI, modular architecture, and interactive animations
Development Tools: HTML5, CSS3 (Sass), JavaScript (ES6+ OOP), Parcel.js, GSAP

FrameIt problems

Problems

1. Class Structure: Creating a Media class that was both flexible and extensible was challenging, as it needed to support multiple media types while keeping the code maintainable.


2. Z-Index Management: Ensuring draggable elements stacked correctly without interfering with user interactions was tricky, especially when handling overlapping media.


3. Modal Complexity: Building a reusable modal system that could handle different media types while maintaining smooth animations and transitions required careful design.


4. Responsive Interactivity: Making sure the interface remained fully interactive and visually consistent across all devices presented challenges in layout adjustments and user experience. 

FrameIt research

Research

I studied Canva’s interface to understand how it handles element placement, media organization, and user interactions.

This helped me refine the drag-and-drop functionality and overall user experience for a smoother, more intuitive design.

FrameIt process

Process

1. OOP Architecture: I designed a base Media class with shared functionality and developed specialized child classes for different media types, including framed photos, polaroids with filters, sticky notes, and draggable stickers.


2. Interactive Features: I used GSAP Draggable for smooth movement, built a modular modal system for adding new media, and designed custom animations for dynamic media placement.


3. Modular Development: I structured the JavaScript into reusable modules for media creation, modal controls, and animation utilities. I used Parcel.js for efficient module bundling.


4. Responsive Design: I took a mobile-first approach using Sass and optimized drag interactions for both touch and desktop users.

FrameIt final product

Final Product

View on Github

FrameIt delivers an engaging and interactive experience with:

  • Drag-and-Drop Interface: Users can freely move and position media elements for a personalized layout.

  • Photo Frames & Polaroid-Style Photos: Users can add framed images or apply filters for a vintage look.

  • Customizable Notes & Stickers: Interactive sticky notes and draggable emoji stickers enhance creativity.

  • Smooth Animations: GSAP-powered transitions make interactions feel seamless and dynamic.

  • Fully Responsive Design: The interface adapts smoothly across mobile and desktop devices.

  • Optimized Performance: Parcel.js ensures efficient module bundling for faster load times.

Reflection

This project deepened my understanding of:

  • JavaScript OOP principles and class inheritance.

  • Module bundling with Parcel.js for maintainable code.

  • GSAP animations to enhance user experience.

  • Optimizing cross-device interactions.

Key Takeaways:

  • The importance of a well-structured class inheritance system.

  • Efficient use of modular JavaScript for clean and reusable code.

  • Optimizing animation performance.

  • Balancing design and functionality for an intuitive user experience.

FrameIt successfully combines OOP, modular JavaScript, and interactive animations into a polished web application. This project challenged me, and I’m proud of how it turned out - an engaging and functional app that I’m excited to share.