• HTML
  • CSS
  • JS

Invoice app


Assets Provided Include

  • Sketch and Figma design files
  • Mobile, tablet & desktop layouts
  • Professional design system for colors, fonts, etc
  • Optimized image assets
  • README file to help you get started
  • HTML files with pre-written content



Your challenge is to build out this invoicing application and get it looking as close to the design as possible.

You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go.

We provide the data in a local data.json file, so use that to populate the content on the first load. If you want to take it up a notch, feel free to build this as a full-stack application!

Your users should be able to:

  • View the optimal layout for the app depending on their device's screen size
  • See hover states for all interactive elements on the page
  • Create, read, update, and delete invoices
  • Receive form validations when trying to create/edit an invoice
  • Save draft invoices, and mark pending invoices as paid
  • Filter invoices by status (draft/pending/paid)
  • Toggle light and dark mode
  • Bonus: Keep track of any changes, even after refreshing the browser (localStorage could be used for this if you're not building out a full-stack app)

Download the project and go through the README.md file. This will provide further details about the project and help you get set up.

Want some support on the challenge? Join our Slack community and ask questions in the help channel.

Getting started

  1. Download the starter code
  2. Set up the project with version control (e.g. Git)

  3. Read the README.md file and have a look around the project

  4. Download the design files, we provide both Sketch and Figma versions of the design

  5. Get colors, fonts, etc from the design system in the design file

  6. Set up your project/file architecture however you want

  7. Start coding!

Ideas to test yourself

  • Build the project out as a full-stack application

  • Train your eye for detail by getting your solution as close to the design as you can

  • Use a JavaScript framework/library to practice templating and/or building using components

  • Try estimating the time it will take for you to build the project. Then see if the time taken matches up to your estimate. Project estimations are a skill that is often overlooked, but is important for professional developers


Slack logo

Join our Slack community

Join over 45,000 people taking the challenges, talking about their code, helping each other, and chatting about all things front-end!