Skip to content
Pinstagram is a full stack Instagram clone
JavaScript CSS HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
controllers Update pagination Jan 5, 2018
handlers Lintern Jan 5, 2018
models Change to promise the FB strategy authenticating. Jun 19, 2017
public Update avatar Jan 5, 2018
routes Clean Routes Jan 5, 2018
views Update pagination Jan 5, 2018
.gitignore Update packages Jan 4, 2018 Update Dec 23, 2017
helpers.js Update server Dec 2, 2017
package.json Update packages Jan 5, 2018
server.js Clean Routes Jan 5, 2018
webpack.config.js Add Jun 22, 2017



Pinstagram is a full stack Instagram clone. It's the result of exercising with Node, MongoDB and its frameworks. The goal was to build a functional clone of some Internet-based photo-sharing application.

I finally decided to copy the web version of Instagram and add some extra features to it, such as the ability to upload images in the browser or to be able to see all the images that I liked in one place, such as the Pinterest boards.

This is my first approach to the Back-end kingdom.

The stack

  • Server side: Node with Express (ES2017 async/await)
  • Database: MongoDB and Mongoose
  • Templates: Pug (formerly Jade)
  • Authentication: Passport.js
  • Client side: ES6 vanilla Javascript and Sass

Live App

View it on here

You can create your own account or login in with one of the following accounts:

Populated profiles

username password
yellow 123
red 123
purple 123
blue 123

Empty profiles

username password
guest1 123
guest2 123


As an unauthenticated user:

  • I can login with Facebook or username and password.
  • I can create a new account.
  • I can reset my password via email if I already have an account.
  • I can browse other users' feed.

As authenticated user:

  • I can edit my profile info, change my avatar and password.
  • I can follow other users.
  • I have a Home page showing all of my friends' recent images.
  • I will receive a notification when a user starts to follow me, likes or comments one of my photos.
  • I can share an image with a caption.
  • I can comment and like/unlike an image. My liked images will be stored in my Likes page.
  • I can delete any of my images or comments.
  • I can discover other users via suggestions.

While the priority of this exercise isn't mobile apps, it works quite well on Android with Chrome (not tested on any other phone)



  • Hashtags
  • Linking users (@username)
You can’t perform that action at this time.