SWAPI was a paired project that focused heavily on fetching data from the Star Wars API and then cleaning the data to put it in a usable format. The project also utilized Router, asynchronous functionality, UX/UI design, and test-driven development.
For this project, I played more of a tugboat role than I normally do. There were some features that my partner really wanted to implement, and when I found that we were spending too much time in those rabbit holes, I set timers for us to either ask for help when we got to a certain point or move on with more important things with project requirements. Overall, though, my partner and I worked really, really well together. We both prioritized this project above everything else we had going on, and that allowed us to put in the hours needed to make this a polished project. Our mutual enthusiasm and attitudes was really motivating for one another, and he was very fun to work with. We also expressed a lot of gratitude for one another, which made us feel appreciated and motivated us to keep putting our all into our project.
What was a specific technical challenge your group faced? How did you approach this challenge? What went well? What was a struggle?
A technical struggle, and the point of this project, was to implement the nested fetching and resolving the promises in a way that made the data usable to display on the DOM. We started the nested fetching on day 1 of the project, and I'm glad we did! It took us nearly 6 days to fully implement and clean the data in a way that we needed to correctly display on the DOM. There were many moments where we thought we had finished fetching, only to move on to the next step and realize the data wasn't actually what we thought it was yet. There were moments when I wanted to restructure our entire application so that the fetching wasn't all happening on App load, but through his encouragement (with a healthy dose of both of our stubbornness), we kept at it and eventually found a way that worked. If I were to go back and re-do this project, I think I would have restructured it to only fetch the data needed at any given time to simplify the data and decrease overall waiting time on App load.
One perosnal takeaway from this project is that attitude goes a LONG way in working on a team. Even when my partner and I were discouraged, frustrated, and had been working for 10 hours straight on something, our positive attitudes kept us motivated to keep going or to come back to it the next day with enthusiasm and vigor. I really enjoyed working with my partner, and our words of encouragement for one another made the overall experience really enjoyable and fun.
Technical takeaways I have from this project are around Promises (especially resolving them) and testing. Resolving Promises proved to the be the trickiest technical thing that we did on this project. We thought we had resolved promises time and time again, only to find out that they were not in the structure or the data type we thought they would be. With one level or even two level Promises, resolving them is more straightforward, but there were times when we were so nested in our fetching that we thought we were resolving things when, in reality, we were still one of two levels away.
My testing experience exponentially increased with this project. Because testing is syntactically different in React, this project was great practice to get more testing experience, especially with async functions. My partner and I only scratched the surface with async testing, so I would like to get more experience with that, as well.
My partner and I did not get to the final iteration, which includes setState and rendering just the favorite characters. In our next project, I'm looking forward to implementing this, as I have some ideas for how to approach this -- my theory is that you have a property held in state, e.g. isFavorite, and then just render those cards using their truthy value.
I'm also looking forward to practicing everything we've learned so far so that it sinks in even more: routing, async functionality, testing, and getting even deeper into React.