Bookkeeping is an active AGPLv3 Java client/server administration platform developed and used by ASK-Solutions. It began from bookkeeping needs, but in practice has grown into a broader internal system for financial administration, relations, project definitions, bank statements, equipment and inventory, mileage, notifications, system integration and parts of the organisation’s own technical infrastructure.
The software was developed from ASK-Solutions’ need to keep financial, organisational and operational administration under its own control. Functions are added when a concrete need arises in day-to-day work. Bookkeeping therefore connects data and processes that are related in practice, without requiring a separate closed system for each of them.
Bookkeeping is a Java client/server application. The server is written in Java and can run under Linux or Windows. The client is also written in Java and includes interface scaling and selectable pluggable look-and-feel settings.
The system is used by ASK-Solutions for bookkeeping, VAT administration, general ledger work, financial reporting, relation management, bank-statement processing, asset and inventory management, mileage administration, project definitions, notifications and various internal processes. Although its name points to bookkeeping, Bookkeeping is therefore broader than a general-ledger application: it is an administration platform used in the foundation’s day-to-day work.
ASK-Solutions needed administration software that went beyond the functions of a standard bookkeeping package. In practice, financial administration is not separate from relations, projects, equipment, bank statements, mileage administration, internal processes and parts of the organisation’s own technical infrastructure. Over the years, an obvious question has therefore often been why a common package such as Exact, AFAS or comparable administration software was not simply used. Such packages can handle a large part of financial administration, but they do not automatically provide the combination of functions and interconnections that ASK-Solutions needs.
A custom ERP- or CRM-like solution could provide that combination. Particularly in the 2000s, this could for example mean an on-premises server-based system built and further developed by a specialist company using an environment such as FileMaker Pro, SAP, Magic or other business software. Such a solution could fit an organisation well from a technical perspective, but it also brought substantial development and licence costs and made future changes dependent on both the software environment being used and the party maintaining the custom implementation.
ASK-Solutions already had the technical knowledge to design and maintain such a system itself. Developing Bookkeeping internally made it possible to let the software grow directly with actual practice, add integrations and functions independently, and keep control over both the data and the source code and technical operation. Making the project available as free software also means that this freedom is not limited to ASK-Solutions itself.
Bookkeeping therefore grew from practical use. New functions were added when there was a concrete administrative or operational reason for them, including VAT overviews, asset management, relation management, mileage administration, bank-statement imports, notifications, project definitions, integrations with other internal systems and support for parts of the technical infrastructure.
Bookkeeping is built as a Java client/server system. The Java client communicates with the server through TLS-protected RMI. The server uses MySQL for persistent storage, but the application logic is not tied directly to raw database tables. It uses serializable POJOs (Plain Old Java Objects) and a database abstraction layer with caching, access control and logging.
The server also exposes a REST API that allows other ASK-Solutions systems and scripts to use data and functions from Bookkeeping without going through the Java client. This API is used for web integration as well as connections to parts of the organisation’s own server environment.
Several parts of the underlying codebase come from earlier software work by ASK-Solutions. Some libraries and patterns go back to projects such as A340GC and other Java-based work from the Java 1.2 era in the late 1990s. Those code lines are still maintained and used today.
Next to the general ledger, Bookkeeping provides the usual financial overviews needed for day-to-day administration: balance-sheet views, assets and liabilities, profit-and-loss overviews, configurable journals and VAT overviews per day, week, month, quarter, year or custom date range.
Invoices can be viewed, searched and filtered by account, relation, description, reference, date range and other practical fields. The same approach is available for viewing the underlying bookings and mutations between accounts directly. This makes it possible to work both from the invoice side and from the underlying ledger side.
Bookkeeping also supports bank-statement imports. Imported statements can be settled against incoming and outgoing invoices, allowing payments, receivables and payables to be followed up from within the same administrative environment.
Bookkeeping supports multiple entities. Each entity can have its own accounts, or share account definitions while keeping its own mutations separate. This allows a full chart of accounts, such as an RGS setup, to be maintained once, while only entity-specific accounts need to be added per entity.
The same software can therefore support different administrations without unnecessarily duplicating account definitions, reporting structures and other setup work.
Bookkeeping also manages a project list used within ASK-Solutions. Projects can have a name, number, relation, start date and end date, and can be grouped for practical administration and follow-up.
This project structure is also used by an adapted ASK-Solutions version of WasteBug. That WasteBug version, available under the AGPLv3, adds an extra project field and an extra database column. Through a database view and cross-database foreign-key constraint, WasteBug links that field to the project-definition table in Bookkeeping. This makes it possible to select projects from one or more project groups directly in WasteBug and connect cases, bugs and tasks to the relevant project.
The integration keeps project administration and issue tracking connected without turning either system into the other. Bookkeeping remains the administrative source for project definitions, while WasteBug remains the practical tool for tracking cases and development work.
Bookkeeping is also used to keep administrative track of equipment and other inventory. This includes servers, UPS systems, switches and other network equipment, machines, 3D printers, plotters and other equipment located across different ASK-Solutions locations.
Not every registered item is a financial asset. Equipment may also have been donated, be kept in stock, be used as a source of parts, be refurbished for reuse or be given another destination within a project or subsidy scheme. The registration makes it possible to distinguish information such as origin, status, location and intended destination.
Inventory management therefore connects both with the financial administration and with the practical reality in which equipment can be purchased, used, moved, repaired, donated or put back into use elsewhere.
Bookkeeping manages relations and contacts. These can include suppliers, landlords, cooperating partners and other organisations, as well as relations that ASK-Solutions invoices for matters such as parts or materials used, a workshop, longer assistance or the use of a space.
The system also includes username and password generation, access control and logging. The server can recognise clients by hostname and/or IP address for configured automatic login or entity selection.
Bookkeeping can use email and SMS notifications for administrative and practical follow-up. A notification may for example remind a volunteer or board member that an invoice still needs to be created, that something needs to be arranged for a location or activity, or that a registered situation needs attention.
Bookkeeping also knows the administrative context to which a notification relates. This makes the function different from a standalone calendar reminder. If, for example, an imported bank transaction is linked to an invoice and its administrative status changes as a result, that changed state can also be used in further follow-up. The software can therefore take account of what has happened in the administration since a notification was created, rather than only producing a reminder on a predetermined date.
Where this is used, the server can send notifications through its own MTA implementation.
The Bookkeeping server exposes a REST API through which other systems can use Bookkeeping data and functions without going through the Java client. The main website uses this API through the Nocterra add-on ASK-Accounts. ASK-Accounts runs on ASK-Solutions’ separate account websites and forms a thin web interface over functions made available by Bookkeeping.
Cooperating relations can use ASK-Accounts to manage details such as their contact and address information and to view invoice information and invoice documents. Where technical facilities are temporarily managed for someone within the server environment, the same interface can also expose the relevant functions, for example to configure an email account or move a website from a test environment to a live environment.
ASK-Accounts is not the only way these functions are used. Within the organisation’s own technical environment, administrators can work directly with the REST API and the underlying server functions. The same infrastructure supports ASK-Solutions’ own websites, project websites, internal systems and development and test environments.
ASK-Solutions is also examining how the same approach could later be used within The Owl’s Nest. One possible application is a protected environment for participants who take part through a cooperating practitioner or other organisation. This could include appointments, personal notes and short intake and signalling questions that can be completed in advance, allowing someone to indicate before a conversation what they want to achieve and which circumstances should be taken into account during their participation.
Another planned application is a thin web layer for practical requests, such as requesting a workshop or making contact. Instead of sending such a form only as email, the information could be stored directly through the REST API in a dedicated database and followed up from there.
These functions for The Owl’s Nest have not yet been implemented. Development of the location structure and related website functionality took priority first.
A Bookkeeping server extension can run scheduled tasks, update configuration files and trigger reloads of Apache and Postfix configuration. This allows administrative data to be used by scripts and systems in the organisation’s own technical environment without maintaining the same information manually in several places.
That technical environment is used for a variety of purposes. The servers host, among other things, ASK-Solutions’ own public websites, project websites, internal applications, development and test environments and archived websites. Technical management is also provided for a limited number of websites as part of cooperation or other practical assistance. The same underlying automation can be used across these different situations.
Bookkeeping can also handle print jobs. This allows a remote client to print overviews on a central printer through the server environment.
The Bookkeeping client includes a cashier mode. That mode can connect to a scale, payment terminal and receipt printer. These devices do not necessarily need to be connected to the same computer that is running the client; they can be handled through the server environment.
This uses the same client/server model as other parts of Bookkeeping: administration, devices and practical handling can be connected without depending on a single local desktop setup.
Bookkeeping supports trip and mileage administration. It can track trips for an entity-owned vehicle, and it can also register public transport trips, private cars or bicycles used for deductible mileage and reimbursements.
This makes vehicle and travel administration part of the same system as the financial records, relations and internal processes that depend on it.
Bookkeeping currently does not directly create invoices. ASK-Solutions creates invoices in LibreOffice and then enters them in Bookkeeping. The system can then be used to administer, search, follow up and settle those invoices.
Bookkeeping also does not currently include wage administration or other HR functions.
The Bookkeeping server, Java client, server extensions, the ASK-Accounts add-on for Nocterra, Linux systemd services, scripts and related C programs are available under the GNU Affero General Public License version 3.
That licence choice fits the project because Bookkeeping is not only local desktop software. It includes server-side components, remote clients, REST API integration, web interfaces and operational automation. The AGPLv3 helps keep this networked software available to study, adapt, preserve and share.
Bookkeeping is part of ASK-Solutions’ broader free-software work alongside Nocterra, WasteBug, BackPage, Synergos and other software projects. It was built from practical need, but it also expresses a broader position: organisations should not lose control over their own administration, data, workflows and infrastructure because the software around them is closed, rented, opaque or difficult to preserve.
For ASK-Solutions, administrative software is not separate from software freedom. Bookkeeping handles financial and operational information that the foundation depends on. Keeping that system inspectable, adaptable and under free-software terms is part of the same practical philosophy that appears in repair, documentation, Right to Ownership, free hardware and source-based publishing.
Bookkeeping also shows how older software work can remain useful when it is maintained instead of discarded. Code patterns and libraries from earlier projects were carried forward, adapted and kept in use. In that sense, Bookkeeping is not only an administration system, but also part of ASK-Solutions’ long-term software continuity.
Bookkeeping is an active free-software project developed and used by ASK-Solutions. It supports the foundation’s current administration and technical infrastructure and continues to be maintained and developed where practical needs arise. Although it was built from ASK-Solutions’ own needs, it is available under the AGPLv3 so others can use, study, modify and share it under the licence terms.
The current software includes bookkeeping, VAT administration, general ledger work, reporting, relations, bank-statement processing, project definitions, asset and inventory management, mileage, notifications, REST API integration, ASK-Accounts and operational automation. Some functions, such as direct invoice creation and wage administration, are not currently part of the system.