This repository is meant to serve as an example for our ideal solution to the FE home assignment.

- Use a router and the URL - We believe that the best and easiest way to deal with filtering and sorting is by leveraging the URL and search params. A client-side router gives you the primitives you need to manipulate the URL in response to user input.
- Use the platform - We believe that you should leverage platform APIs as much as possible to offload as much work to the platform you are running on, e.g.,
URL
,URLSearchParams
,fetch
. - Use next-gen tooling - We believe that FE tooling has evolved a lot in recent years, and tools like
Vite
have superseded their predecessors. - Use Tailwind - We love Tailwind and believe it is the absolute best way to style web applications.
- Use Typescript - We love TypeScript and believe it greatly improves DX (Developer Experience).
- Use Lodash - We believe that "line noise" matters, and tools like Lodash help condense and abstract common operations, resulting in a much more readable and clear codebase.
- Use Prettier - We believe that code organization matters. Much like having a tidy desk or bed matters for our ability to have clear minds and focus on the problem at hand.
- Don't over-abstract - We believe that every abstraction might provide value but always has a cost. Think carefully about what abstractions really serve you and make sure that "The juice is worth the squeeze."
- Don't abuse React - React is a low-level tool and is meant for abstractions on top of it. If you are wrangling a bunch of state and effects, there is almost always an easier way to do it.