Project Purpose and Goal.
This project included 4 phases and iterations of the site. Phase 1 simply creating the front-end UI structure and elements with and storing the todos created within memory. Phase 2 was much larger as it involved storing the user information within local storage and extending it to allow for user sign ups and sign ins.
Phase 3 was storing the data and processing it on a local server and allowing for the frontend to consume the data from the locally created API. Phase 4 and most difficult was establishing a completely online service where the backend of the app is hosted on Heroku and the frontend on Vercel then connecting the two for a convenient and quick user experience.
Stack and Explanation
Using CRA (Create React App) seemed like the clearest choice for this web app. As it is an SPA that utilizes graphQL/Apollo to connect to a hosted MongoDB database. Typescript was chosen for its ability to give the project type-safety.
React hooks, custom hooks, local storage, graphQL and mongooseJS safety features were used throughout the app to maintain a smooth user experience. This allowed for a more robust design. In the future there will be unit test implementations to further push the scope robustness on this app. The apps backend was deployed on Heroku allowing for continuous redeploys and updates. The frontend is hosted on Vercel for it's simplicity, speed and reliability.
Problems and Though Process
Like most projects, I ran into a few bumps whilst implementing this app, one particular issue was ensuring code readability and ease of access for user.
After learning more and more about my issues within this app I have grown incredibly, and understood not only my perspective but others as well. I have made a bigger effort to ensure my code is more readable and reusable and utilized props and state in many places reducing repeated code.
Lessons Learned
There are so many many things I have learnt doing this app, it is my first big react app. I struggled a great deal with many new concepts but I did it because I am fascinated with creating unique things that others can use and provide value for them.
Concepts like Hooks, Git management, API construction and integration and many more pushed me to research and test through night and day. I have learnt many important lessons and they will push me to be a better engineer.