Alex Kovacic

CRM gokalex

The software I run my own business with: invoices with their e-invoicing status, payments, hosting and domain renewals, to-dos.

Register of issued invoices with payments and e-invoicing status
Client
in-house
Work
business web app and PWA
Technology
PHP 8.3 with no framework, SQLite and MySQL, JavaScript, Python, fatturapa.com API, PWA

What it does

Invoices come in from fatturapa.com with their status in SDI, the Italian e-invoicing system. For each one I record deposits and balances, and the amount still due works itself out. Payments can also be read from the bank statement: when the payment reference quotes the invoice number and the amount matches, the CRM marks the invoice as paid on its own; the other cases wait for a confirmation.

Each client's hosting, domain and service renewals sit in a list with the yearly total and in a calendar, which I also follow from Google Calendar through a private iCal address. When a service is renewed, the client gets the confirmation email.

To-dos take attachments (a pasted screenshot too) and the time worked, which becomes the draft invoice on fatturapa.com.

It replaced a spreadsheet with 18 sheets, which can still be browsed in an archive with their original formulas.

How it's built

PHP 8.3 with no framework, with SQLite on the development machine and MySQL in production. Importing the old data is a Python script that can run again without creating duplicates. It installs on the phone as a PWA and has a page for when there's no connection.

The screens of the software come from test copies filled with made-up data.