<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oswin Jerome</title>
    <description>The latest articles on DEV Community by Oswin Jerome (@oswin_jerome).</description>
    <link>https://dev.to/oswin_jerome</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3047679%2Fcbc420a8-fab4-4cd8-bca3-1ca5b0745709.jpg</url>
      <title>DEV Community: Oswin Jerome</title>
      <link>https://dev.to/oswin_jerome</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oswin_jerome"/>
    <language>en</language>
    <item>
      <title>From Easels to My Own Whiteboard: How I Built a Moodboard App to Replace Arc’s Feature</title>
      <dc:creator>Oswin Jerome</dc:creator>
      <pubDate>Sun, 13 Apr 2025 17:00:51 +0000</pubDate>
      <link>https://dev.to/oswin_jerome/from-easels-to-my-own-whiteboard-how-i-built-a-moodboard-app-to-replace-arcs-feature-2ijg</link>
      <guid>https://dev.to/oswin_jerome/from-easels-to-my-own-whiteboard-how-i-built-a-moodboard-app-to-replace-arcs-feature-2ijg</guid>
      <description>&lt;h1&gt;
  
  
  🎨 From Easels to My Own Whiteboard: Rebuilding a Moodboard App for Creatives
&lt;/h1&gt;

&lt;p&gt;Like many creatives and visual thinkers, I &lt;strong&gt;loved using Easels in the Arc browser&lt;/strong&gt;. It was my go-to tool for moodboards — a simple, intuitive way to capture screenshots, images, and arrange them into creative layouts.&lt;/p&gt;

&lt;p&gt;And then… they removed it.&lt;br&gt;&lt;br&gt;
So instead of complaining — I built my own.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frf47m98jch6g01y72lpv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frf47m98jch6g01y72lpv.png" alt="Image description" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 The First Version: A Weekend Proof of Concept
&lt;/h2&gt;

&lt;p&gt;In a burst of weekend creativity, I put together a &lt;strong&gt;whiteboard application&lt;/strong&gt; using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎨 &lt;a href="https://excalidraw.com" rel="noopener noreferrer"&gt;Excalidraw&lt;/a&gt; for the canvas&lt;/li&gt;
&lt;li&gt;⚡ Next.js for the frontend&lt;/li&gt;
&lt;li&gt;🐙 Supabase for backend services and real-time collaboration via WebSockets&lt;/li&gt;
&lt;li&gt;🌐 A &lt;strong&gt;Chrome extension&lt;/strong&gt; that sends screenshots and images directly to my whiteboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The coolest part? I wrote a &lt;strong&gt;custom auto-arrangement algorithm&lt;/strong&gt; that intelligently positioned new images on the board as moodboards.  &lt;/p&gt;

&lt;p&gt;The result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📡 Real-time collaboration
&lt;/li&gt;
&lt;li&gt;🖼️ Instant image capture via a Chrome extension
&lt;/li&gt;
&lt;li&gt;🗂️ Auto-arranged, visually organized moodboards
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It wasn’t perfect — but it scratched the itch I had when Easels disappeared.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Why I'm Rebuilding It (and Changing the Stack)
&lt;/h2&gt;

&lt;p&gt;Now that I’ve proven the concept works, it’s time to &lt;strong&gt;level it up&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I’m planning to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Move to a custom HTML5 canvas implementation&lt;/strong&gt; (for better control and flexibility)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rebuild the backend using Spring Boot&lt;/strong&gt; for a more scalable, production-ready backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switch to PostgreSQL&lt;/strong&gt; for managing boards, images, and moodboard metadata
&lt;/li&gt;
&lt;li&gt;Retain &lt;strong&gt;Next.js&lt;/strong&gt; for the frontend because of its flexibility and developer experience
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This rebuild will give me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎛️ Full control over canvas rendering, layering, and layout logic&lt;/li&gt;
&lt;li&gt;⚡ Faster, scalable real-time sync&lt;/li&gt;
&lt;li&gt;🔄 Better long-term maintainability&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Planned Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom Canvas (likely using HTML5 Canvas API or libraries like &lt;code&gt;konva.js&lt;/code&gt; or &lt;code&gt;fabric.js&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;Next.js app
&lt;/li&gt;
&lt;li&gt;WebSocket integration for live collaboration
&lt;/li&gt;
&lt;li&gt;Image upload &amp;amp; integration with my existing Chrome extension&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spring Boot REST API + WebSocket server
&lt;/li&gt;
&lt;li&gt;PostgreSQL for storing moodboards, images, layout positions, and metadata
&lt;/li&gt;
&lt;li&gt;Cloud or local image storage
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Auto-Arrangement&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactor and optimize my custom image arrangement algorithm&lt;/li&gt;
&lt;li&gt;Dynamically position images based on canvas size, image dimensions, and user-defined groups&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✨ What’s Next?
&lt;/h2&gt;

&lt;p&gt;The ultimate goal is to build a &lt;strong&gt;fully open, collaborative moodboarding tool&lt;/strong&gt; — better than the original Easels — allowing creatives and visual thinkers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📥 Instantly send images from anywhere via a browser extension
&lt;/li&gt;
&lt;li&gt;🖼️ Organize ideas visually in a flexible whiteboard interface
&lt;/li&gt;
&lt;li&gt;📝 Collaborate in real-time
&lt;/li&gt;
&lt;li&gt;🎨 Maintain complete creative control without platform limits
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll be sharing updates as I go — from building the custom canvas, to optimizing WebSocket sync, to refining the image auto-layout algorithm.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Sometimes, when a tool you love disappears, it opens up an opportunity.&lt;/p&gt;

&lt;p&gt;I turned my frustration into a fun weekend proof-of-concept project, and now I’m rebuilding it into a real, scalable application — on my own terms.&lt;/p&gt;




&lt;p&gt;🚀 &lt;strong&gt;Are you a moodboard lover or Arc Easels user too? I'd love to hear your ideas!&lt;/strong&gt; Drop them in the comments 👇&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>superbase</category>
    </item>
  </channel>
</rss>
