Skip to content

Latest commit

 

History

History
45 lines (37 loc) · 1.77 KB

File metadata and controls

45 lines (37 loc) · 1.77 KB

TODO - Improvements & Shortcuts

Time Constraints

  • Used Math.random() for rate simulation instead of real forex API
  • History stored in memory only (resets on page refresh)
  • Basic input validation (could be more comprehensive)
  • Simple debouncing with setTimeout instead of proper debounce utility

UI

  • Fix EUR symbol overlapping with number input arrows

Technical Debt

  • No PropTypes or TypeScript for type safety, since this is a js project, we could benefit from using prop types
  • Rate fluctuation range (-0.05 to +0.05) hardcoded
  • Magic numbers scattered throughout code (should use constants and would use it if had time)

Testing

  • No unit tests for hooks and components
  • No E2E tests (Cypress/Playwright recommended)
  • Edge cases not fully tested (negative numbers, very large values, rapid switching)

Responsive Design

  • Not fully optimized for mobile devices (< 640px)
  • Table layout may break on small screens
  • Touch targets could be larger for mobile
  • No testing on tablets or large desktop screens (> 1920px)

Code Quality

  • Could use React.memo for performance optimization, only used in useConverter, could be used elsewhere
  • Missing error boundary for graceful error handling
  • Console warnings should be addressed
  • Could extract magic numbers to constants file

Accessibility

  • Missing ARIA labels on some interactive elements
  • Keyboard navigation could be improved, it is a must because not all users can use mouse and keyboard
  • No focus management for modals/overlays
  • Screen reader support not tested

Features to Polish

  • Add loading state when app first mounts
  • Toast notifications for lock/unlock actions
  • Confirmation before clearing history
  • Better visual feedback when override auto-unlocks
  • Copy-to-clipboard button for converted values