Fullstack Halloween Pinterest Clone Retrospective


The Halloween-themed pinterest clone is an application that allows users to find their favorite Halloween images and add them to their own personal pinboard. Those images can be deleted from the user's pinboard. Any image add to a user's pinboard is also added to the global pinboard. All users can see any pin that was added, but they can only delete their own pins on their own personal pinboard.

The app is built with static HTML/CSS pages on the front end. I use vanilla JavaScript to do any interactivity on the front end and to make API calls to the backend of the application. The backend is written in Express/Node and the data store is a MongoDB database with Mongoose. I really enjoyed this project. A big part is that I love Halloween, so the theme kept me in a great mood throughout working on it. This was my 5th fullstack CRUD app too, so some of the troubles I had with Node, Express, and Mongo operations had been smoothed over by this point.

This was the final app in the freeCodeCamp curriculum. So submitting this project wrapped up 2 years and 16 days worth of study through the entire fCC curriculum.

Code Review

One thing that I remember realizing while working on this project was that my endpoint URLs were a little weird. Looking back they were probably weird throughout all of these projects. Instead of just doing my CRUD operations on something like /pinboard/pins, I made separate endpoints for page fetches/renders and data operations. So I was doing those operations on a url like: /pinboard/pins/data. This is definitely something that I could correct in all of these fullstack apps up to this point.

Future Improvements

This was a fun app to build, but it's unlikely that it has any real world value. I likely won't revisit it to correct anything or add improvements. This app has some of the same weaknesses as the other fullstack apps. It could use a more engaging front end built in Angular or Vue. The authentication system is weak and could benefit from something like PassportJS. A nice feature to add might be an image search API rather than having users enter image URLs in order to add a new pin to their board.

  • Clean up those API endpoints mentioned above
  • Write a proper front end in Angular or Vue
  • Improve the authentication system
  • Allow users to search for images right in the app, rather than searching and then pasting in image URLs