top of page

It all starts with 'rails new'

Week 6 into the bootcamp and we made an eCommerce site from scratch!

Proudly Presents

FlatironShop

The Non-creepy alternative to Craigsglist

https://flatironshop.herokuapp.com/

THE IDEA

FlatironShop is a marketplace where FlatironStudents can buy and sell. Thus the exchanges take place within a curated community where interactions are safe and pleasant (as opposed to very open platforms like Craigslist).

FEATURES

  • User authorization and authentication

  • Notification emails upon sign up and completed order

  • Filtering for items by category, persistent filters

  • Fuzzy Search

  • User ratings and reviews

  • Users can set up and update new items for sale with description and picture

  • User profile page with average ratings, reviews, biography, profile picture

TECHNOLOGY/LIBRARIES

  • Web Framework: Rails

  • Database: Postgres

  • Deployment: Heroku

  • Emailing: SendGrid

  • Pagination: Kaminari

  • Picture Upload: CarrierWave

  • File Storage: AWS S3

What did you learn?

  • How to send emails to users?

  • How do we display a limited of results per page and allow user to flip back and forth?

  • How do we implement filtering for categories?

  • How do we implement pictures upload?

  • Where do we store the pictures when the app is moving from development to prodcution?

  • And last but not least: CLEARFIX! It was our go to solution for unnerving CSS page layout madness!

There is a reason that programmers work in pairs or groups. When you are stuck on a problem for hours, it can be very frustrating. Asking your programming partners can help you identify solutions so much quicker. The mysterious error message might be cause by a missing semicolon or it could be a complex configuration issue. In either case, I learnt that it is time efficient and better for one's mental health to ask sooner, rather than later. For people who tend to be hesitant to ask for help, like me, this is a valuable lesson:

You can't and don't have to solve everything by yourself - so tap into other people's minds and ask!

What was the most difficult part?

IDEATION

As I learnt from last project I wanted to focus more on finding an idea that makes you feel excited. Unlike last project, our options seemed limitless because we are not making an application for the command line but a 'real' tangible website! Thank you Rails!

Although (or because?) the options seemed wider it was still very hard to come up with a genius idea.

When I worked in London at my old company a guy from Google had come in to hold a workshop about Ideation. And one thing stuck to my mind: you cannot generate ideas sitting at your computer. For creativity one needs to be relaxed and in an effort less state of mind. It is more inspiring to go to the pub and have some drinks with your colleagues rather than sit around a table in a conference room. For example, Dali was generating his ideas by accessing the state between awake and asleep. Allegedly he'd rest his chin on a brush and when he was about to doze off, his head would slip off and he'd wake up, remembering the thoughts that occurred right before falling asleep.

DATABASE MODELLING

Setting up the tables for an eCommerce shop seemed simple at first. There are users, items, and a cart. Surprisingly, it took us hours to figure out the all the questions like:

  • What models do we need? It seemed easy at first but then came up the questions of: do we actually need a Cart model or do we store items in a session? Do we need a model for the Orders? Users can be buyers and sellers, how are we setting up the tables?

  • What are the relationships between the models? Should the relationship between users and items/orders be a many to many relationship? Should orders stand between users and items? Should the address attribute go to the users or orders table?

USER FLOW AND PAGE LOGIC

The more we interacted with our page, the more we had to get into the nitty gritty.

  • Handle routing: when the user wants to perform an action where they need to be logged in, how to return to that page after authorization?

  • Different authorization levels for admin and buyer/seller, e.g. only admins can see all users, and create/update categories

  • Handle wrong/invalid entries, e.g. user enters invalid city

  • Limit access for buyer/seller roles, e.g. users should not be able to put their own items into the cart, but should be able to see them on main page with all listings

What was the funnest part?

  • Working with two very smart and quick individuals, tap into their brain, and be inspired by their problem solving style - made working on this project feel like a breeze.

  • Adding new features and seeing the progress every day

  • Figuring out things that we have never done before, for example emailing and filtering for results - the feeling of achievement and adding knowledge is awesome!

  • Positive surprises: working separately on substantial chunks of code and experiencing no merge conflict

How would FlatironShop 2.0 look like?

  • Add messaging feature so that buyer and seller can communicate

  • Save/follow favorite sellers, receive an alert when new items are listed

  • Design Logo and Welcome Page

  • Sign up with Facebook/Twitter/GitHub accounts

  • Validation for passwords (min length, characters allowed, etc)

  • Implement state and city select in address form (dependent fields)

  • Actually being able to buy with your credit card

  • Filter for price range

  • Fix bugs: e.g. rating can be only 1-5, hide password entries

You Might Also Like:
bottom of page