This project is a Pinterest clone created using MongoDB, Mongoose, Express.js, EJS, CSS, JavaScript, Multer, and Passport.js. It provides features similar to the popular image-sharing platform Pinterest, including user authentication, image uploading, liking, commenting, user profiles, search functionality, saving images, and creating public and private boards.
- User Authentication: Users can sign up, log in, and log out securely using Passport.js for authentication.
- Image Uploading: Users can upload images to their profiles.
- Like and Comment: Users can like and comment on uploaded images.
- User Profiles: Users have their own profiles where they can view their uploaded images, liked images, boards, and profile information.
- Search Users: Users can search for other users by username.
- Save Images: Users can save images to their boards for later viewing.
- Create Boards: Users can create boards to categorize and organize their saved images.
- Public and Private Boards: Users can set their boards as public or private to control who can view them.
- Explore Saved Images: Users can explore other users' saved images and boards
-
Clone the repository to your local machine.
-
Install dependencies using npm install.
-
Set up a MongoDB database.
-
Create a .env file in the root directory and add the following environment variables:
- MONGODB_URI=<your_mongodb_uri>
-
Run the application using
npm start
. -
Access the application in your web browser at
http://localhost:3000
.
- Sign Up: Create a new account by providing a username and password.
- Log In: Log in with your username and password.
- Upload Images: Upload images to your profile.
- Like and Comment: Like and comment on images.
- Search Users: Search for other users by username.
- Save Images: Save images to your boards.
- Create Boards: Create boards to organize your saved images.
- Explore Saved Images: Explore other users' saved images and boards.
- This project was created as a learning exercise.
- Special thanks to Passport.js for authentication and Multer for handling file uploads.