# Vojo

A Matrix client focusing primarily on simple, elegant and secure interface. The main goal is to have an instant messaging application that is easy on people and has a modern touch.

Based on [Cinny](https://github.com/cinnyapp/cinny) (MIT license).

- [Contributing](./CONTRIBUTING.md)

## Getting started

The web app is available at [vojo.chat](https://vojo.chat).

## Self-hosting

To host Vojo on your own, build from source and serve the files from `dist/` using your preferred webserver.

* The default homeserver is defined in [`config.json`](config.json).

* You need to set up redirects to serve the assets. Example configurations: [nginx](contrib/nginx/vojo.domain.tld.conf), [caddy](contrib/caddy/caddyfile).

* To deploy on a subdirectory, rebuild the app after updating the `base` path in [`build.config.ts`](build.config.ts).

## Local development

> [!TIP]
> We recommend using a version manager as versions change very quickly. [NVM on Windows](https://github.com/coreybutler/nvm-windows#installation--upgrades) or [nvm](https://github.com/nvm-sh/nvm) on Linux/macOS are good choices.

Execute the following commands to start a development server:
```sh
npm ci # Installs all dependencies
npm start # Serve a development version
```

To build the app:
```sh
npm run build # Compiles the app into the dist/ directory
```

### Running with Docker

This repository includes a Dockerfile, which builds the application from source and serves it with Nginx on port 80. To use this locally, you can build the container like so:
```
docker build -t vojo:latest .
```

You can then run the container you've built with a command similar to this:
```
docker run -p 8080:80 vojo:latest
```

This will forward your `localhost` port 8080 to the container's port 80. You can visit the app in your browser by navigating to `http://localhost:8080`.
