2024-02-28 13:34:42 +01:00
# Web Interface
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
The web interface is a mobile-friendly music player and browser for OwnTone.
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
You can reach it at [http://owntone.local:3689 ](http://owntone.local:3689 )
or depending on the OwnTone installation at `http://<server-address>:<port>` .
2022-03-20 12:00:31 +01:00
2024-03-12 01:36:30 +01:00
This interface becomes useful when you need to control playback, trigger
manual library rescans, pair with remotes, select speakers, grant access to
Spotify, and for many other operations.
2022-03-20 12:00:31 +01:00
2022-03-20 10:12:16 +01:00
## Screenshots
2024-03-12 01:36:30 +01:00
Below you have a selection of screenshots that shows different part of the
interface.
2022-03-20 12:00:31 +01:00
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
2024-02-28 13:34:42 +01:00
{: class="zoom" }
2022-03-20 12:00:31 +01:00
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
{: class="zoom" }
2022-03-20 10:12:16 +01:00
## Usage
2024-03-12 01:36:30 +01:00
The web interface is usually reachable at [http://owntone.local:3689 ](http://owntone.local:3689 ).
But depending on the setup of OwnTone you might need to adjust the server name
and port of the server accordingly `http://<server-name>:<port>` .
## Building and Serving
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
The web interface is built with [Vite ](https://vitejs.dev/ ) and [Bulma ](http://bulma.io ).
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
Its source code is located in the `web-src` folder and therefore all `npm`
commands must be run under this folder.
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
To switch to this folder, run the command hereafter.
```shell
2022-03-20 10:12:16 +01:00
cd web-src
```
2024-03-12 01:36:30 +01:00
### Dependencies Installation
First of all, the dependencies to libraries must be installed with the command
below.
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
```shell
2022-03-20 10:12:16 +01:00
npm install
2024-03-12 01:36:30 +01:00
```
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
Once the libraries installed, you can either [build ](#source-code-building ),
[format ](#source-code-formatting ), and [lint ](#source-code-linting ) the source
code, or [serve ](#serving ) the web interface locally.
### Source Code Building
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
The following command builds the web interface for production with minification
and stores it under the folder `../htdocs` .
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
```shell
2022-03-20 10:12:16 +01:00
npm run build
2024-03-12 01:36:30 +01:00
```
### Source Code Formatting
The source code follows certain formatting conventions for maintainability and
readability. To ensure that the source code follows these conventions,
[Prettier ](https://prettier.io/ ) is used.
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
The command below applies formatting conventions to the source code based on a
preset configuration. Note that a additional configuration is made in the file
`.prettierrc.json` .
```shell
2022-03-20 10:12:16 +01:00
npm run format
2024-03-12 01:36:30 +01:00
```
### Source Code Linting
2022-03-20 10:12:16 +01:00
2024-03-12 01:36:30 +01:00
In order to flag programming errors, bugs, stylistic errors and suspicious
constructs in the source code, [ESLint ](https://eslint.org ) is used.
Note that ESLint has been configured following this [guide ](https://vueschool.io/articles/vuejs-tutorials/eslint-and-prettier-with-vite-and-vue-js-3/ ).
The following command lints the source code and fixes all automatically fixable
errors.
```shell
2022-03-20 10:12:16 +01:00
npm run lint
```
2024-03-12 01:36:30 +01:00
### Serving
In order to serve locally the web interface, the following command can be run.
```shell
npm run serve
```
2022-03-20 10:12:16 +01:00
After running `npm run serve` the web interface is reachable at [localhost:3000 ](http://localhost:3000 ).
2024-03-12 01:36:30 +01:00
By default the above command expects the OwnTone server to be running at
[localhost:3689 ](http://localhost:3689 ) and proxies API calls to this location.
If the server is running at a different location you have to set the
environment variable `VITE_OWNTONE_URL` , like in the example below.
```shell
export VITE_OWNTONE_URL=http://owntone.local:3689
npm run serve
```