https://github.com/jamesncox/grocery_list
Can you guess what my app does? Yes! You can create and edit grocery lists with my CRUD-functioning program.
Boy, did I learn A LOT working on this project, especially things that maybe weren’t clear to me from our CLI project or earlier curriculum. However, creating this app was like one continuous lightbulb after lightbulb turning on for me!
The first iteration of this project, I built a soccer manager app with a lot of help and direction from my cohort lead, DJ. So this time I wanted to build something more on my own, and decided to create the Grocery Lister program.
In that process I finally understood the concept of an Object. I hate to admit that before now, when Avi or DJ or whoever talked about object-oriented languages, and what an object is exactly, I only had a vague notion of what they were talking about. And more importantly, what that meant to my code, and why/when you want to create objects and what to do with them. The whole process of creating tables, understanding their relationships and how they would interact with each other really helped illuminate what an Object is and how we use them!
Which leads me to another important discovery: real world relationships in regards to my code! The process of identifying what I want my program to do, and how it would work in the real world was both challenging, fun and instructful! Thinking about how models/tables/attributes all relate to one another is a learned skill, at least it has been for me. But once I started to deconstruct how everything in the world relates to one another, I began thinking like a programmer more than I ever have, and that felt cool!
I have to admit that I intended to come up with a three-or-more model application, but I struggled to imagine an app that used an addition table, like a joins table, to accurately portray a real world scenario. Therefore, my Grocery Lister app has only two tables/models: a User model and an Items model, for the items on a user’s grocery list.
My favorite part about this project was integrating the HTML via my views files in conjuction with my controllers to get the program to do what I wanted. I loved trying, failing and eventually succeeding at making real live objects! And watching them get created, updated and deleted in both the browser and in the terminal.
I got a lot of value out of reading errors in both the browser and terminal. This project taught me more about where to look, what to look for, and how to read errors than anything else I’ve done so far. Thankfully I had a lot of errors to practice reading and interpreting!
Finally, this project allowed me to dip my toes into some CSS styling which was really fun! I didn’t have to add unique color schemes, headers, footers, etc., but I enjoyed thinking about something that I wish I had, googling it, and trying to make it work!
I hope y’all enjoy my Grocery Lister program!