Web Technology Landscape and Architectures

  • Traditional server rendered applications

  • Applications with "islands of richness"

  • Single Page Applications (SPA)

  • Server rendered interactive web applications

    • LiveView (Phoenix - Elixir)
    • Livewire (Laravel - PHP)
    • Hotwire (Ruby on Rails - Ruby)
  • Things to consider when choosing technologies for an application

    • SEO
    • What kind of UX does the application require? Are page refreshes ok?
    • Timeline and development complexity
    • Team member experience
    • Team interest
    • Technology stability vs. "shiny new toy"
    • Documentation
    • Community activity
  • CSS Technologies

    • Utility based frameworks (e.g. Tailwind) vs. Bootstrap
    • Bootstrap pros: Easy to use
    • Bootstrap cons: Difficult to cutomize except for colors
    • Utility based framwork pros: Fewer class names, Less code, Safe refactoring, No zombie CSS
    • Utility based framework cons: HTML can be "uglier", Learning curve, Non standard, Requires tooling
  • Frontend JavaScript framework technologies

    • Frontend JavaScript frameworks: React, Ember, Vue, Angular, Svelte
    • Extended frameworks: Next.js (React), Remix (React), Nuxt (Vue), Astro (React, Vue, Svelte), SvelteKit (Svelte)
  • Backend technologies

    • Batteries included vs. "build your own" framework
    • Laravel, Ruby on Rails, Node.js