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.
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
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.
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.
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 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.
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.