Tech stack wallpaper

My Stack for 2023

Over this year I have tried various new tools, frameworks, libraries and other programming languages and have decided to make a few my default for certain projects. Here is a brief overview of my decision-making when embarking on a new project.

My Stack

While these decisions might appear unconventional to some, I’d like to take a moment to elucidate the rationale behind them. Each choice is a result of careful consideration, drawing from my extensive experience with the chosen technologies, and I’ve taken the time to explore alternative options whenever feasible.

Let’s delve into the specifics, where I’ll elaborate on the rationale for my decisions within each realm: the Website, Custom Backend, and App. This comprehensive breakdown will provide you with a deeper understanding of the thought process that underpins each choice.

Websites:

When it comes to websites, I find it helpful to categorize them into three primary types:

Basic Websites

These are the essential sites designed for promoting products or services, often seen in cases like restaurants, small businesses, and even e-commerce stores (though for more sophisticated e-commerce needs, an alternate solution like Shopify might be explored).

The core focus with these websites is rapid deployment and user-friendly management for clients. Furthermore, integrating additional functionalities such as data backups, caching, and form submission storage is a seamless process, particularly when utilizing a Content Management System (CMS) like WordPress.

wordpress logo

Why WordPress? WordPress reigns over 40% of the internet, a testament to its ease of use, extensive assortment of themes and plugins, and thorough documentation. While acknowledging that it’s not devoid of flaws, I hold the belief that, within this particular context, WordPress emerges as the most fitting choice. Its widespread popularity, combined with its agility for quick launch and intuitive client management, positions it as an optimal solution.


Lots of content with emphasis on speed

Amidst the spectrum of rendering methods — Client Side Rendering (CSR), Server Side Rendering (SSR), and Static Site Generation (SSG) — it’s evident that SSG takes the lead in terms of speed. Among the top-tier frontend frameworks, such as Next.js, Nuxt, and Angular, all of which boast SSG capabilities, there’s an underdog that emerges victorious in the speed race: Astro.

astro speed test
Benchmark from astro.build

Astro stands out due to two standout features, and these are the pivotal factors that captured my attention:

Islands: This ingenious feature allows the seamless separation of webpage segments, from static content to elements demanding heightened interactivity. The mechanism is elegantly simple, functioning seamlessly to deliver exceptional Lighthouse scores. This not only enhances user experience but also propels the overall performance of the site.

Ability to Incorporate Other UI Libraries: One of the most exasperating aspects for developers, myself included, is the prospect of grappling with a new language or framework simply due to constraints. However, the beauty of Astro lies in its flexibility — it empowers developers to integrate UI libraries such as React, Vue, Solid, Svelte, and more. This unparalleled adaptability paves the way for effortlessly crafting or integrating custom UI components. Furthermore, this interoperability extends to employing libraries tailored for those UI frameworks. For instance, pairing React with React Query becomes an effortlessly smooth endeavor.

In essence, my choice of coupling Astro with React is a testament to its inherent simplicity, a virtue that resonates deeply with me. It excels in delivering impressive speeds while providing the comfort of leveraging tools I’m already adept with and fond of. The harmonious fusion of user familiarity, stellar performance, and flexibility rendered Astro the compelling choice for my projects.

Complex web apps

Angular has often been brushed off as a relic in the modern web development landscape, unfairly tagged as a “dinosaur” nearing obsolescence. However, this perception doesn’t do justice to the reality. Angular continues to undergo substantial updates, all the while ensuring a seamless transition for existing codebases. Among the notable enhancements are the introduction of standalone components and signals, both of which contribute to a more streamlined framework that’s both user-friendly and boasts a smaller build footprint.

Angular logo

Yet, these facets aren’t the sole factors that endear me to Angular. While it might not be the trendiest choice, it’s a well-kept secret that Angular remains vibrant and dynamic. A distinct aspect that resonates with me is the synergy between Angular’s design patterns and those found in backend frameworks. From TypeScript’s inherent inclusion to the elegance of services facilitated by dependency injection into other components, Angular mirrors the practices that foster scalability and maintainability—similar to backend architectures.

In my pursuit of crafting intricate web applications, I frequently find myself orchestrating backend processes in tandem. Here, Angular’s familiarity with backend design principles emerges as a substantial asset. It streamlines my workflow and keeps my focus unwavering, ultimately culminating in the creation of powerful, scalable applications.

