Skip to content

Latest commit

 

History

History
39 lines (31 loc) · 1.51 KB

File metadata and controls

39 lines (31 loc) · 1.51 KB

Invoice Manager

Frontend Assignment in Rodeo

Context:

  • A project can have multiple invoices
  • One invoice can have multiple items
  • Items may include hours of work at a certain rate or work-related expenses
  • Invoices have due date
  • Over each cost item one of three tax rates, incl. 0%, is added
  • The entire invoice can have one relative discount or fee
  • Fees and discounts happen before tax

Acceptance criteria:

  • I can see the list of projects
  • I can see the list of invoices for each project
  • I can see the price of each cost item
  • I can see the invoice subtotal and total price
  • I can print the invoice

TODO:

  • Cover components/services/helpers by unit tests
  • Move all "magic" strings and variables under shared constants
  • Add lazy loaders and skeletons for better UX, as real data fetching may take some time
  • Add infinite scrolling with virtualized list for the list of projects. (Real data is much bigger, so it's not a good decision to load all data in one request and render a full list)
  • Add i18n for text and currencies
  • Add support for caching API callback results. Some libraries (like React Query) make it possible

Notes:

  • This application has no interactivity. So it's better to use SSR with its pros. It's possible to implement with Next.js

Getting Started

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.