{"id":39,"date":"2025-03-05T20:42:10","date_gmt":"2025-03-05T20:42:10","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/flowe\/?p=39"},"modified":"2025-03-05T20:42:10","modified_gmt":"2025-03-05T20:42:10","slug":"we-made-it","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/flowe\/2025\/03\/05\/we-made-it\/","title":{"rendered":"We Made It"},"content":{"rendered":"\n<p>Well, here we are\u2014the end of the Alpha development cycle for Foodable. And man, oh man, has it been a journey. In this post, let\u2019s talk about the biggest challenges we faced while developing this awesome application. There were a few, but we\u2019ll stick to the top three.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Fully Utilizing Server-Side Rendering (SSR)<\/h4>\n\n\n\n<p><br>First and foremost, making the most of Server-Side Rendering. For those unfamiliar with SSR, it essentially means that data is fetched and processed before the page is delivered to the user\u2014super helpful. My team and I were still learning the ins and outs of Next.js (one of the most popular SSR frameworks for React) and didn\u2019t implement it correctly at first. The worst part? I didn\u2019t realize our mistake until we were about 75% of the way through development. By that point, we had written a ton of code, and refactoring it to properly leverage SSR was a major headache\u2014but absolutely worth it in the long run.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Mixing Up TanStack Query and Zustand<br><\/h4>\n\n\n\n<p>To clarify, TanStack Query (formerly React Query) is a server-state management library, while Zustand is a lightweight client-state management tool. Unfortunately, we mixed these up in the early stages of development, which led to an absolute mess of a codebase\u2014so chaotic that even Professor Roger would be disappointed. Ironically, I realized this issue at almost the same exact time we caught our SSR mistake. Fixing it took a ton of effort, but once we got it right, everything felt so much smoother and more efficient.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Team Communication Issues<br><\/h4>\n\n\n\n<p>Now, what\u2019s a development cycle without at least one team-related problem? I won\u2019t name names, but one of our teammates barely communicated, and the work they did produce was sloppy and poorly thought out. Both my other teammate and I made ourselves available multiple times throughout the term to offer help, yet they hardly took advantage of it. This meant we couldn\u2019t trust them with complex tasks or longer assignments, which ultimately put more work on our plates. Look, I get it\u2014everyone is busy\u2014but when you commit to something and don\u2019t use the resources available to you, then blame external factors, it just shows a lack of care for the project.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Final Thoughts<br><\/h4>\n\n\n\n<p>Despite these bumps in the road, I learned a ton about different technologies and being in a development team. The development process went well overall, and seeing everything come together was incredibly rewarding. If I had to pick the most challenging problem, it would definitely be the combination of SSR and state management mishaps. The way I solved it was by sitting down, carefully analyzing our mistakes, and refactoring the code piece by piece\u2014painful but necessary. All-in-all though Foodable was chosen because we wanted to build something practical, innovative, and useful for real people. So far, it has met expectations. Sure, there were challenges, but overcoming them only made the project stronger. Now, onto the next phase!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Well, here we are\u2014the end of the Alpha development cycle for Foodable. And man, oh man, has it been a journey. In this post, let\u2019s talk about the biggest challenges we faced while developing this awesome application. There were a few, but we\u2019ll stick to the top three. Fully Utilizing Server-Side Rendering (SSR) First and [&hellip;]<\/p>\n","protected":false},"author":14559,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,11],"tags":[10],"class_list":["post-39","post","type-post","status-publish","format-standard","hentry","category-capstone","category-development-progress","tag-development-progress"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/posts\/39","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/users\/14559"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/comments?post=39"}],"version-history":[{"count":1,"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/posts\/39\/revisions"}],"predecessor-version":[{"id":40,"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/posts\/39\/revisions\/40"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/media?parent=39"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/categories?post=39"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/flowe\/wp-json\/wp\/v2\/tags?post=39"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}