Skip to content

Paying tech debt 2026 #1637

@LukasKalbertodt

Description

@LukasKalbertodt

It's been a while since we took some dedicated time to clean up Tobira's code base or generally do things just for the maintainability. Some tech debt has accumulated over time and it would be nice to tackle at least some of that this year.

For now, this issue is just to loosely collect tasks! @owi92 please feel free to just edit this comment to add points.

Updates

Refactoring

  • Backend: move more things into model and clean types across api and other places (making everything more consistent)
  • Generally go through code to identify similar patterns and see if things can be written in a better way. The code has grown and grown and I'm sure there are tons of opportunities to extract common logic, styles or whatever. In the frontend, I feel like we could be able to make better use of a "general component library", i.e. have a set of basic components to reduce code duplication, improve visual consistency and make it faster to add new features.
  • Make the event/series waiting/status stuff more consistent and similar. Also see The distinction between waiting and ready events might not make as much sense (anymore) as we thought #509
  • Maybe make eventById API work with Tobira ID and OC ID, same for playlist and series. That should cut down a lot on almost identical route definitions.

Frontend build system

  • New Frontend build system?

By now, there are tons of build systems vastly faster than webpack. We unfortunately use quite a few features and hooks of webpack to do certain things, making a switch non-trivial. But maybe it is possible and maybe some of those build steps should be solved differently anyway.

Current problems:

  • Slow & no HMR
  • Sometimes crashes due to memory exhaustion (after a longer time)
  • Sometimes "Unsafe call of a(n) error type typed value" errors without reason, fresh build fixes it
  • Adjusting translations in en.yaml only affects i18n type checking after restart
  • ...

Other

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions