# Closing Thoughts.

## The Importance of Prototyping

A couple of weeks into our process, we decided to scrap whatever work we had done for our frontend application to begin anew as we realised that our app was lacking in terms of usability and was visually unappealing.

In this second iteration, instead of jumping straight into the development process, we decided to make a relatively high-fidelity prototype of our app on Figma. This helped us speed up our development process as we spent a lot less time on styling-related issues because we already had a good idea of what our app should look like.

## Using Component Libraries&#x20;

One of our goals for our project was to ensure that our app was aesthetically-appealing to our users.&#x20;

Thus, we decided to style and create our own component library, using the default React Native components as a base, so that we could get our user-interface to look exactly as we wanted it.&#x20;

However, this had the effect of greatly steepening our learning curve, as our grasp of React was not firm to begin with.

Eventually, we abandoned the idea of implementing everything from scratch, and got certain components (such as the Floating Action Button) from public repositories, which helped us build out our app a lot faster.&#x20;

## Using TypeScript

Knowing what we know now, we would probably start all future projects with TypeScript so that we can catch runtime-errors during development.&#x20;

Nested components usually receive some form of props from their parents, and, without TypeScript, we would have to either remember what props each component needs to function correctly or refer to code-comments/documentation.&#x20;

Using TypeScript would have probably saved us a significant amount of time as we would immediately be alerted by the IDE if we had forgotten to pass a specific prop to a component (such as name.)
