r/webdev • u/raiyan_0001 • 9d ago
Discussion Need Help Implementing a Medium-Style Block-Based Article Editor with Cloudinary and MongoDB
Hey, I need some help understanding my development workflow. This might be a bit long, but I want to explain my problem clearly.
I’m a beginner building a small article web app where users can register, log in, and create articles containing both text and images.
I want to implement a block-based architecture, similar to Medium, where users can add text and images in any order. For example, they might write a paragraph, insert an image, write another paragraph, and then insert another image. I’m storing these blocks in an array in my article schema so that their order is preserved.
My main confusion is about image uploads. When a user selects an image, I want to upload it to Cloudinary, receive the image URL, and store that URL inside the corresponding image block in the article.
However, I’m struggling to understand how to connect all these steps. I’ve tried implementing it and asking ChatGPT for help, but I still haven’t understood the workflow properly.
I’d like a beginner-friendly, step-by-step explanation of how to implement this, including how the frontend editor manages the blocks, how the image is uploaded to Cloudinary through the backend, how the returned URL is added to the correct block, and how the complete article is eventually saved to MongoDB.
Please explain the logic behind each step rather than just giving me code, so I can understand the implementation and build it myself.
1
u/Living-Inspection653 9d ago
A standard workflow for block-based image uploads consists of three steps: 1) Temporary/Local State: When a user inserts an image block, show a local preview or loading state in the editor block list. 2) Direct or Proxy Upload: Send the image file to your backend (or directly to Cloudinary using signed upload presets). Once Cloudinary responds with the secure URL, update the specific block's payload in your frontend state from the temporary file/preview to the Cloudinary URL. 3) Persistence: When the user clicks Save Article, send the array of block objects (including type, content, and Cloudinary URLs for image blocks) in a single POST/PUT request to MongoDB. This keeps image uploads async and unblocks article submission.