Alpha Shoes / Flatiron Bootcamp project mod3
Published: 2020-04-10 03:47:58

##**Time flies**

Another month passed by at Flatiron School. I was about 3 weeks ahead of the course, so I had plenty of time to study on the side. I started reading [Cracking the Code Interview](https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_2?crid=NIY626A9FGES&dchild=1&keywords=cracking+the+coding+interview&qid=1586486411&sprefix=cracking%2Caps%2C148&sr=8-2) and [C# in depth](https://www.amazon.com/C-in-Depth/dp/B07WTR5LHN/ref=sr_1_1?dchild=1&keywords=C%23+in+depth&qid=1586486463&sr=8-1).

##**Monthly overview**
This module we pretty much learned everything about **Ruby on Rails**. Generators, partials, routings, action views and nested forms, HTTP requests and so on. I must say, that RoR is definitely **not** my favorite framework but you can jumpstart an app pretty easily. I understand now why startups choose RoR for their stack.

On the technical side, I really like how Rails is organizing routes to keep them **RESTful**. Routes, action views, and controllers are closely linked together, it makes it easy for the dev to build fast and efficiently.

```ruby 
  resources :users, only: [:new, :create, :edit, :update] do
    resource :orders, only: [:create, :show]
    resource :cart, only: [:show, :create, :destroy]
    resource :details, only: [:new, :show]
  end
```

I dislike the generators and the scaffolds a lot. It might be a swift way to create models, routes, and controllers for the MVC pattern, however, it generates so many files that are unnecessary and takes effort to collect all this garbage. I believe to focus on **writing clean and DRY code** is more important than speed.

##**The idea**

I love shoes, so I decided I'm going to build an online shoe store. Designing mobile-first but also available for desktop. Rails back-end, HTML5, CSS3, ES6 JS. No JS framework was required, so I decided it could be a great way to practice DOM manipulation, fetch, and vanilla JS patterns. I use PostgreSQL as my DB.

##**The project:** 

**Live Demo**
[Alpha Shoes](http://alpha-shoes.herokuapp.com/)

**Source Code**
[GitHub](https://github.com/oliverfeher/alpha_shoes)


Here is a sneak peek to the mobile version of the app:

![alpha-shoes-gif](https://media.giphy.com/media/hS9vu2nd86OqF07EI2/giphy.gif)

I built the app in about 8 days, including the designing process with Adobe XD/Illustrator. I made sure I had good planning/testing and prototyping phase before I went into actually writing code.

A **flowchart** about my database and its associations:

![database-flowchart](https://i.ibb.co/hYPk7KW/alpha-database.png)

A **mobile layout** from the designing phase:

![mobile-layout](https://i.ibb.co/B3k06gd/mobile-prototype.jpg)

I honestly feel like I didn't run into any major challenges while building this project, and that is probably the benefit of the detailed testing and planning. I would like to add Stripe to it as my **Payment Gateway Processor** so it would be 100% realistic.

**Desktop Version**

![desktop-layout](https://i.ibb.co/x6dSz8Y/index-snap.jpg)

##**Future plans**

I'm going to be focusing on studying a lot on the side, read books, complete a few more computer-science classes. My next project with Flatiron should have the requirement something similar to what I've built this time. As a personal project in the upcoming weeks, I'm planning on building a data visualization app about CO2 emission in the United States using D3js. Also, I promised my son that I'm going to make him a simple iPad game using C# and Unity Engine so I'm super excited about that.

I keep having to remind myself, to keep my focus on the bootcamp's stacks and requirements, but sometimes my passion for technology and software just takes over and I can't seem to able to hold my creativity and the "I want to learn everything" mindset back.

I will make a few minutes long demo video about the app, but I rather have you try it out yourself than listening to me on YouTube. Feedbacks are welcomed!

**Until next time,**
Olly