It’s true, Angular might appear as “overkill” for smaller projects, potentially overshadowed by its more minimalist counterparts. Yet, I’m an advocate for looking ahead and ensuring a robust foundation for the future. This sentiment encapsulates my affection for Angular: I value the assurance that, despite being prepared for complexity, I’m building upon a platform that can nimbly adapt and evolve in the ever-changing landscape of web development.


Custom backend

Undoubtedly, the backend selection is a cornerstone that warrants meticulous consideration. While a suboptimal frontend might result in a whimsical UI, the repercussions of an ill-chosen backend extend beyond aesthetics, encompassing critical factors like security, scalability, and performance.

In my journey of navigating backend technologies, two stalwarts have consistently caught my attention, each catering to specific scenarios with precision:

PHP Laravel

When the priority is to swiftly roll out a leaner application, Laravel emerges as an exceptional choice. Its aptitude for rapid development, coupled with its expressive syntax, lends itself well to efficiently crafting smaller-scale projects. Laravel’s true allure, however, lies in its expansive ecosystem that nurtures streamlined development. Features like Laravel Sanctum, which provides a quick and secure way to handle authentication, exemplify the power of this ecosystem. With Laravel’s seamless integration of essential features and its thriving community, the journey from conception to launch is significantly streamlined.

Laravel Ecosystem

ASP.NET

On the other end of the spectrum, ASP.NET establishes its dominance when scalability reigns supreme. Benefitting from a longer lineage and an expansive ecosystem, it interweaves seamlessly with Azure—a synergy that’s hard to ignore. The prowess of ASP.NET is further amplified by its alignment with C#, a language I hold dear. It’s here that ASP.NET shines, presenting an impeccable choice for ambitious endeavors that require the robustness and reliability of a seasoned solution.

dotnet logo

It’s important to note that custom backends, especially those targeting larger-scale applications, can be orchestrated using the Microservices architecture. This approach not only empowers you to leverage multiple backend frameworks as needed but also harmonizes with the overarching architecture. While the option to diversify backend frameworks exists, the golden rule remains to choose purposefully, avoiding the temptation of needless proliferation.

I’m excited to share my upcoming exploration of Supabase. This Backend-as-a-Service (BAAS) solution has garnered a reputation for its unique blend of being open-source, freely accessible, and even self-hostable—a trifecta that’s truly impressive.

The allure of Supabase lies not only in its capabilities to expedite the creation of prototypes but also in its suitability for robust, production-grade applications. The seamless convergence of rapid development and long-term viability makes Supabase a standout choice in the ever-evolving landscape of backend solutions.


App

In the realm of app development, the notion of cross-platform compatibility takes center stage for me. However, the prospect of mastering both Swift and Kotlin, along with their distinct ecosystems, can be a daunting proposition—especially when considering the vast landscape of cross-platform alternatives such as Electron, Tauri for desktop apps, and the ever-versatile Flutter for mobile, among others.

electron
flutter
tauri

Amidst these options, a refined strategy has taken shape, informed by the values I find in Angular (as I previously outlined), further enriched by my choice of utilizing Capacitor. This dynamic combination affords me the ability to seamlessly transition my Angular app onto mobile platforms, equipping it with functionalities like camera access and file system interactions. The result is an efficient process that facilitates the creation of mobile-exclusive apps with remarkable ease.

Angular logo

However, the purview extends beyond mobile aspirations. The need often arises to extend app functionality to encompass Windows and Mac platforms, a challenge deftly met by .NET MAUI with Blazor Hybrid. This selection stands as a testament to the profound attributes that encompass the expansive .NET ecosystem. The fusion of .NET’s extensive offerings, the potency of C#, and the creative potential of HTML and CSS for layout and style converge harmoniously via Blazor. This amalgamation renders intricate logic achievable through C# scripting, culminating in an intuitive and synergistic blend.

dotnet maui

Moreover, the development experience is significantly elevated through the utilization of Visual Studio. The project’s life cycle—spanning from creation to deployment—is remarkably simplified, with the ability to seamlessly publish facilitated by a mere click. This seamless workflow amplifies productivity, ensuring that time is spent innovating, not navigating complex deployment processes.

In the ever-evolving landscape of app development, these considered choices reflect my commitment to harnessing versatile technologies that amplify efficiency, empower creativity, and deliver solutions with a universal reach. The orchestration of Angular, Capacitor, .NET MAUI, and Blazor Hybrid represents a harmonious alignment of innovation and practicality, guiding me towards the creation of applications that transcend boundaries and resonate with users across platforms.



Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *