Skip to content

Dereje1/Pinterest-Clone

Repository files navigation

Pinterest-Clone

codecov

A clone of the Pinterest application for educational purposes

Explore the live application: Pinterest-Clone

Use the app to generate images using a web link, upload your own images, or use OpenAI’s cutting-edge image generation technology.

Screenshot

Getting Started

These instructions will help you get a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

Ensure you have the following tools installed:

Tool Version
Node.js / npm ~18.3.0 / ~8.19.3
Git ~2

Optional tools:

Tool Version
Docker Desktop ~4.4.2
MongoDB Compass ~1.0.0

Installing

  1. Create a new directory and initialize Git:

    mkdir Pinterest-Clone
    cd Pinterest-Clone
    git init
  2. Clone the repository and install packages:

    git pull https://github.com/Dereje1/Pinterest-Clone.git
    npm install
  3. Run MongoDB locally with Docker:

    In the root folder, run:

    docker-compose up mongodb

    Alternatively, you can get a connection string from MongoDB Atlas after setting up your own database.

  4. Create .env file:

    In the root of the project, create a .env file with the following contents:

    SESSION_SECRET=<Secret for Express Session>
    MONGOLAB_URI=mongodb://root:123456@localhost:27017
    TWITTER_CONSUMER_KEY=< Get from Twitter Developer API >
    TWITTER_CONSUMER_SECRET=< Get from Twitter Developer API >
    TWITTER_CALLBACK=http://localhost:8080/auth/twitter/redirect
    GOOGLE_CLIENT_ID=< Get from Google Developer API >
    GOOGLE_CLIENT_SECRET=< Get from Google Developer API >
    GOOGLE_CALLBACK=http://localhost:8080/auth/google/redirect
    GITHUB_CLIENT_ID=< Get from Github Developer API >
    GITHUB_CLIENT_SECRET=< Get from Github Developer API >
    GITHUB_CALLBACK=http://localhost:8080/auth/github/redirect
    AWS_ACCESS_KEY_ID=< Get from AWS >
    AWS_SECRET_KEY=< Get from AWS >
    S3_BUCKET_NAME=< s3 bucket name for uploaded pins>
    NODE_ENV=<development|production>
    DEBUG=Pinterest-Clone:server
    DEBUG_COLORS=1
    OPENAI_API_KEY=<Get from OpenAI>
  5. Run the development environment:

    npm run dev

    You can now go to http://localhost:8080/ and see the project running in dev mode.

Using Docker

If you have Docker installed and a .env file with the contents from above, then from the root directory:

  1. Build and run the images:

    docker-compose up
  2. Access the application:

    Go to http://localhost:8080/

    Note: MONGOLAB_URI is already incorporated in the local Docker setup and is not needed in your .env file if fully running with Docker.

Testing & Build

Testing

npm test
npm run coverage

Lint

npm run lint

Compile TypeScript

npm run compileTS

Build

npm run build_server && npm run build_client

Run

npm start

Built With

  • Node.js - JavaScript runtime
  • React - A JavaScript library for building user interfaces
  • MongoDB - Database
  • Express - Node.js web application framework
  • Material UI - A library of React UI components that implements Google's Material Design
  • OpenAI - AI-based image generation
  • ...and more

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • Hat tip to anyone whose code was used