Ruby on Rails e-commerce store

/ Individual Project /
/ User story / Restful website / Programming: Ruby / Framework: Rails

Link: The might and magic art store

The purpose of this project is to practice rails practically, it is a well-functioned e-commerce website bonded with third party payment and has deployed to Heroku.
admin test: admin@test.com
password: 12345678


I build this rails project in a RESTful (Representational State Transfer) structure and there are two notable properties. First, every URL represent a Resource. Second, there are different Representations to each Resource. Therefore, developers can easily modify every resource in a standardized structure so the RESTful CRUD is clear without fat code and unrelated methods. Breaking the project into MVC, there are 8 models and 9 controllers with corresponding partial views. The controller folder contains two namespace (account/admin) and cart item controllers while the while the layouts are produced correspondingly. All of the function mentioned is done and optimized. I learned a lot from the process, for example, how do Rails manipulate session, why to use the state machine for order condition, and how to bond in third party payment.

Gem installed (beside rails default gem):

Devise / Bootstrap-Sass / simple_form / carrierwave / mini_magick / font-awesome-rails / aasm / i18n / letter_opener / roadie / pay2go / sqlite3 / pg / rails_12factor / Figaro / fog / delay_job_active_record

Very Brief User Story

  • As the admin, I have to update product description, product image, product spec, price, and stock.
  • As the admin, I have to authenticate users to members.
  • As the admin, I have to manage the orders condition into: unpaid, paid, shipping, shipped, and return. Also, notify the users with an email after orders sent.
  • As a member, I can view the products, add them to cart, and produce an order.
  • As a member, I can choose how to pay my order, and receive a notification after affirming payment.
  • As a member, I can manage the account and view history orders.