Getting into some JavaScript
I had some good movement forward on the React Native project at work today. In fact, ever since I started working on this project last week Tuesday, we've made really good progress on it. Like I said yesterday, we are under some pretty tight deadlines, and I don't think we're going to get it complete by the beginning of June, but I bet we could finish it up by the end of June. Who knows, it might start coming together faster than that. It's just really hard to tell with a project this size. My cohort has done a really nice job of putting together a solid infrastructure for the project to keep us streamlined. Instead of having to write things multiple times, he has saved us from that in many different respects. However, the work on the infrastructure is ongoing, meaning a lot of what I have already done has now changed. For instance, I created an input component for one of my screens, which I thought worked out really nicely. It wasn't hooked up to React-Hook-Forms yet, but that would have been pretty simple to implement. Today, he created a global input component that does all the heavy lifting of React-Hook-Forms, but abstracts it away to its own component. He also set up some different variants of this input that are easily changed with a one-word string. It's pretty handy.
In this instance, I only had to change out one input to make it all work for the screen I am in charge of. Since I had already abstracted it into its own standalone component, it was as simple as switching it out. As soon as I got that done, he let me know he had also built a wrapper for the input that would encapsulate a label and some more React-Hook-Form logic. I sighed heavily, and then looked at what I would have to do to implement it. This one took a little more work, but again, it's going to save me a ton of time down the road. When I go to hook up the functionality for React-Hook-Form, it's going to be a breeze. While bringing in his input took me about 5 minutes, this one took me an hour, but it saved me about a day's worth of work. Factoring in the time I spent on these components initially, it's still a net win. He worked the rest of the day cooking up some other components for the application that would work cross-platform, but none were as useful as this. He came up with a hoverable button, which is usually impossible with React Native, since you can't hover with a finger, but he got it to work so it would hover for the web version. For this, he brought in Framer Motion, my favorite animation library. I've used Pose in my portfolio before, which is the predecessor of Framer Motion. In fact, I was listening to a podcast today with the creator of Pose, and apparently Framer scooped him up when they could.
The big thing I started working on today was using the API in the search page. Right now, I've brought in the API and I have all of the leads populated in cards when the screen initially loads. In order for the search function to work, we are going to need some different filter APIs set up on the backend, which he's still working on. This shouldn't take too much time if he were to focus on it, but he tends to stray in different directions in the project, so there's no telling when it will be done. In the meantime, I can work on the UI for the different filters and get them to look and act right on the frontend without the functionality. I created a little filter button on the search page today, and tomorrow I will work on what happens when that button is pressed. My thoughts are to have the screen either drop down so there's some room for all of the filters, or have a modal that opens up when it's pressed. I really don't have much say in the design, though, which I'm sort of thankful for. My eye for design isn't the greatest, and I respect his opinion in the design over my own. Unfortunately, he hasn't really cooked up anything for this portion of the site yet, so I'll do whatever I can in the meantime. It's tough for just two of us to work on this project; if we had a team of, say, 5 frontend developers working on this, with a designer or two, we could fly right through it. But, at this juncture in my career with this company, I'm very reliant on what he does, and this can often lead to roadblocks. He's doing a lot, and I understand that he can't always get to what I need, so I just need to find a way to continue forward when the work gets thin.
Until tomorrow!