For our third portfolio project as a part-time software engineering student at Flatiron School, my classmates and I were required to build a full web application from scratch using Ruby on Rails. I built a Yoga studio/community website called Flow.
I was inspired to build this app because I have been practicing Yoga for many years now. I wanted to use this passion as vehicle to build an app that I was proud of, and that I could push myself with. “Flow” is designed as a website that can display all the information that a real-world Yoga studio would need, such as courses with prices, times, and dates.
It also is designed to bring together a community, and give users a place to talk and share experiences, with profile pages for students and teachers.
One of the main goals I wanted to teach myself about was how to alias my User model for different roles. This proved to be more of a challenge than I anticipated! I wanted to have a single login, and maintain RESTfull conventions while giving separate user experiences for a student, teacher, or admin. I could probably write an entire article on just this, and if I do I will link it here! For now, here's a snippet of my User model associations:
In order to achieve this, it was essential to plan out my models and associations beforehand. I used an integrated draw.io extension for VSCode, which is an awesome planning tool. Here is a snippet of my plan:
I am proud of how my app came out! I learned a ton about using Rails helpers, partials, filters, and building complicated models. I found adding ActiveStorage to be almost painless in comparison to adding CarrierWave to my Sinatra app on my previous project. Overall I found Rails to be an extremely powerful framework and I feel confident in my abilities to develop using it after building this app!