Introduction
Lightweight Photo Editor is an online image editing utility providing practical, rapid editing tools directly inside the web browser without demanding heavy desktop software.
This served as my onboarding starter project at True Platform, designed to evaluate and integrate Fabric.js into the company's proprietary front-end web framework.
My Role & Responsibilities
- Designed the core state management and canvas interaction architecture.
- Integrated Fabric.js with native HTML5 Canvas for fast rendering performance.
- Engineered user experience features: 20-step undo/redo stack, object layer locking, and custom transforms.
- Authored the user interface strictly using HTML, CSS, and Vanilla JS/jQuery without relying on third-party UI component libraries.
Key Capabilities
1. Crop
- Crop with predefined aspect ratios (square, circular, horizontal banner, avatar) or freeform manual drag.

2. Freehand Drawing
- Smooth freehand sketching with customizable brush widths, opacity, and color palettes.


3. Typography & Vector Shapes
- Add text overlays with font choices, sizing, alignment, and styling.
- Insert vector shapes (rectangles, ellipses, triangles) with stroke or solid fill.


4. Image Transformations
- Arbitrary degree rotation, horizontal flip, and vertical reflection.

5. Pixelated Mosaic (Blur)
- Apply pixelation mosaic masks to censor sensitive regions or personal identifiable information.


6. Arrow Callouts
- Quick arrow callout tool for annotating screenshots and highlighting workflow steps.
7. Dual-Stack History (Undo & Redo)
- Snapshot state tracking using dedicated undo and redo memory stacks.
- Capped at 20 historical states to avoid memory leaks on large high-resolution images.

8. Layer Inspector
- Tree view of all objects rendered on canvas with one-click selection, z-ordering, and locking.

Technical Implementation
- Framework: In-house proprietary PHP framework, Vanilla JavaScript, jQuery.
- Canvas Rendering Engine: Fabric.js on top of HTML5 Canvas.
- Styling: Custom CSS without heavy external CSS frameworks.
