I’m building an online store that sells wall-art posters and I need a fully functional product-customizer page where customers can drop their own image into a ready-made frame and see the result instantly. Core experience • The only interactive control the shopper needs is an image-upload button. As soon as the file is chosen, it should appear inside a high-resolution mock-up of a poster frame hanging on a wall. No extra text or colour options are necessary right now, so the UI can stay clean and distraction-free. • I will supply several frame-on-wall mock-ups (different sizes, orientations, room styles). The customer picks one, uploads a photo and the preview updates in real time. • The preview must render fast—ideally under one second on desktop and mobile—so please lean on efficient front-end techniques (e.g., HTML5 canvas, WebGL, or an optimised React/Vue component). Attached is an example from a similar website. Look & feel The whole page should feel sleek and lightweight: minimal controls, large preview area, and a modern font palette that matches the rest of the store (we can fine-tune colours once the core tool is in place). Smooth drag-and-drop or tap-to-upload is a plus, and the preview image should scale crisply on retina devices. Technical expectations • Responsive layout that performs equally well on mobile, tablet and desktop. • Clean, documented code so future templates or extra options can be added without a rebuild. • Server-side handling for the uploaded file only when the customer adds the item to cart; until then everything should stay client-side for speed. Acceptance criteria 1. Select template → upload image → live preview appears within 1 s. 2. Preview displays at least 1500 px on the longest edge with no visible pixelation. 3. Added to cart item saves chosen template ID and image in the order meta so it can be reproduced in fulfilment. Hand-over Please deliver the front-end component, any supporting back-end endpoint (if used), setup notes, and a short README explaining how to add new frame templates later.