All Projects

Ruby on Rails Marketplace

This project consisted of building a full “ebay like” marketplace for a niche market, complete with buyers, sellers, transaction processing and a backend administrative and moderation area with support for multiple roles within the company.

Technologies

  • Ruby
  • Ruby on Rails
  • JSON REST API
  • PostgreSQL
  • HTML / CSS / JavaScript
  • jQuery
  • Sass

Project Requirements / Goals

The main goal of the website was to have a centralized place with rules for buying and selling specific items related to a niche market that where either sold via Facebook groups or in general marketplaces like eBay, which made finding the exact item extremely hard.

This marketplace would provide a secure way for buyers and sellers to communicate and pay for the products, with the website’s administration mediating evetual conflicts between the parties.

Implementation Details

The back-end was developed mostly with Ruby on Rails 4.2 and Ruby 2.5.0. The front-end used Bootstrap 3 and jQuery, with Haml templates. The database was PostgreSQL.

The product creation and listing dashboard allowed the user to seamlessly upload several images while inputting the remaining information required by the app. To speed things app, the app would immediately start uploading and processing the images via Ajax, discarding the work if the user cancelled the process. This resulted in a very quick creation process, even when the user uploaded 6 big images.

The listing also had ZIP CODE integration to facilitate the process of inputting the product location information. The address was required to perform shipping calculation costs so, by getting the ZIP CODE and, with Ajax, getting most of the rest of the address automatically, the time to create a product was again improved.

Once a product was created, the images were processed in the background and the final versions were sent to an AWS S3 bucket, where they were kept and served. The user immediately saw the created listing with the original images to provide feedback, with the processed ones shown for subsequent requests.