👥 Team ProjectCollage Project

Pinterest

A fully-featured Pinterest clone built with the MERN stack featuring user authentication, Cloudinary image uploads, interactive pins, comments, like/unlike, follow/unfollow, dark/light mode toggle, Razorpay premium membership, and an admin dashboard

P

My Role

Solo developer — built the full MERN stack application including REST API with Node.js and Express, MongoDB data models with Mongoose, JWT authentication, bcrypt password hashing, Cloudinary image upload integration, Razorpay payment flow for premium membership, admin dashboard, dark/light mode toggle, and the full React frontend with Context API state management and Tailwind CSS styling.

Duration

Collage Project

Project Type

Team Project

About the Project

A Pinterest-inspired social image sharing platform built with the MERN stack (MongoDB, Express, React, Node.js). Users can register, create and manage pins with Cloudinary image uploads, explore all pins in a masonry layout, like/unlike, comment, follow/unfollow other users, and toggle between dark and light mode. The platform includes a Razorpay-powered premium membership where users pay to unlock premium access. An admin dashboard provides oversight of users, pins, and platform activity. Deployed with Cloudinary handling all image storage.

The Problem

Social image discovery platforms are either too complex to build as a learning project or lack the full feature set needed to demonstrate real-world full-stack skills — including payment integration, role-based access, media management, and social interactions all in one app.

The Solution

Built a Pinterest clone that covers the full social platform feature set — auth with JWT and bcrypt, image upload and storage via Cloudinary, a masonry pin grid, social interactions (like, comment, follow), a Razorpay payment flow for premium membership upgrades, dark/light mode toggle, and an admin dashboard for platform management.

Outcome & Results

A fully functional social image sharing platform with premium membership powered by Razorpay, Cloudinary media management, dark/light theme toggle, admin dashboard, and all core Pinterest social features including pins, comments, likes, and follow/unfollow.

Challenges Faced

Razorpay premium membership flow: Implementing a payment-gated membership required creating an order on the backend, launching the Razorpay checkout on the frontend, and verifying the payment signature server-side before upgrading the user to premium status. Cloudinary image uploads: Handling image uploads directly from the browser to Cloudinary required configuring signed or unsigned upload presets and managing the returned URL for storage in MongoDB. Dark/light mode toggle: Implementing a persistent theme toggle across the entire app required managing theme state globally via Context API and applying Tailwind CSS dark mode classes consistently across all components. Admin dashboard: Building a separate admin view required role-based access control — checking the user role on both the frontend route guard and backend middleware to prevent unauthorized access. Masonry layout: Displaying pins in a responsive Pinterest-style masonry grid required careful CSS column configuration to handle images of varying heights without gaps or misalignment.

What I'd Do Differently

Pin collections and boards — allow users to save pins into named boards. Save and unsave pins — separate from likes, let users bookmark pins privately. Notifications system — notify users when someone likes, comments, or follows them. Infinite scrolling — replace pagination with infinite scroll on the pin feed. Social sharing — allow pins to be shared externally to other platforms.

Pinterest | Projects - Sadik Laliwala