DabApps uses a well-integrated set of open-source technologies to build backend systems and web and mobile UIs. We try to avoid using the very latest cutting-edge tools (there’s a lot of risk working with unproven technology) but to use modern libraries and frameworks that are well-supported, have widespread industry adoption and great developer communities. Over the years, we have developed a consistent stack of basic libraries we use that allows us to build software efficiently in a way that everyone on the team understands.
There are two main design patterns for web apps: multi-page application (MPA) and single-page application (SPA). Our stack has gradually moved from MPA to SPA, though both approaches are equally secure and scalable. With the SPA approach, the server is doing less of the work, and more work is done in the browser. The browser retrieves all of the code with a single page load and any added information is dynamically loaded to the page. Any interaction with the database will happen asynchronously in the background and the page never needs to reload. This makes apps much faster and greatly improves the user experience. Single-page apps enable interaction styles and user experiences that are impossible on a multi-page app. Furthermore, for businesses that want to create both a web application and a mobile app, the single-page app approach is the way forward.
We use React on the frontend for web applications and React Native for mobile apps. The best thing about React Native is that we only need one codebase (mostly) to create an iOS and Android app at the same time. There are 'hybrid' apps, where you also have one codebase, but the UI (user interface) is not native and the feel of the app can be quite different to native apps. With React Native we can build real mobile apps that are actually indistinguishable from native iOS and Android apps.
We believe that the above stack is the best choice for delivering robust, maintainable web and mobile applications to tight deadlines. It has proven to be a stable and scalable set of technologies, and has a direct impact on the speed of our development and project delivery.