
Completed
Posted
I need a lightweight yet polished meme generator built with pure JavaScript and Fabric.js. The app has to work seamlessly in a modern browser on desktop as well as inside a responsive mobile view, so pay close attention to break-points and touch gestures when shaping the UI. Core workflow: • The user uploads any image (drag-and-drop or file picker) or snaps a photo on mobile. • They add unlimited text layers, picking fonts, colours, alignment and simple drop shadows as [login to view URL] objects. • Basic editing tools—crop, free-form resize/rotate and a small drawing pen—must feel instant, with handles that respect both mouse and touch input. I skipped built-in templates on purpose; instead, the canvas should open empty and stay performant with large images. Persist edits locally (IndexedDB or similar) so a user can leave and return without losing progress. Deliverables 1. Single-page web app (HTML, CSS, JS) bundled through a standard build chain (Vite, Webpack or Parcel—your choice). 2. Mobile-first responsive layout with touch-friendly controls. 3. Well-commented source code and a brief README that explains local setup and production build. 4. Demo link deployed on a free tier hosting service so I can test quickly. Acceptance criteria: • No console errors, loads in under 2 s on a mid-range phone. • All [login to view URL] objects remain editable after any crop or rotate action. • Saved project reopens with exact state restored. • Works on latest Chrome, Safari (iOS) and Firefox. If this sounds clear, let me know how you’d structure the canvas objects and timeline to deliver.
Project ID: 40549023
69 proposals
Remote project
Active 7 days ago
Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs
69 freelancers are bidding on average $24 USD/hour for this job

Nice brief and clear spec. I like that you skipped templates and want the canvas empty and performant with large images while keeping everything editable. The real challenge is keeping large image fidelity without forcing expensive full canvas redraws and avoiding rasterizing layer objects when cropping or rotating. Treat the photo as a separate immutable asset and apply transforms to the canvas layer stack instead of flattening. I built PicMe where I handled responsive image editors and touch gestures across devices, including performant canvas interactions on mid range phones. Approach 1. Initialize Fabric canvas with a background image object stored as an immutable blob and a lightweight working bitmap for display 2. Text layers as Fabric Textbox objects with font loading done via Google Fonts subset and simple shadow settings 3. Crop and rotate by applying clipPath and transformation matrices to the image and adjusting layer transforms so objects remain editable 4. Persist full project as serialized Fabric toObject plus image blobs in IndexedDB and restore by rehydrating objects and reattaching images For the canvas objects and timeline I would keep a minimal model: backgroundImage asset id plus layered objects array with type metadata and transform matrix. Timeline is a linear stack of serialized deltas with periodic full snapshots for fast restore and small undo depth to limit storage. Quick question Do you want a small undo redo stack only or full action history persisted between sessions I will prepare a short architecture diagram and a live demo link for testing once I have a sample image to validate performance.
$20 USD in 7 days
4.8
4.8

Riyadh, Saudi Arabia
Payment method verified
Member since May 13, 2020
$25-50 USD / hour
$10-30 USD
$15-25 USD / hour
$10-30 USD
$8-15 USD / hour
£20-250 GBP
₹12500-37500 INR
₹1500-12500 INR
min $50 USD / hour
₹1500-12500 INR
$30-250 USD
₹600-1500 INR
$30-250 CAD
$10-30 USD
$10-30 USD
$750-850 USD
₹600-25000 INR
$25-50 USD
$30-250 USD
$10-30 USD
₹1500-12500 INR
₹12500-37500 INR
$60-200 USD
₹600-1500 INR
₹600-1500 INR