A full-featured Pinterest clone built with Next.js 14, featuring user authentication, pin management, user discovery, privacy controls, and a modern responsive design.
- Google OAuth Integration with NextAuth.js
- User Registration & Login with email/password
- Profile Management with avatar uploads
- Privacy Settings with granular controls
- Create Pins with image uploads via Cloudinary
- Save & Like functionality with real-time updates
- Masonry Grid Layout for optimal viewing
- Pin Details with full-screen view and interactions
- User Search with privacy-respecting results
- Follow System with public/private profile support
- User Profiles with created and saved pins
- Privacy Controls for profile and search visibility
- Pinterest-inspired Design with clean, modern interface
- Responsive Layout optimized for all devices
- Sidebar Navigation with intuitive iconography
- Real-time Updates with optimistic UI patterns
pinterest-clone/
βββ src/
β βββ app/ # Next.js App Router pages
β β βββ api/ # API routes
β β βββ auth/ # Authentication pages
β β βββ create/ # Pin creation
β β βββ pin/[id]/ # Pin details
β β βββ search/ # Search functionality
β β βββ user/ # User profiles & settings
β βββ components/ # Reusable UI components
β β βββ navbar/ # Navigation components
β β βββ masonry/ # Grid layout
β β βββ providers/ # Context providers
β βββ lib/ # Utility functions
βββ prisma/ # Database schema & migrations
βββ public/ # Static assets
βββ images/ # Project screenshots
- Node.js 18+
- npm/pnpm/yarn
- Google Cloud Console account (for OAuth)
- Cloudinary account (for image uploads)
-
Clone the repository
git clone https://github.com/Mkaify/Pinterest_Clone.git cd Pinterest_Clone -
Install dependencies
npm install # or pnpm install # or yarn install
-
Environment Setup
cp env.example .env.local
Fill in your environment variables in
.env.local:# Database DATABASE_URL="file:./dev.db" # SQLite for development # NextAuth NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="your-nextauth-secret-here" # Google OAuth GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" # Cloudinary CLOUDINARY_CLOUD_NAME="your-cloud-name" CLOUDINARY_API_KEY="your-api-key" CLOUDINARY_API_SECRET="your-api-secret"
-
Database Setup
npx prisma generate npx prisma db push
-
Run the development server
npm run dev # or pnpm dev # or yarn dev
-
Open your browser Navigate to http://localhost:3000
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Database: Prisma ORM with SQLite/PostgreSQL
- Authentication: NextAuth.js with Google OAuth
- Image Upload: Cloudinary
- UI Components: Custom components with Tailwind
- Icons: Heroicons
- Deployment: Vercel/Netlify ready
- Push code to GitHub
- Connect repository to Vercel
- Configure environment variables
- Deploy automatically
- Use PostgreSQL for production database
- Update
NEXTAUTH_URLto your domain - Configure OAuth callbacks for production domain
Guest View |
Login/SignUp |
Home Feed |
User Discovery & Search |
Searching |
Explore |
Create Pin |
Messages/Inbox |
Updates Pop-Up |
Favourite Pins |
User Profile |
Settings Dashboard |
Profile Settings |
Password Settings |
Privacy Settings |
Notification Settings |
Account Settings |
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
Created by Mkaify
β Star this repository if you found it helpful!
















