Steven

Invoice App

Native desktop app to track and generate invoices

I created an invoicing native application, with Electron front-end, Golang backend, and Firebase DB. Users can enter inventory items, customer profiles and payment histories, the invoice data, and download/print the invoice as PDF. With its offline capability, their data are saved dirty in the device local disk and synced to the online DB as soon as a connection is detected.

For a full overview, you could checkout this reflection post of the first version from August 2020, and another post of the second version update.

Also note that the content of the app is Indonesian.

Github README:

Electron app that powers the DP Invoice APP. See the Backend built in Golang.

This app is created with:

  • Electron React Boilerplate
  • Firebase Realtime DB to subscribe to realtime events
  • Tailwind as style library
  • ejs-electron as a template engine for the invoice
  • react-table to provide hooks fro creating custom tables
  • react-hook-form to provide hooks for simple form creation and validations

Starting Development

  1. import ./app/config.json file for secrets (firebase configurations and production server)
  2. Start the app in the dev environment.
   yarn dev

Packaging for Production

To package apps for the local platform:

yarn package

Demo

Add + Edit Invoice

Add new inventory Item

Download and edit existing invoice PDF

Error Handling when Offline and works again once the internet is available

View the project on Github

Github README:

Backend API that powers the DP Invoice APP. See the native app built in Electron.

This app is created with:

Starting Development

  1. import ./config/config.json file for secrets (firebase configurations)
  2. Install dependencies
   go get
  1. Run the app
   go run .

Run Unit Tests

  1. Run test for invoice API
   go test ./invoice
  1. Run test for inventory item API
   go test ./item
View the project on Github

Get my latest articles, learnings, projects

At most one email a month and no spam.