Image for post
Image for post

That’s right! I made a thing! And I’m pretty proud of it too! Until now my programming experience has been task-oriented. Learn this, practice this, solve this. My first opportunity to play in the sandbox with all my new tools led me here. Our instructions were to create a CLI app that used object-oriented programing and a relational database.

I set out to build a transit app, that using data provided by the local transit organization (GTFS data) would allow users to log in and look up information. The app allows users to search the closest bus stop to any address and see the distance from the address to the bus stop. Then they are given the option to save and label this stop, for example as “home” or “work. They can then save commutes they would take with these stops. The app can store, your “morning” commute from home to work then also your “evening” commute from home to the gym. It then allows you to see the distances of these commutes as well as tell you which is your shortest and longest commutes. All users, bus stops, and commutes can be updated or deleted as required to make sure your saved transit data is up to date.

Aspects I’m proud of:

  1. I'm most proud of myself for getting to a finished product that hit all the goals I had set for myself at the beginning of the project. I surprised myself in my programming abilities and I will be setting more ambitious goals in the future.
  2. I want to highlight here a cool ruby gem that I used. Geocoder, helped me retrieve the relevant location data I needed for my CLI app. I learned before tackling a particularly different part of program, see if you can find any tools that may make it easier.
  3. I was really proud of my ability to seed the transit data and using API requests. I was able to manipulate the data to save and retrieve it in a way that made making further calculations a breeze! I highly recommend taking the extra time to organize all your data!

Things I struggled with:

  1. Here is something I should have done at the beginning to save myself the headache later on: making sure my models and their relations were absolutely correct! I started with the relationships between my users and their saved bus stops and that went smoothly. What tripped me up for a bit was from there I used a join table to create another has-many relationship and I quickly learned that was a no go.
  2. Oh, git… I struggled here quite a bit. I had a file that was too large to push up to Github. I had already added and committed and as I learned, simply deleting the file and trying to re-commit will not work. I ended up using the $ git reset — soft HEAD to undo my commits and try again. I’m still getting used to the git workflow and working on this project allowed me to practice and hopefully “git” a bit better.

Features I would improve:

  1. Given that we had 4 days to complete this project I limited myself to only the bus stop location data. However, I had access to a lot more GTFS data such as route information and stop time data. I would like to eventually incorporate all this information to add additional functionality to my CLI app. In the end, users should be able to look up the next bus at a bus stop and see the route this bus will take.
  2. My UI/UX design was not the best to say the least. I ended up focusing more on the backend logic and the interface suffered as a result. Going forward I would add a clean interface, with a screen clear, colored text for organization and updated menu selection.

This project was a lot of fun to work on and wow did I learn lots! I loved being able to apply all my new skills along with the opportunity to be creative and create something from my own design from start to finish. Stay tuned because I am definitely eager to do this again!

Written by

I love seafood, exploring new cities, board games and learning to love to code.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store