Framework selection for building HybridApp

Hello all, actually I posted this entry into another community, yet not received any replies. Therefore, I wanna share it here to request your opinions.

"Hello all, I’m a newbie in this community, and honestly registered here to ask an important question before starting my journey through building app. I’m a civil engineer and looking for a framework allowing me to build a hybrid app related to my specialized area. I have very very limited knowledge in programming languages, can be said that no :slight_smile:

I read several articles comparing different frameworks in terms of building HybridApp, but not sure that which one is the suitable for my case.

Let me also barely touch on the purpose of the app that I’m planning to create.

Users can fill the form that is created automatically, type of form is completely up to selections done by users.
This form may have some procedures which are forced users applying them during filling process. For example; you need to fill one of the cell in the form after 5 minutes passed. Similar example is shared in the following picture.

I am kindly requesting your supports on deciding which framework I need to use for building an hybrid app outlines, and principles of which are mentioned above."

Best
Anil

Hi

just a few questions:

  • how much time/appetite do you have to learn to code?
  • why do you think you want an Hybrid app?
  • which devices are your users using? connectivity? education? interest in the app?
  • where will the data come from?
  • how are users authenticated?
  • which technologies are readily available for you (company?) O365 etc?
    …and maybe even more

If there is no coding appetite/time on your end, with no coding experience, then I think you may want to resort to Office tooling like building this in excel icm PowerBI. Just as an alternative.

Building the picture in Ionic/JS framework obviously is doable. But will require some work, as pending many things in your use case.

And it can be enjoyable too!

2 Likes

Hello,

Thank you for your reply. Let me clarify the questions you ask.

  1. I’m really flexible in terms of time to learn for coding, progressing in a slow pace makes me understanding more soundly. Honestly, I am feeling excited to learn coding even my plan (mentioned above) is not working and just have a very basic app at the end. I would like to develop myself in this world besides having experience and knowledge in civil engineering…

  2. I read several articles in developing application for platforms such as iOS, Android, windows etc. Very first, I have no Mac at home, and have limited budget. I am not feeling good to develop app through Xcode-swift in virtual machine on windows because of legislation etc. Another reason is marketing this app in both platforms, I do not want to just stay in one platform. Less integration issues, cost of development also other factors… As I mentioned, I am new in this world, not have business, only want to improve or develop my skill in this world meantime, I wanna do somethings relevant to my industry.

  3. As a first stage, mobile phones and tablets are the devices, and people from industry like me can use this app if it is developed successfully as I expect.

  4. Data is provided by users that is taken from the field. For example, they perform a test in the field, and get some measurements. These measurements are provided to the app. At the end, the app gives you some graphs, evaluation etc.

  5. At the beginning, accessing the data of one user from another user is not allowed, but I’m gonna plan to give user’s decision about whether they post data into the shared database (that is accessible to everybody). Eventually, that database may be important to civil engineers in the industry, especially before you design a project… Results in this database can be used statistically too.

  6. As I mentioned, I’m now working freelance, as a civil engineer. Regardless of job opportunities I can find with private construction companies, I wanna still continue this journey hopefully end up with building a successful app attracting to my colleagues :slight_smile:

So, may I have your opinions about which framework I should choose before start my journey using? Prior to this journey, I need to understand the framework very well… get some tutorials, LinkedIN learning videos etc…

Best
Anil

Hi there,

Thanks for the elaborate response. Happy to give my view, but be aware, there are many views and mine is driven by my own objectives in app building (single developer, code less with most results, ease of access to knowledge, always looking for not spending money).

