Welcome, interested person! Contributions are welcome. If you're ever unsure, feel free to open an issue.
Preferably, features are developed in another branch or fork. After the feature is ready, a pull request to the master branch should be opened.
- Install the Tauri prerequesites for your system
- Node 18 or greater. Don't install Chocolatey.
- A code editor (see below)
- Fork the repository
- Clone your fork
npm install
npm run tauri dev
Note that it may take well over a minute the first time you try this out
Install youtube-dl using the following commands on Windows or macOS
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
chmod a+rx /usr/local/bin/youtube-dl
Or on Linux
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
For further information, check their documentation.
I recommend using Visual Studio Code with
- Prettier Extension to format your files
- Settings → Format On Save → Enable (
"editor.formatOnSave": true,
)- If you are using autosave: Settings → Autosave → On Focus Change (
"files.autoSave": "onFocusChange",
)
- If you are using autosave: Settings → Autosave → On Focus Change (
- Vue Language Features (Volar) Extension for Vue.js
- TypeScript Vue Plugin (Volar) Extension for Vue.js. Take-over mode is not recommended, so just get this plugin.
- Tauri Extension
- Rust Analyzer Extension
- (optional)Error Lens to see all the errors inline with the code
- (optional)TODO Highlight Extension
As for settings, I personally am a fan of those "inlay hints".
The most important ones are
- Tauri
- Typescript - Typesafe Javascript
- Vue 3 - Vue 3 with the composition API
Unit testing the frontend is currently not being done, due to the lacking quality of the code and the relative difficulty of unit testing Typescript and GUIs. (Using Vitest is potentially the easiest approach.)
Unit tests for the Rust part should be added, especially for non-trivial functions.
We're using the default Tauri file structure. Essentially src-tauri
contains the Rust part of the project, while src
contains the frontend part of the project.
Build the project using
npm run tauri build
When publishing a new release, don't forget to
- Update the version in
tauri.conf.json
- Update the version in
src-tauri/Cargo.toml
- Add a
src/store.ts
migration - Create a new tag with the version number
- Wait for the expensive GitHub action and then publish the created release
- Update https://github.com/stefnotch/downline/tree/gh-pages