DEV Community

Olaf Ranai { dev-it-out }
Olaf Ranai { dev-it-out }

Posted on • Updated on

Building a simple invoice generator with Node Js

Why โ“๐Ÿค”

After each online coaching sessions, at the beginning, that was a pain to find a good invoice generator platform as I was not yet ready for a 20โ‚ฌ monthly subscription just for handling the invoice part.

None was enough flexible for my own use ๐Ÿ™„ so.. I decided to build my own mini-invoice generator with Node Js โœ… ( that took approx 1h max โŒ›๏ธ )

No more talk..Straight to the point ๐Ÿ’ช๐Ÿผ

The main parts โš™๏ธ:

1. Storing clients in Json :

Yep that one is simple..for now x)

(Note: these are fictional characters of course ๐Ÿ˜ )

Image description

2. Creating the route:
Using express router, just create a POST /invoice route.
const router = express.Router();
router.post('/', handleCreateInvoice);

Then add the Joi Schema. Why ? It allows to define schema and validate the schema before calling the controller/handler of invoice creation.

Source: https://joi.dev/

Image description

3. Handling the invoice creation:

I used the module pdf-kit to generate the pdf to be sent to the client.

pdf-kit

Image description

4. Email sending:
A small function using gmail-send npm module which accepts html as an input Image description

Yep..so what about the result ?

A snapshot of my first trials ^^ ( yep that email should be more personnalized and better structure ๐Ÿ˜Š )

Insomnia POST Call
Image description

Final result ๐Ÿ˜
Image description

The pdf:
Image description

Next steps:

  • Front-end ( React ๐Ÿค” )
  • Database ๐Ÿ’ฟ
  • make it online x)
  • Iterate ๐Ÿ‘€

And you ๐Ÿ’ช๐Ÿผ?

Tell us in the comments which mini-project you built ๐Ÿ‘€๐Ÿ˜Š

Wanna support me ?

I am blogging during my free time ^^ like most people on this platform ๐Ÿ˜Š however I'm not against a small coffee if you want to support me ๐Ÿ’ช๐Ÿผ Link below:

https://ko-fi.com/dev_it_out

P.S: I added the sample on Github ( https://github.com/njivaolafpro/invoice-management-sample

Top comments (28)

Collapse
 
laurencioscript profile image
Gabriel Laurencio

i built a mini project for knowing new chapters of mangรกs in site and warn in my channel in discord when has new releases, basically my project did web scraping in specific web page.

github.com/laurencioScript/sakamot...

Collapse
 
olaf_ranai profile image
Olaf Ranai { dev-it-out }

nice ^^ would love having an english version of the README though :/

Collapse
 
lalami profile image
Salah Eddine Lalami

@ IDURAR , we use are using node.js react.js & redux

Here Tutorial about : ๐Ÿš€ Building and Generate Invoice PDF with React.js , Redux and Node.js : dev.to/idurar/building-an-invoice-...

 Building and Generate Invoice PDF with React.js , Redux and Node.js

Collapse
 
andrewbaisden profile image
Andrew Baisden

Cool project.

Collapse
 
olaf_ranai profile image
Olaf Ranai { dev-it-out }

thanks ^^ was just a small hobby ^^

Collapse
 
leanderd profile image
Leander Dirkse • Edited

You could try to connect it to Toggl Track via their API.
Keep track of time, projects, clients etc.

Collapse
 
olaf_ranai profile image
Olaf Ranai { dev-it-out }

Good idea ^^ will try that one ;) thanks

Collapse
 
cednore profile image
cednore

So Nice!

Collapse
 
bam92 profile image
Abel Lifaefi Mbula

A good short that goes straight to the main point. Hope you'll open source the project.

Collapse
 
olaf_ranai profile image
Olaf Ranai { dev-it-out }

thanks ^^
It is on git

github.com/njivaolafpro/invoice-ma...
( need to clean up a bit the doc though ;) )

Collapse
 
kelseyjj profile image
Kelsey Jones

Awesome article.

Collapse
 
olaf_ranai profile image
Olaf Ranai { dev-it-out }

thank you ^^

Collapse
 
cjw profile image
Clifford Watson

good read

Collapse
 
aaravrrrrrr profile image
Aarav Reddy

Thanks for writing

Collapse
 
olaf_ranai profile image
Olaf Ranai { dev-it-out }

no prob ;)

Collapse
 
felipegenuino profile image
Felipe Genuino

Nice work

Collapse
 
olaf_ranai profile image
Olaf Ranai { dev-it-out }

thanks x)