I created a full stack open source invoicing application using the MERN stack

Hello All,
This happen to be my first post since I join this forum in 2019 and I’m happy to share with you a side project I’ve been working on for some months now. Having gone through many web projects on Github, I noticed that these projects are mostly ecommerce or blog sites, so I decided to do something different in order to challenge myself and to up my skills in software development.
I build a full stack invoicing application, using the MERN stack (MongoDB, Express, React & Nodejs). This app is specially designed for freelancers and small businesses, but can be used for almost any type of business need. With this application, you can send beautiful invoices, receipts, estimates, quotes, bills etc to your clients. I have made the Source code available in my GitHub profile for anyone who is interested. You can also find a Demo link in the Github repo of this project.
Invoice Dashboard

Key Features

  • Send invoices, receipts, estimates, quotations and bills via email
  • Generate and send/download pdf invoices, receipts, estimates, quotations and bills via email
  • Set due date.
  • Automatic status change when payment record is added
  • Payment history section for each invoice with record about payment date, payment method and extra note.
  • Record partial payment of invoice.
  • Clean admin dashboard for displaying all invoice statistics including total amount received, total pending, recent payments, total invoice paid, total unpaid and partially paid invoices.
  • Multiple user registration.
  • Authentication using jsonwebtoken (jwt) and Google auth

Technologies used

This project was created using the following technologies.

Client

  • React JS
  • Redux (for managing and centralizing application state)
  • React-router-dom (To handle routing)
  • Axios (for making api calls)
  • Material UI & CSS Module (for User Interface)
  • React simple Snackbar (To display success/error notifications)
  • Cloudinary (to allows users to upload their business logo)
  • Apex Charts (to display payment history)
  • React-google-login (To enable authentication using Google)

Server

  • Express
  • Mongoose
  • JWT (For authentication)
  • bcryptjs (for data encryption)
  • Nodemailer (for sending invoice via email)
  • html-pdf (for generating invoice PDFs)

Database

MongoDB (MongoDB Atlas)

I have written a detailed documentation of how to run this project locally, and it can be found in the readme file of the project repository here.

I intend to keep adding more features to this application, so if you found this project interesting, please give it a star, it will encourage me a lot.

32