Skip to content

vogler/web-tech

Repository files navigation

web-tech

This repository is for trying out libraries/frameworks/tools for web development in order to evaluate what I like best. Since tech stack is often a misnomer, I'll just call it tech.

Activity is good, but it seems there's a lot of noise, projects being hyped for some time and then slowly dying. It's not motivating to waste time on research and setup just because some other framework becomes trendy.

The included repos use different technologies for a similar web app - some todo/task/time tracker.

  • tasktime-2019 - Svelte (reactive UI), Firebase (auth, hosted real-time document store), Bulma (CSS)
  • tasktime-2021 - Snowpack (build, dev), React (reactive UI), Chakra (UI component lib), Prisma (typed DB query builder), grant (auth)

The idea of https://todomvc.com is similar, but it's outdated and does not include backends.

General opinions

  • functional > imperative, static > dynamic typing, immutable > mutable
  • language: since JavaScript is likely needed for frontend programming, it makes sense to use some language that at least has a transpiler to JavaScript
    • so, Ruby, Python, PHP etc. are out, also because TypeScript is nicer anyway (type system, interop, 'isomorphic' (misnomer again) code, i.e. share code between frontend & backend) and NodeJS has a good JIT compiler
    • in general just simpler to use the same language for everything
    • there are some Functional Reactive Programming projects in Haskell and OCaml, but haven't checked those out since Elm and Opa which was way ahead of its time, but somehow never took off
  • TypeScript > JavaScript:
    • Coming from OCaml, it's annoying that TS has no variant types, pattern matching and no full type inference.
    • Type erasure and lack of good meta programming like ppx makes it hard to fix things in external libs.
    • Unsound type system hasn't been an issue so far.
  • views defined in the same language like jsx/tsx instead of some new template language like in Svelte
  • React > Angular follows from the above
  • UI component library > Tailwind CSS
  • Query builder like Prisma > ORM like TypeORM
  • open source, local > closed, cloud only, vendor lock-in; PostgreSQL > Firebase, AWS
  • bundler/build system needs to be fast and have HMR/auto-update
  • package manager: Python tooling is pure chaos (PDM > Poetry > Pipenv > venv > pip), while npm just works and has everything in one tool.

Notes on tech - frontend to backend

UI components

Reactive UI

Forms/validation

(Type-safe) client-server requests

Frontend frameworks for existing backend

Server: render views, serve static files, API

Database abstraction, ORM, query builder

BaaS (self-hosted)

Reverse proxy / load balancing

About

Evaluate libraries/frameworks/tools for web development.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published