Skip to content

Draft: refactor: Golang

Martin requested to merge refactor/golang into master

https://gitlab.com/sirimangalo/meditation-plus/-/issues/?sort=created_asc&state=opened&label_name%5B%5D=refactoring%3A%3Ago&first_page_size=20

Technical TODOs

  • Store sessions in a db
  • Invalidate session on user changes
  • Restructure everything under pkg
  • Design
  • Replace hard-coded RedirectURL with env
  • Remove over-abstraction of FormWidget
  • Integrate FontAwesome
  • Re-add Navigation Design
  • Add Renovate

Some ideas for a rewrite and their reasoning.

Technology

Problems

  • SPAs result in a lot of overhead, since state is being transformed and interpreted multiple times (db -> js -> json -> js -> etc.)
  • JS development has become quite complex
  • Maintenance is time-consuming
  • The build process often is a big blackbox
  • A lot of dependencies require constant maintenance. Currently there are 1367 client-side and 610 server-side dependencies in total (including build dependencies)
  • Stylus is abdonaned, SASS/SCSS is slow and Angular Material very complex and coupled
  • The backend has no type system
  • A lot of complex technology involed isn't necessary (like websockets)

Proposal

  • MPA in Golang 1.22+ with mostly stdlib-only
  • Twitter Bootstrap as compiled CSS
  • Web Components for more advanced client-side functionality (like meditation circle)
  • The least possible and maintainable amount of dependencies

Basic Funtionality

  • Reimplement At-Home Meditation Course (#334 (closed))
  • Reimplement Ask (#348)
  • Reimplement Meditation Session (#345 (closed))
  • Remove Chat, Testimonials

Basic Roadmap

  • Rewrite the basic functionality of Login, Signup, Meditation and Meditation Course in its purest form
  • Publish as an alternative/beta version
  • Gather feedback and refine implementation
  • Evaluate which additional features are still required
  • Reimplement missing features
  • Replace the current version
Edited by Martin

Merge request reports