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.json
file for secrets (firebase configurations and production server) - 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
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.json
file 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