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
- import
./app/config.jsonfile for secrets (firebase configurations and production server) - Start the app in the
devenvironment.
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

Github README:
Backend API that powers the DP Invoice APP. See the native app built in Electron.
This app is created with:
- Go Kit
- jeremyschlatter’s Firebase wrapper to connect to Firebase Realtime DB and provide mock interface for testing.
- Gorilla Mux for HTTP router
Starting Development
- import
./config/config.jsonfile for secrets (firebase configurations) - Install dependencies
go get
- Run the app
go run .
Run Unit Tests
- Run test for invoice API
go test ./invoice
- Run test for inventory item API
go test ./item