I’m far from being a Xojo expert but, maybe you will find some useful information in how we managed to make a similar setup as yours. By the way, if anyone reading this post has any advice, they are welcome.
We developed a platform for wind turbine blades maintenance. The platform objective is to simplify the inspection/repair process by facilitating data collection, work management and by building an asset history. It is a data management system. The main components of the platform are :
- Web App
- Mobile App
- Desktop App
Web, mobile and desktop apps are tightly integrated and all need to access the main database to work.
Since we are more familiar with the Windows environment, we use Windows cloud servers to host the database and the software. Speaking of database, we started with MySQL but rapidly switched to PostgreSQL. It works very well and is fairly easy to maintain. We actually use two servers. One exclusively for the database the other for the applications and storage (mainly pictures).
Server One : Database server
Not much to say. The database server is “theoretically” isolated. It was only accessed by the software installed on server “One” but, since the addition of the desktop app, we broke that rule. The final design will fix that. Only a couple of open ports for RDP, database (only from server Two), and IP address based restricted access for desktop app users. We will get rid of the latter once the API for the desktop app is ready.
Server Two : Applications And Data Storage Server
We have several applications, all web apps running as Services on their own specific port.
- loggin page (Xojo web app)
- core web application (Xojo web app)
- report generator (Xojo web app with wordautomation and MBS zip plugins)
- data exporter(Xojo web app with wordautomation and MBS zip plugins)
- RESTful API for mobile-database synchronization (Xojo web app)
As mentioned earlier, we use PostgreSQL (V10.x). We like it a lot and just wish that the XOJO PostgreSQL plugin would allow to move more freely through a recordset… It is on a server on its own, to maximize performance and security. It needs quite a lot of power to be as reactive as we want it to be.
The main application is a web app made with Xojo ( using plugins from “Bikini” Softwares and GraffitiSuite ). It accesses the database directly. It only interacts with the report generator and the data exporter.
The mobile app is an “Hybrid Application” developed with the Ionic Framework. The first iteration of the mobile app was made with Xojo but we absolutely needed to supply an Android version so we switched to an open source framework. I’d prefer having 2 distinct native apps but it remains an acceptable compromise. It interacts with the database and the server for data synchronization through a specific API (Xojo web app).
This is our latest creation. It is used to integrate external data into the platform. Since it mainly deals with Hi-Res pictures, Its functionalities couldn’t be managed by the web application. The “problem” is that, like the mobile app, it needs an API to interact with the database if you don’t keep the doors wide open. It does a lot more complex stuff that the mobile app, thus the API will necessitate more time to develop and maintain.
The report generator and the data exporter receive requests from the web app. They use the parameters sent to execute the user request. We verify user authentification for each request.
The mobile API receives POSTs (JSON strings and files) from the mobile app and responds with JSON strings.
This is the structure we adopted. It works quite well. It is a lot of work to maintain since we are bringing regularly new features. Besides that, the system, once stabilized, happens to be very reliable and stable, thanks to the support of the Xojo community…
Don’t hesitate if I can be of any help.