DEV Community

Cover image for I created a full stack open source invoicing application using the MERN stack
Panshak
Panshak

Posted on

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.

Top comments (45)

Collapse
 
sparshsing profile image
Sparshsing

I had built something similar but not so many functionalities. I can understand the amount of time and effort required. really appreciate your effort in this.

Collapse
 
panshak profile image
Panshak

Thanks so much. I really appreciate.

Collapse
 
sh4yy profile image
Shayan

I am creating a community for developers, would you be interested to join?

discord.gg/ncRsYT33uG

Collapse
 
sparshsing profile image
Sparshsing

I have joined.

Collapse
 
prabhukadode profile image
Prabhu

I have gone through ur app . I noticed one issue there. The issue is that if u login with wrong credentials it says user does not exist as it's correct but the loader which comes in place of login button keeps moving continuosly which is supposed to stop once back end sends response to frond end. I hope u are aware of this issue. If you are not aware of this issue then I think u should look into it.

Collapse
 
panshak profile image
Panshak

Thanks so much for reporting. I'll definitely look at it.

Collapse
 
jefrypozo profile image
Jefry Pozo

Congratulations on a well done project 👏
I'm interested in the database structure, I'm new to NoSQL databases and I'm having a time understandimg how to organize related data. Any advice in that aspect?

Collapse
 
panshak profile image
Panshak

Thanks very much. Can you give an example of what you wanted to do?

Collapse
 
ugglr profile image
Carl-W

There's a lot of interesting code in this project to look at, even is one is not looking for this particular application. Many of the bits and pieces inside are universal to most apps and are worth to take a look at.

Thanks for sharing!

Collapse
 
panshak profile image
Panshak

Very true. Thanks so much

Collapse
 
leodarpan profile image
DARPAN ANEJA

Superb project mate. Truly inspiring!!!

Collapse
 
panshak profile image
Panshak

Thanks so much.

Collapse
 
arun678 profile image
Arun K

Awesome, i would love to try that. But would like to know if you have any documentation describing features, implementation. So that i can take up as user stories and develop each feature and hopefully do similar as urs

Collapse
 
panshak profile image
Panshak

Thanks so much. There's no documentation describing features yet. But I'll definitely look into it.

Collapse
 
n0rig profile image
Josh • Edited

Dude, this is legit. I'll take a look at it later this weekend.

Collapse
 
panshak profile image
Panshak

Thanks very much. I'll really appreciate your feedback.

Collapse
 
michaelguch profile image
michaelguch

Hi Panshak, great work. Am in Abuja. How can I contact you please?

Collapse
 
panshak profile image
Panshak

Thanks bro. Feel free to shoot me a mail. My email is in my github profile

Collapse
 
michaelguch profile image
michaelguch

Baa yawa. I go Hala you.

Collapse
 
franciscolouro profile image
francisco-louro

Thanks a lot for this contribute. I'll definitely use it for a small business experiment.

Collapse
 
panshak profile image
Panshak

Thanks so much, and I'm glad this will help.

Collapse
 
snuppedeluxe profile image
SnuppeDeluxe

Something like this is a project idea for me, too. I will check your code for inspiration 😘

Collapse
 
raguram90 profile image
RamR

Thanks buddy, thanks for sharing I have given one star

Collapse
 
panshak profile image
Panshak

Thanks so much. I really appreciate.

Collapse
 
anucoder121 profile image
Anuj

How much did it took for you to build this?
Also I have just learned MERN, so how much time should it take for me to build?

Collapse
 
panshak profile image
Panshak

It took me close to 6 months but I wasn't working on it full time.

Collapse
 
arthurgorbenko profile image
Arthur

Good job on that !

Collapse
 
panshak profile image
Panshak

Thanks very much

Collapse
 
one profile image
Busari Ridwan

This is awesome! 👌 You did a great job with that.

Collapse
 
panshak profile image
Panshak

Thanks so much.

Collapse
 
sparshsing profile image
Sparshsing

Hi. Do you want to say something?