A web app for creating, sending, and keeping track of invoices

desktop size preview
laptop size preview
tablet size preview
mobile size preview


  • Responsive layout to fit all device sizes
  • Hover states for all interactive elements
  • Loading spinners are shown during any pending server request
  • Users may choose a dark or light theme appearance
  • Users are able to create, save, send, update, and delete invoices
  • Upon sending an invoice, a PDF copy of the invoice is generated server-side and sent to the client (the 'bill to' email address) as an attachment
  • Users are able to download PDF files of each invoice
  • Invoice form validation (server-side and client-side)
  • Notifies users about errors and/or missing fields upon invoice form submissions
  • Toast messages appear briefly at the bottom of the screen to notify the user whether or not a requested action was completed successfully
  • Users are able to filter their invoices by status (paid, pending, draft)
  • Paginated invoice list
  • Incomplete invoices are not allowed to be sent, and remain as drafts until complete
  • Users are authenticated with an OAuth strategy (GitHub or Google)
  • Unauthenticated users who have already registered may enter their email address and receive a sign-in link by email

Tech Stack

  • Next.js/React Framework
  • NextAuth User Authentication
  • Redux State Management
  • SCSS Styling
  • PostgreSQL Database
  • Prisma ORM