React | Next.js | TailwindCSS | NextAuth | TypeScript | Apollo | GraphQL | Prisma | PostgreSQL | Digital Ocean
Sep 2021 - Present
- Implemented Apollo Client cache to react immediately on user input hidden latency through Optimistic UI.
- Develop APIs using Apollo Server and Nexus for building type-safe resolvers.
- Connect APIs to the Database using Prisma ORM.
- Implement the authorization and authentication using the NextAuth library.
- Deploy a PostgreSQL Database in a Digital Ocean virtual machine.
- Architect the application from end to end.
Forward helps users who want to brainstorm ideas by providing a framework that accelerates the process. It guides you step by step with minimal distraction.
I choose to work with Next.js as a meta-framework for React because of features like Server side rendering, image optimization, file system routing, code splitting(out of the box), serverless Back-End, and router prefetching.
Although it feels like going back to inline styling in the beginning, only during development one realize the gains in productivity. You don't need to come up with class names, which ich an underrated problem. It is easier to iterate the design using the utility classes in HTML elements directly, and implementing responsive applications is a breeze.
It's easy to implement, and it integrates well with Next.js. It abstracts away the complexity of dealing with HTTP heathers, setting up cookies, and managing them. It's possible to integrate with other authentication providers like Google or Github. It was buggy at times.
Apollo - GraphQL
I like to have the end-to-end type safty that GraphQL provides. It was also practical to have all the APIs documentation. Although it improves performance by preventing over-fetching with its query language, it feels pretty verbose. I didn't go down the path of Code Generators. One of the biggest wins is that Apollo Client is not only a fetching library but also a state management solution that help you hide latency by cashing requests and making optimistic updates.
I like to have type safety in the ORM, and the interface Prisma provides is intuitive. It also optimizes database calls, managing the n+1 problem via cashing and batching. One can also write SQL directly.