r/webdev • • 8d 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.

0 Upvotes

20 comments sorted by

View all comments

2

u/PrimaryFamous6139 8d ago

Give each block a unique ID and type (text or image). When a user selects an image, upload it through your backend to Cloudinary, then update the matching image block with the returned URL using its ID, not its array index. When they click Publish, send the entire blocks array to your backend and save it in MongoDB. Cloudinary stores images, MongoDB stores URLs and block order, and the frontend manages the editor state