Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted 11 months ago

Multilingual & Interactive Invoice App

motion, react, vite, react-router
Victor•1,420
@VictorKevz
A solution to the Invoice app challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


What are you most proud of, and what would you do differently next time?

This has been one of the most challenging tasks I have undertaken so far, which was to be expected since it is a GURU level challenge. I am proud of the progress I made in completing the challenge, along with a few additional features I implemented:

  1. Multilingual Support: The site supports the Finnish language, although some parts are still incomplete. This was my first experience creating a multilingual site, and I encountered numerous bugs along the way. I used the react-i18next library and experimented with lazy loading for optimization.

  2. Currency Selection: On the settings page, I added an option for users to select their preferred currency, which also changes the formatting accordingly. While a more dynamic solution with locale selection might be better, I am currently using preselected locales for simplicity.

  3. Font Theme: Although this isn’t a major feature, I wanted to solidify my knowledge of the implementation, as I had previously done something similar in the Notes App challenge.

  4. Print Out: This was a completely new feature to implement, I initially thought it would be straightforward by using the inbuilt JS API window.print() but unfortunately that had limits like not preserving my styles so I ended up utilizing this package react-to-print

Current Bugs:

  1. Poor color contrast in light mode: While attempting to apply light mode at the root level, I mistakenly mixed up some colors, failing to match the design.

  2. Photo upload: As this app is purely front-end and uses localStorage for data persistence, I couldn't figure out how to store the uploaded image in localStorage so that it would persist after a page refresh! Perhaps when I learn a little bit about the cloud I can enhance this feature.

  3. Accessibility: Yeah this one is still an issue but I have been trying to refer to the docs to write the correct labels. When to announce certain messages like in form validation

Overall, I am pleased with the outcome and the new skills I have developed through this process, and will continue to learn more. I welcome any constructive feedback! HAPPY CODING!

A big thank you to Frontend Mentor for providing such nice designs and well-thought-out challenges.

Code
Loading...

Please log in to post a comment

Log in with GitHub

Community feedback

No feedback yet. Be the first to give feedback on Victor's solution.

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner
  • Use cases

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License