We have just deployed our first Electron app for Windows (Linux and Mac on the way), built entirely in Wappler, and the Client looooooooveesss it! They especially like the Kiosk mode option Electron offers. Now all the screens in the office display the same thing. I’ll document what we did some time in the future as will have to clear with the Client exactly what we can divulge. I’ll say this it’s a damn lot easier than Mobile development that is for sure!!
So we getting a tutorial?
It’s documented already:
Of course but I don't think it is as necessary in comparison to the Mobile side. Same two site set up, one for the application and one for the Server Actions. Add the Electron Framework, App Connect, Bootstrap (local). Build as you normally would with any project. Select your Actions from the remote site where you prepared all your Server Connect Actions. Click build (although there are many options available via the console and by reviewing the Electron documentation), or Run on Connected Device. Your Project will be compiled and stored in the Platform directory of your Electron Projects root directory. There you will find your Application and its associated files, your application.exe for example. Boom you're done!
Will wrap that up there for now but if the above is not enough to get started I'll try and put something together over the coming weekend.
Just a quick note!
Sometimes you have to click this once or twice, also on Windows maybe Administrator rights may be required, right click on Icon and run Wappler as Administrator.
This may be a silly question, but where is the data stored - or where could it be stored? If it’s stored locally, does there have to be a web server etc., or are there other options, using SQLite for example?
Generally, I suppose I’m wondering if there’s any simple way of distributing Wappler/Electron based apps simply? If not, perhaps there are or will be possibilities using Docker (but this might not be that simple).
I would certainly be interested in any more information/tutorials etc… Thanks.
Not silly at all Tom!
We are drawing from a MySQL database (via a second Project in Wappler where all the Server Actions are stored) with this Client, but would like to utilise local storage and then sync with a master at some point, for those on the move and locations with no network access for example. Spoken about here:
With regards to distribution this has worked really well and been very simple. Not too sure about security wise as am trying to figure that side out now so maybe able to offer some updates on that side a bit further down the line. Hint, hint, need a Java based Security Provider
Thanks @Dave. So the database is hosted online? I was wondering what the possibilities might be if the data was not online.
I was wondering if it would be possible to create a desktop app which is self-contained and easy to distribute (not requiring the end-user to set up a database etc.). Eg could you use Wappler to create an app like Wappler itself - where (AFAIK) a SQLite database stores the user data? (I know Wappler doesn’t use Electron, but something similar.)
In what way are security issues different using Electron?
Great to hear Dave! Congratulations!
Maybe you can share some screenshots if the client allows?
You can not use Security Provider on .html pages. Currently controlling this via the users session set during sign-in. Same issue with Mobile development. No biggy though! Can apply Security Provider in all the Server Actions.
@TomD, I am also waiting on Wappler team to add nodejs and SQLite in order to build a truly offline desktop app. What you’re asking is not currently possible.
I see - that didn't occur to me, and would be a problem. I shall have to experiment with Electron at some point. As you can tell, I know very little about it.
Thanks @kfawcett. SQLite is available, but I imagine it can only be used in the same way as MySQL etc. (I’ve never used it.)
Finally got the go-ahead there. Will post some later. Using the mighty Wappler everything a website can do an Electron package can also do. Goes for all data interactions, CRUD no problem, security and access all good, currently no Security Provider included in any of the pages that was a tiny issue though and maybe a future thought for the Wappler team for an adaption of Security Provider for HTML pages..? Overcome this on the server side though using Security Provider and Security Restrict on all the queries. Unauthorised sees users redirected. As it is a closed system not open to the public this is acceptable to the client. FullCalendar implemented using Server Connect for events, as well as full translation again using Server Connect. All navigation is stored to the database with easy updates, thus new items can be added seamlessly to extend the application. Relaxing screensavers if inactive for ten minutes, using the Action Scheduler. Some custom sounds just as confirmation of your actions (this is great as touch typists get an acknowledgement upon success or failure), we have't used sounds since the days of Actionscript and MM Shockwave! All in all everyone is very happy. The design is modern, responsive, and a web version which looks and feels exactly the same also partners the software. Redirection for various groups is all handled dynamically via Server Connect page Actions and events. Very low footprint. Quite possibly one of the nicest things we have put together in a long time as we pretty much had full reign over styles and layout (nothing worse than the client going all 1990's with their designs and then forcing you to create abysmal output).
Definitely the future for us, in big part thanks to Wappler!
@dave, are you able to run actions within the app without having to communicate with the server?
For example: on open of the app, query an API for new data and store locally.
Very soon you will be able to do full client side workflows within your app/web site! Just like the server connect ones - but then client side! Running even as web workers and service workers!
So you won’t need NodeJS support for that! It will also run on the browser!
Electron allows for great interactions with the host operating system including the ability to communicate with API's without the need for any specific technologies, and not just API's. Essentially if you have the knowledge or the time to research these abilities you can do just about anything from within the application itself. Local storage can be accessed and written to, and read from (really looking forward to what Wappler will allows us to do here in the future). Being Chrome based you also have the advantage of using its abilities from within your application inherently. The scope of these uses is immense. We have only been playing with Electron for a few months now and its abilities continue to amaze us. Automatic updating is a breeze once you have your certificates all sorted (simple process and very well documented). In short there is not a lot you can't do and an incredible amount you can do. We are forever discovering new things. It's like being a kid in a sweet shop when partnered with Wappler and its awesome abilities.
I'm not sure if I answered your question here...? I think George has replied during composition of this reply.
I've no doubt at all that within a couple of months Wappler will offer all the user scenarios we could dream of implementing with regards to obliging local storage even further.
I’ll put up a couple of videos tomorrow as images simply look like a website and do no justice. We release another version for the Client (tomorrow) with some updated features so will make for a better example I am sure.
Thanks @george! I’m interested to see what you’re developing. NodeJS is something I would like to use as there are many packages available like http://nodemailer.com/extras/mailparser/.
Are you talking about general Electron abilities or things you've achieved with Wappler? I didn't think client side functions were possible as Wappler only has Server Connect/Server Actions.