For an architect, specifically in an enterprise setting, these decisions will be very important and can ultimately determine the fate of your product. There comes a time in every developer’s life where we get caught up in rolling our own libraries. Maybe we think our work is superior, maybe we don’t do enough research on what’s already available. There is a small thing that isn’t quite right in a library so we rewrite it from search.
i. Front End
- Bootstrap: It is the most popular CSS framework, all over the world.
- Bulma: A modern CSS framework based on Flexbox.
- Tailwind: A utility first CSS framework for fast User Interface development.
ii. Back End
- Express: Fast, unopinionated, minimalist web framework for Node.js.
- Hapi: A Rich framework for building applications and services.
- Koa: It is another generation web framework for Node. Js
Examples for the databases are:
- Mongo DB
Web Applications have different requirements from websites. For example – while page reloads may be acceptable for a blog, that is certainly not a case for an application like Google Docs. Your application should behave as closely as possible to desktop one. Otherwise, usability will compromise.
The old style of web applications was usually done by sending multiple pages from a web server, and when a lot of dynamics was needed, content was loaded via Ajax by replacing chunks of HTML according to the user actions. Although it was a big step forward to a more dynamic web, it certainly had its complications.
The diagram shows where all this advancement is at this point. While UI screen is still the focus of the final delivery, code behind part has now become more advanced. They not only separate behavior concerns. But, they also provide many values, such as encapsulation of business logic away from UI screens, unit testable, maintainability. Many application developers and architects have taken frameworks that recommend such architectures and have done a great job implementing in their software.
This architecture provides all the benefits of fully fledged applications such as:
- Layers separate, so it is possible to focus on business concerns in separation from the UI concerns.
- Business logic is completely unit testable and this can be stable and reliable as we need.
- Business logic extends with new capabilities without modifying the present UI screens.
- Finally, the UI layer’s controller and view model is not the center of the domain logic anymore, instead of code behind just maps domain logic into UI screens.
5. Single Page Applications [SPAs]
One downside of this approach is that the applications take longer to load for the first time. Once it loads, the transition between the views(pages) is generally a lot quicker, since its only the pure data that sends between client and server.
6. Universal / Isomorphic Applications
For example – If you are working alone on a simple project, each time you are ready for the build process and upload the resulting files to the web servers. Make sure that you only need to upload resulting files from the build process (transpilation, module bundling, minification) which can be just one .js file containing your entire applications and dependencies.
Furthermore, any comments or feedbacks from your side are welcomed.