Categories
Capstone Development Progress

Winter is Coming, but so is Foodable

Hello 👋,

First and foremost it is cold here in Oregon, starting to feel it in my bones. Besides that though, lets chat about the the progression of Foodable; the application that will make all of our grocery shopping experiences cheaper and easier.

v0.0.1

For v0.0.1, my team and I were like a well oiled machine. We fully setup our testing and development environment. In short, we are using Docker compose to create two containers, one containing the Frontend, created with Next.js, and the other containing the Database, using the latest mongo instance. This development environment allows for fast local testing, and seamless testing in GitHub actions with Cypress, Jest, and Postman. Additionally, initial Clerk.js verification was integrated. All-in-all, the progression to get the v0.0.1 went really well and set the development team up for seamless future integrations.

v0.0.2

This version was about getting a main feature of the application functional. In this case, the main feature we decided to focus on was the main CRUD operations for the user, groceries, and recipes collections. A large component of this was to get the API structure and state management set. What this entailed was figuring out how we are going to use TanStack Query to call our API layer. As of now, we have setup the application to accomplish that task seamlessly and believe that the overall structure between TanStack and our API layer will not need any major changes in the future. Along with TanStack for managing the server-side state, we implemented an initial client-side state manager: Zustand. This will allow us to store the information that we know we are only going to need to retrieve once or at most twice throughout a users session length on the application. TanStack and Zustand were not in the initial architectural designs, however we believe that it will make the overall data management and UI / UX significantly better.

The Struggles

The team and I have agreed that we want to do this application the right way, not just the easiest. For instance, we could have easily used a simple to use database such as Firebase but we chose to use MongoDB to have the flexibility that the application should have. With this being said though, there have been some struggles. All of us have read through a lot of information and documentation about the technologies that we will use and that is time consuming. We all have jobs and busy lives outside of this project, so it can sometimes be hard to balance everything, but together we have persevered and are developing something I think is super cool.

What’s Next?

I am assuming that the next version will be v0.0.3, but you never know. For whatever the new version is called, the progression takes place over winter break. While myself and the team have agreed to work on the project, it will not be the only thing we do. Seeing family and resetting the brain is highly important for life and development. But I still plan to do a good chunk of stuff. For this next version the main things that need to get developed are:

  • Finishing the Role Based Access Control (RBAC) through Clerk.js and connecting that with the MongoDB user collection.
    • This is going to be a little tricky and take some time, but is highly important for the user roles and differentiation in feature access.
  • Creating navigation component for all user roles and screen types
  • Creating UI for all of the pages
  • Connecting TanStack query with front end components

In short, when this is done, we should be able to have a strong user flow for the application, which will allow us to create interviews with users and get feedback on the design.

Final Thoughts

The development of the Foodable application is going pretty well, all things considered. We have a really strong base and good understanding and design about how this application will be developed. Along with this, the members of the team are all now familiar with each other and a sense of trust has grown among us, allowing for good communication and nice development. I have no doubt that this application will be great and we will all continue learning a lot in the process.

Happy Holidays To Everyone!!!

If you have any questions, please feel free to comment below.

Categories
Capstone RAG

Couple Weeks In…

Hello 👋,

Let’s start off by discussing how my capstone project is going so far. Fortunately, my proposed project, Foodable, got approved, and I was assigned to it with two great teammates. In short, I’ve learned a lot. One of the more challenging aspects has been figuring out how to implement an efficient and highly scalable Retrieval Augmented Generation (RAG) method. Since this is cutting-edge in today’s tech stacks, there are so many ways to implement it, each with its own pros and cons. For our needs, we decided on MongoDB Atlas along with Atlas Vector Search, paired with AWS Bedrock for embeddings and language models. This setup promises high customizability and scalability. It will certainly come with its challenges, but based on research, it should pay off in the end.

As for the capstone course itself, it’s been pretty good. The course is structured in a way that assignments build on each other, which I find very effective. For example, the smaller Preliminary Design Documents, which we did individually, helped my teammates and me brainstorm and figure out the design for our application in the larger, more technical Design Document. However, a recurring issue has been due date extensions. These assignments aren’t small, even the shorter ones, and they’re usually due on Thursdays. But every project so far has had its deadline extended to Sunday. I think setting the due dates for Sundays from the start would align better with development sprint timelines and reduce requests for extensions.

Another exciting development in my life has been the job opportunities that have come my way since attending the OSU STEM Fair. If you haven’t attended that event before, it’s fantastic and packed with opportunities. Thanks to the fair, I’ve had interviews with multiple companies, many of which have progressed to second-round interviews, and I’m preparing for those now. Overall, my career prospects look promising, and I’m excited to see what happens next.

While researching RAG methods, I encountered the term “vector embeddings” frequently. They’re essentially the foundation of how RAG methods function. Creating embeddings relies on linear algebra, and although I like math, I haven’t studied beyond integral calculus since I’ve been focusing on CS classes to graduate. However, I’m genuinely interested in learning more about vector embeddings, semantic similarity, scalars, and related topics. Over winter break, I plan to take a freeCodeCamp course in linear algebra to broaden my understanding of large language models and machine learning. I believe anyone interested in these technologies should have a solid grasp of linear algebra.

Something else I’ve noticed is the use of generative AI for coding. I could talk about this all day, but if you’re interested in learning why it might make you a worse programmer, check out this article.

Lastly, I’d like to share a tip that has significantly improved my collaboration and teamwork. I’ve been part of both good and bad groups, and one area I’m working on is team communication. Sometimes, it can feel like everything rests on your shoulders—let go of that idea. You’d be surprised how much just being honest with your teammates (respectfully) and asking for help can lighten the load.

If you have any questions, please feel free to comment below