You need to create a REST-API in the language of your choice. Once started BOA will send requests to your API and will execute the command you need to put in your responses. The communication between BOA and your API is made with JSON data. In fact JSON is a formatted text string, so it should be possible to create and read them in each language.
As soon as BOA sends a request for the login you start with the creation of your online application. In your response of the login, you will send the information to build the menu's. From that moment on BOA will start the communication with your server. Each time a user selects an option, you will get the request from BOA, and you tell the system what to do.
At this time this maybe looks rather complicated, but it works just as you would have a front-end developer besides you. You would tell him to build the menu system, and you would tell which columns you want in the grids, what you need in the forms, if there are buttons with special actions, ...
Building API server
Maybe building an API server looks very complicated to you. However it is straight forward and it exist for about each language. See the special section in the documentation in 6. Api server.
To create a CRUD application (Create, Read, Update, Delete) there are 4 methods that will be used:
POST to Create
GET to Read
PUT to Update
DELETE to Delete
Everything is posted to an ENDPOINT you need to create. You can create as many endpoints as you want, each with his own data and purpose. In an invoicing application you will probably have an endpoint for Customers, Suppliers, Products, Invoices, ... You can call them as you like, you can define them in your menu, so BOA will know which endpoint to call.
Typical examples could be:
http://yourip:port/v1/customers/100 which would return the data of the customer with ID=100. This would be send as a GET command.
http://yourip:port/v1/customers/grid which would return the headers of the grid with customer data.
http://yourip:port/v1/customers?key=boa which would return the data for all the customers where the key 'boa' is found. It is up to the API to search for that key in the data. So it is up to you to define in which data the system will search. This could only the name, but could also perform searches in other data of your customers table. It's you who define how the search must be made.