In the past weeks I migrated my code generation tool – GeneratorApp to the web – developapp.online. It is PWA, Flutter UI, CRUD operations over data saved in the browser in an Indexed-db Storage. The result you can get after synchronization is the same type of app but with data models – the ones you have entered in the app itself. Here are some long term reasons I have done it this way.
PWA – Desktop Apps are Dead – long live the Desktop Apps. Yes, you can continue to create Desktop Apps, but with one source code base, you’ll target just the Desktops. With the current web – you could target all platforms – mobile and desktop, and also every old and new device that has, have or will have a browser supporting the internationally standardized features. The web has evolved and will continue to do so. APIs are available – officially accepted or drafts – to bring the previously accessible only to native apps – hardware and software features – access to camera, GPS Location, signing APIs (using software or hardware key), canvas 2D and 3D, etc. One of the features – Add to Home Screen – is creating a shortcut on your device – desktop or mobile – that opens the site directly, without the address bar of the browser. This will make tools like Electrum, Phonegab/Cordova etc – obsolete.
In the past year I’ve published several projects with the Flutter Framework – what you eat app (Web, Android, iOS), Eli-home web app and the last – GeneratorApp Web app. Some more experimental are sitting on my computer. I chose it over react native and native script, because of developer experience, good documentation, easy to learn and fix most of the “not yet understood” widgets, concepts and exceptions. And lately I am focusing more on the web target because of PWA. Yes, I know that the web performance will be less good than the native, but, because of the cross platform nature of the framework and the way I structure mobile projects from year and a half, a migration will require mostly changes in one layer – the low data access layer, and some small UI things that have better native alternatives. I hope the flutter framework team start utilizing WebAssembly and that will improve the performance.
A year or two ago I setuped Jenkins & Docker together to build automatically projects for the Android version of GeneratorApp. Several of my other projects started having hooks that started the compiling, testing, building, deployment of the apps after simple git push. Jenkins have a job chaining feature that I also used. Currently 4-5 jobs are triggered periodically by Cron statement. I am constantly looking up how to add more and more small and big tasks to automate.
The site uses Relational (on the server) & Indexed DB (on the client) databases. The second is not exactly relational, but I made the crud operations, that are exposed to flutter, have the same API. The reason for the choice was to learn it and because it is accessible from the service worker that is running outside of the DOM window scope. Not sure if it true, but maybe, the need of nosql, big data and other types of databases arise because of their scalability features (especially horizontal). Looking around the Internet, I personally see the links between the record types displayed everywhere – users, photos, skills, Jobs, statuses, posts, categories. All stuff is connected in some way.
I have some progress on GeneratorApp v2 (not available yet to the public). In it, I am trying to allow creating apps with data models I am noticing all over the Internet. Also, I’ve come to the realization that it is a no-code, minimal viable product creation tool. It could be improved if I encounter the need from my own experience or from constructive feedback to generate more of the repeating tasks and modules. But, in the end, it will need not currently existing customizations. And that’s. Okay. If it was possible to create something universal, solving all kinds of problems, somebody smarter would have done it already.
P.s. If any of the results of my no-code tool fits your basic needs and you need to expand it, you could contact me and receive the source code (based on the complexity of your models) for some small fee (it may depend on the models complexity).