Simple Zillow — Sinatra and Ruby

Anthony C
2 min readApr 1, 2021

This was a ton of fun to create.

Coincidentally, I’m looking for an apartment on Zillow right now and figured since I am familiar with it, why not create something similar.

The key elements of the website without getting too deep into the styling included:

· User class

· Listing class

· Showings class

· Login/Logout

Each of these presented a bit of issue.

First, I needed to decide if I would make two types of user class: a client and realtor. I elected to make them the same, but required the profile to be created at different times.

So, one of the main functions of Zillow that I really like is the ability for the client to search the website without creating a profile. Then, when the client wants to set up a showing for a particular listing, they would create their profile and complete the showing request.

The realtor, on the other hand, would need to create a profile immediately if it is their intention to list a property. After, that I created a listing class that would allow any user to add a property and either update or delete it too.

The showings class required much more complex code. It required me to create a relationship, so that the information of the showing would be stored on the user and the realtor too.

Using this relationship, I create a status to allow the realtor to accept or reject the time for the showing. The status would appear on both pages too.

The hardest part of this project was not allowing myself to go down any rabbit-holes. It seemed like I could add many more functions before the project was completed and I ended up turning it in almost a week later than expected.

The way I stopped myself from indulging in the endlessness was to continue to use the app and simply work out all the bugs that came up with the routes until the app worked smoothly. Then, if I felt a function was necessary, I took the time to add it.

It was bumpy ride, but I really enjoyed the challenge of this project and look forward to making more.

--

--