May 29, 2021

Introducing PDF Donkey

Sambit Sahoo

Project | GitHub Repo | Product Hunt | Changelog

It’s been a couple of months since I joined Evidev LLP (Where i work). In some of our projects we use PDF Monkey for generating PDFs and templating. It’s a very popular service and fairly cheap I guess. While working with PDF Monkey and integrating it’s APIs, I noticed a couple of things.

  • It doesn’t have a Rich text editor for editing templates.
  • There is no support code formatting.

While the later is not big of an issue, I felt that the need for a Rich text editor. It’ll lead to better UX because

  • Most of the bussiness guys won’t have to write code (it’ll make their life easier).
  • The readability will increase exponentially as there will be less HTML or Liquid syntax to be confused.
  • Formatting the template will be much easier (say bye bye to custom CSS).
  • There will be less chances of template errors (forgot a closing tag, we don’t have that here).

From the above points, we can see that it’s not big of a feature (A Rich text editor) to implement. But writing templates directly has some advantages too.

  • Flexibility of writing custom CSS.
  • Developer friendly (We can’t leave them).

After going through the features of PDF Monkey, I felt that why not build a open-source version of this one. I can add all the extra features that I have in my mind and it’ll also be a good learning experience.

Stack

Then I started finalizing the Stack that will be used in building PDF Donkey (Yes that’s the name 😅). It’s as follows

Backend

  • Expressjs
  • SQLite 3
  • TypeORM
  • TypeScript
  • Routing Controllers
  • Google OAuth 2 / JWT tokens
  • Liquidjs (for templating)
  • Node-html-pdf (for generating PDF)

Frontend

  • Reactjs
  • Tailwind CSS
  • TypeScript

I didn’t use PostgreSQL because it’s not required (I don’t think we have that much traffic on the site) and it’s not that hard to setup Postgres if someone wants to self-host Donkey.

Status of the project GitHub package.json version (branch)

There are many features that have been implemented completely (and more coming). A couple of them are listed below

  • Full support for templates.
  • Template syntax highlighting and auto-formatting.
  • Rich template editing.
  • PDF generation through API keys and directly from the platform.
  • Profile update.

As the time of writing, Donkey is in alpha. Not completely ready for production but it can be used to test the platform. Donkey is also licensed under MIT, it’s free for everyone to use. Any kind of contribution is welcome.

Thanks for reading ✌️. Peace ☮️

Comments