Skip to content

Vikash-Kumar-23/pinterest2.0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SnapShare: A Dynamic Image Sharing Platform

Overview

SnapShare is a modern web application inspired by Pinterest, allowing users to share and discover images. Built with Node.js and Express, this platform provides a seamless experience for users to create accounts, upload images, and explore content shared by others.

Features

User Authentication

  • Local authentication using username and password
  • Google OAuth integration for quick sign-in
  • Secure session management
  • Password recovery functionality

User Profiles

  • Customizable profile pictures
  • Personal feed of uploaded images
  • User information display

Image Management

  • Upload images with captions
  • View images in a Pinterest-style gallery layout
  • Image storage with unique identifiers

Responsive Design

  • Mobile-friendly interface
  • Pinterest-inspired masonry layout for the feed
  • Modern UI elements

Technology Stack

Backend

  • Node.js - JavaScript runtime
  • Express - Web application framework
  • MongoDB - NoSQL database for data storage
  • Mongoose - MongoDB object modeling
  • Passport.js - Authentication middleware
  • Multer - File upload handling
  • UUID - Unique identifier generation

Frontend

  • EJS - Templating engine
  • CSS - Custom styling
  • Bootstrap - UI components and responsive design

Authentication

  • Local strategy with Passport
  • Google OAuth 2.0 integration

Project Structure

├── app.js                # Application entry point
├── bin/                  # Server startup scripts
├── public/               # Static assets
│   ├── images/           # Image storage
│   ├── javascripts/      # Client-side JavaScript
│   └── stylesheets/      # CSS files
├── routes/               # Route handlers
│   ├── index.js          # Main routes
│   ├── multer.js         # File upload configuration
│   ├── post.js           # Post model
│   └── users.js          # User model and routes
└── views/                # EJS templates
    ├── error.ejs         # Error page
    ├── feed.ejs          # Image feed page
    ├── index.ejs         # Landing/signup page
    ├── login.ejs         # Login page
    └── profile.ejs       # User profile page

Getting Started

Prerequisites

  • Node.js
  • MongoDB
  • Google OAuth credentials (for Google login)

Installation

  1. Clone the repository
  2. Install dependencies: npm install
  3. Create a .env file based on the provided .env.example template:
    # Copy the example file
    cp .env.example .env
    
    # Then edit .env with your actual credentials
    
  4. Update the .env file with your actual MongoDB URI and Google OAuth credentials
  5. Start the application: npm start
  6. Visit http://localhost:3000 in your browser

Future Enhancements

  • Image likes and comments
  • User following system
  • Advanced search functionality
  • Image categories and tags
  • Responsive image optimization

Contact

About

"A Pinterest-inspired image sharing platform built with Node.js, Express, and MongoDB. Features user authentication (local and Google OAuth), customizable profiles, image uploads, and a responsive masonry layout."

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors