Beware that connectedCallback runs _every time_ a custom element is added to the dom. So you should make sure to only add event listeners once by tracking internally if the element was already initialized.
Because I‘m good in it. And my clients don‘t depend on me - they can choose to continue working with me not because I‘m the only one who knows how the language works, but because they WANT to.
Using Alpine.js is not preventing you from also using vanilla JavaScript in the same project. Combined with alpine-ajax it‘s absolutely enough for progressively enhanced semi-dynamic web experiences. An example: https://filter-munich.com