File size: 2,121 Bytes
6c4e56e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Please answer the following questions:

- What were some of the major decisions you made during this exercise? What were the driving factors behind those decisions?

  - **Tailwind & shadcn/ui:** Chose to use Tailwind and shadcn/ui for faster development and consistent UI design. shadcn/ui is currently a popular choice in the community.
  - **Folder Structure Update:** Refactored the folder structure for better organization, focusing on maintainability and future extensibility.
  - **Centralized Authentication:** Implemented an auth context and middleware to centralize the authentication system, improving consistency and scalability.
  - **API Integration:** Introduced an api folder for centralized API integration, streamlining API requests and managing responses in one place.

- What changes would you make to the front end of this application to prepare it for production?

  - **Loading Spinner:** Added a user-friendly loading spinner for better UX during asynchronous operations.
  - **Custom Error Messages:** Improved error handling by implementing user-friendly, custom error messages.
  - **Mobile Responsiveness:** Added responsive design for smaller screens (if needed per requirements).
  - **Sensitive Information:** Ensured all sensitive data is securely stored in environment files (.env).
  - **Optimization:** Considered the introduction of useMemo and useCallback for performance optimizations.
  - **Unit Testing:** Added unit tests to ensure functionality and stability.
  - **Accessibility:** Added aria-label attributes to the inputs for better accessibility.

- If you had time to work on one more aspect of the app, what would you focus on and why?

  - **Generalized Error States:** Plan to create more reusable and generalized error states to handle various error scenarios consistently.
  - **Styling:** Ensure consistency in styling with a shared theme (e.g., consistent button styles, spacing).
  - **Centralized State Management:** If the onboarding process needs to persist data across components or pages, consider using a state management solution like Redux or Context API.