Draft: refactor: Golang
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