Assuming you want to stick to hybrid (html-css-js + native stuff), then there plenty choices to make:

  • how to deploy to mobile/tablet: PWA, capacitor, or cordova - I like PWA nowadays because many “native-feel” APIs are available and I focus on Android devices. iOS works also OK-ish, but with restrictions. If you don’t need very specific plugins, this is a nice way to convert visitors to users, as there is no Play/App store neded. And turning to Capacitor/Cordova will be easy.
  • On the UI framework there are many choices: Ionic provides a cool framework of components that give a cool mobile feel. But there others as well. Material design, and CSS frameworks. I am no expert in this.
  • Then there is the difficult story of JS frameworks. Angular/Vue/React/Svelte/plain vanilla/etc… I think here you need to figure out which framework gives you the best support. Of course, there are reasons related to performance and bundle size, but I wonder if in your use case, people will notice. The Developer Experience imho should be more leading. I opt for Angular given the broad community and information/tutorials available. And many things work out-of-the-box. I think Svelte is REALLLY cool - less code, do many things. Vue seems to be a nice one as well. Either way, make sure you use something like Typescript to help you prevent many mistakes in runtime. You want bugs to appear at compile/transpile time. Or better: hinted in your editor (mine: VS code)
  • The other important point is your backend - cloud (AWS, Azure or Google) or your own DB hosted somewhere. Its a pricing/scaling thing, besides time you like to spend learning how to setup. It can be as easy as installing a Raspberry Pi with MongoDB etc. I go for Firebase, because it has a generous free tier, many cool APIs and the documentation is really good (JS/angular). Looking at your description, the backend setup is likely to enforce many things you foreseen, or protect. It is a world on its own (nodejs, express server, REST). If you backend work depends heavy on CPU/storage (like calculations/AI/images), you may want to avoid cloud to begin with. Because if you screw up the code, you end up with a huge billl. API services aren’t capped to your interest.

If you would have asked me to work on such a project, I’d go for a PWA to start with, so you can easily deploy and test with users. Which helps building a great app. The it will easy to add native plugins. Working now in Angular/Ionic/Firebase, and still happy with it.

What are the bandwidth restrictions? Location (global)? Do you need to connect with IoT and other civil engineering stuff (that would require more backend stuff).

1 Like

As is typically the case, I agree with virtually everything @Tommertom says here. I would also go PWA. I would recommend making every effort to avoid native plugins like Cordova or even Capacitor for as long as you can. Much of what used to necessitate native solutions can be done using modern enhancements to in-browser APIs (such as media capture).

I also prefer Angular’s architecture over what I’ve seen of alternatives, although freely admit that familiarity bias may partially drive that.

The one place I will differ is on backend. I am very leery of vendor lock-in in this arena, so I eschew all “cloud” providers like AWS or Azure. I also avoid Firebase for similar reasons. I put “cloud” in scare quotes there because I realize it can be common usage for “cloud” to include providers like Linode or DigitalOcean who primarily provide VM instances. I’m instead using it to refer to vertically integrated product lines that provide soup-to-nuts database hosting, DNS, load balancing, VPN, &c.

My heuristic is “before I decide to adopt this technology, can I find at least one other hosting provider that offers it, in case the one I’m considering as primary does something awful (like go out of business or jack prices way up)?”. Under that criteria, I do use S3, despite it having been introduced by Amazon, because IBM offers an API-compatible version of S3, as do DigitalOcean and BackBlaze (also presumably many others - I mention these three off the top of my head simply because I’ve used each of their implementations and can vouch that they are indeed interoperable).

I would bet that you could probably host a backend capable of serving your user base for somewhere in the neighborhood of $10/month on one of DigitalOcean’s low-end Droplets. I’ve run what are probably higher-load systems than what it sounds like you’re describing on that sort of setup. That would be capable of hosting a middleware REST server, an HTTPd to serve your PWA, and a DBMS like Postgres, all in Docker containers.

2 Likes

Hello Tommertom,

I really appreciate sharing your time to write that kind of useful information. As I mentioned earlier, I’m so new in this world;therefore some of terms you used are quite unknown for me… First, I’ll start understanding your post and @rapropos post as well :slight_smile:

Hello Robert (@rapropos ), I also wanna say thank you very much your valuable post regarding this subject.

As both you recommended, I’ll start this journey with PWA.

Thank you again!
Best
Anil

1 Like

Enjoy the ride. Plenty of nice learnings ahead!

Be sure, if u go for angular, to spend lots of time on the Tour of Heroes example on angular.io, read the various guides there and only then revert to the various solutions to common problems found here, stackoverlow or via google

1 Like

I like to return the favor and say your comments are always spot-on and always give thorough considerations on why I am doing things.

For the backend indeed it is short term thinking to lock myself into a sweet sugary Firebase SDK. And no I havent reached scale yet. But I will start investigating the alternatives and learn basics for a migration. So I know what is ahead

1 Like