Skip to content

andrewhwanpark/craigslist-redux

Repository files navigation

Craigslist Redux

craigslist-redux

Full stack, "modern" recreation of Craigslist with features that I wish to add to Craigslist: in-app messaging, emphasis on product images, simplified UI/UX, light social features, and many more.

Check out the live deployment: craigslist-redux.herokuapp.com

The project is non-commercial, and built soley for personal and educational purposes.

Stack

The site uses the MERN stack: MongoDB, Express, React, Node

The site is hosted on Heroku.

The code is linted by the airbnb ESlint config: github.com/airbnb/javascript

Philosophy

If it ain't broke, it lacks features.

Why recreate Craigslist? Some may argue that the site is perfect for its functions, as demonstrated by the longevity and relevance of the site. I wholeheartedly agree. I admire the engineers and designers at Craigslist: the site is incredibly complex, yet has great performance and clarity in UI/UX. I rarely hear criticisms of Craigslist for good reasons. The site is truly what the Web should strive for. No frills, all gas.

However, with the emergence of new used goods sites like Grailed, I wished to combine some modern elements of used goods sites like Grailed with craigslist.

For those unaware of Grailed, here are some reasons why we believe they have been so successful:

  • Minimal and consistent UI/UX
  • Emphasis on product images: reading an eBay listing feels like reading technical documentation.
  • Infinite scrolling: rather controversial, I do concede some sites work better without infinite scrolling.
  • In app messaging: intuitive and easy categorization of different and concurrent conversations users are having between each other. Craigslist still relies on email communication. eBay's messaging portal is just disgusting.
  • Favorites: you can add any listing to your personal "Favorites" and keep track of them in one page, and get notifications when prices change. In the same page, you can keep track of sellers you follow.
  • Seller branding: sellers can add profile pictures and usernames. You can also add profile pictures in eBay, but when do you ever see them? I don't even know if I have a profile picture uploaded on eBay. But I don't know or care since I never come across it.
  • Price drops and bump: You can perform 2 actions to your listings. Drop the price by n%, or bump the listing to the top every week. Try this very simple action on eBay. Price dropping takes around 10 clicks, and bumping is non-existant.
  • Comments on listings: Comments allow sellers to broadcast information or answer specific FAQs. Comments also allow buyers to publically broadcast information about the listing. I've had times where I found out the product is fake thanks to comments left by users.

So it's just a mishmash between Craigslist and Grailed?

Imitation is the sincerest form of flattery

Yes! I truly love the UI/UX of Grailed, I believe the site really set a standard for how product-centric ecommerce sites should look and perform. When I talked to the CEO of Grailed in my freshmen year of NYU by pretending I was part of a big student club, I never forgot what he told me:

I didn’t know how to build Grailed when I built Grailed. I just Googled it. Literally. “How do I build a website where I can do this.” There’s so much knowledge on the internet, that you can figure anything out if you read about it. Some combination of believing yourself and making it happen.

I internalized the same philosophy building this site. I didn't know the first thing about web development best practices. I simply confronted problems as they emerged, solved them by any means necessary, and slowly developed the vision for what the site should look like, feel like, and perform like. Nothing motivated me to build this site than the sake of building a beautiful product I can be proud of.

Screenshots of core features

Product Detail Page

Product detail page

In-app Messaging Page

In-app Messaging Page

Favorites Page

Favorites Page

Releases

No releases published

Packages

No packages published

Languages