kirushenski / fm-invoice-app

Solution to the Invoice app challenge on Frontend Mentor

Home Page:https://fm-invoice-app.netlify.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Frontend Mentor - Invoice app solution

This is a solution to the Invoice app challenge on Frontend Mentor

Table of contents

Overview

The challenge

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

Links

My process

Built with

  • Gatsby
  • React
  • Typescript
  • Tailwind
  • Storybook
  • Netlify Functions
  • Netlify Identity
  • Hasura

What I learned

This is was my first fullstack app + there is a lot of work with forms:

  • Tested the new version of gatsby-starter-vadyan starter
  • Setup the serverless app based on Netlify Functions
  • Used Netlify Identity as auth provider
  • Played with tables inside Hasura database
  • Practiced with GraphQL queries/mutations
  • Used Fetch API instead of axios
  • Integrated postcss-import to split tailwind styles into separate files
  • Integrated downshift's useMultipleSelection hook with useSelect to create filters dropdown
  • Used formik's FieldArray for dynamic fields
  • Got a headache while integrating custom datepicker form field
  • Tried out hooks prerelease version of react-media
  • Setup dark mode as the context option inside Storybook

Continued development

For the future projects:

  • More fullstack practice with serverless architecture in particular
  • Try out another solutions for the data management to compare

Useful resources

Author

About

Solution to the Invoice app challenge on Frontend Mentor

https://fm-invoice-app.netlify.app

License:MIT License


Languages

Language:TypeScript 73.7%Language:JavaScript 18.9%Language:CSS 7.3%Language:Shell 0.1%