# Vue - "Tech Stack" ## Setup ### Legend * Must-have = :heavy_check_mark: * Strongly consider = :thumbsup: * Still unsure = :thinking_face: * Probably shouldn't be considered = :thumbsdown: ### Current proposed setup * Vue 3 :heavy_check_mark: * Typescript :thumbsup: * [ESLint](https://eslint.org/) + [AirBnb Config](https://github.com/airbnb/javascript) – JS linter :heavy_check_mark: * [Vue Router](https://router.vuejs.org/) – (Nested) routed / mapping with SPAs :thumbsup: * [Jest](https://jestjs.io/) – Unit testing :heavy_check_mark: * [PrimveVue](https://primefaces.org/primevue/showcase/#/setup) – Amazing UI framework with full Vue 3 and Typescript support :thinking_face: * [Quasar](https://quasar.dev/) – Great documentation, amazing electron / mobile support, full Vue 3 and TS support but more opinionated than e. g. PrimeVue :thinking_face: * [Vite](https://github.com/vitejs/vite) – Blazing fast and overall great frontend tooling. "Complicates" the setup a bit and the default Vue CLI is also pretty good by now :thinking_face: * [Axios](https://github.com/axios/axios) – Eases consuming REST APIs but using the JS native Fetch-API should suffice as well and reduces the amount of third-party tooling :thumbsdown: * [Vuex](https://vuex.vuejs.org/) – State management library. Amazing with Vue 2 but can be replaced by certain patterns with the new Composition API. Probably not needed anymore :thumbsdown: ## Further thoughts ### Vue 3 * At this point in time most tooling and frameworks are ready for Vue 3 or even only target Vue 3 anymore. Some outliers (e. g. Vuetify) are still lagging behind but several alternatives already exist * Composition API and better TS support are a game changer and several other improvements over Vue 2 should make the decision clear ### Typescript (TS) * While TS adds more overhead (both on the technical setup side of things as well as the code itself) it makes the codebase a lot more maintainable. * Strong typing also decreases the possible pitfalls of weird Vanilla JS behaviour regarding types. ### ESLint * Strongly enforces as certain type of code syntax (which may take some time to get used to) but has amazing syntax checking in most IDE. * Makes maintaining code in the long run a lot easier and stops most syntax based errros before being deployed. ### Vue Router * See above ### Jest * In my opinion the best JS testing suite out there, a lot more comfortable than Mocha ### PrimeVue * PrimeVue itself is an amazing UI framework but we have to discuss whether we want to use an UI framework at all or just write our own components from scratch. I strongly sway to using an UI framework but the latter approach also has its advantages.