https://github.com/vert-sh/vert
The next-generation file converter. Open source, fully local* and free forever.
https://github.com/vert-sh/vert
conversion ffmpeg svelte sveltekit vips wasm
Last synced: about 2 months ago
JSON representation
The next-generation file converter. Open source, fully local* and free forever.
- Host: GitHub
- URL: https://github.com/vert-sh/vert
- Owner: VERT-sh
- License: agpl-3.0
- Created: 2024-11-11T14:27:14.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-05-07T13:31:38.000Z (2 months ago)
- Last Synced: 2025-05-07T13:40:36.795Z (2 months ago)
- Topics: conversion, ffmpeg, svelte, sveltekit, vips, wasm
- Language: Svelte
- Homepage: https://vert.sh
- Size: 20 MB
- Stars: 2,700
- Watchers: 5
- Forks: 107
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
VERT.sh
VERT is a file conversion utility that uses WebAssembly to convert files on your device instead of a cloud. Check out the live instance at [vert.sh](https://vert.sh).
VERT is built in Svelte and TypeScript.
## Features
- Convert files directly on your device using WebAssembly *
- No file size limits
- Supports multiple file formats
- User-friendly interface built with Svelte* Non-local video conversion is available with our official instance, but the [daemon](https://github.com/VERT-sh/vertd) is easily self-hostable to maintain privacy and fully local functionality.
## Getting Started
### Prerequisites
Make sure you have the following installed:
- [Bun](https://bun.sh/)
### Installation
```sh
# Clone the repository
git clone https://github.com/VERT-sh/vert.git
cd vert
# Install dependencies
bun i
```### Running Locally
To run the project locally, run `bun dev`.
This will start a development server. Open your browser and navigate to `http://localhost:5173` to see the application.
### Building for Production
Before building for production, make sure you create a `.env` file in the root of the project with the following content:
```sh
PUB_HOSTNAME=example.com # change to your domain, only gets used for Plausible (for now)
PUB_PLAUSIBLE_URL=https://plausible.example.com # can be empty if not using Plausible
PUB_ENV=production # "production", "development" or "nightly"
PUB_VERTD_URL=https://vertd.vert.sh # default vertd instance
```To build the project for production, run `bun run build`
This will build the site to the `build` folder. You should then use a web server like [nginx](https://nginx.org) to serve the files inside that folder.
If using nginx, you can use the [nginx.conf](./nginx.conf) file as a starting point. Make sure you keep [cross-origin isolation](https://web.dev/articles/cross-origin-isolation-guide) enabled.
### With Docker
Clone the repository, then build a Docker image with:
```shell
$ docker build -t vert-sh/vert \
--build-arg PUB_ENV=production \
--build-arg PUB_HOSTNAME=vert.sh \
--build-arg PUB_PLAUSIBLE_URL=https://plausible.example.com \
--build-arg PUB_VERTD_URL=https://vertd.vert.sh .
```You can then run it by using:
```shell
$ docker run -d \
--restart unless-stopped \
-p 3000:80 \
--name "vert" \
vert-sh/vert
```This will do the following:
- Use the previously built image as the container `vert`, in detached mode
- Continuously restart the container until manually stopped
- Map `3000/tcp` (host) to `80/tcp` (container)We also have a [`docker-compose.yml`](./docker-compose.yml) file available. Use `docker compose up` if you want to start the stack, or `docker compose down` to bring it down. You can pass `--build` to `docker compose up` to rebuild the Docker image (useful if you've changed any of the environment variables) as well as `-d` to start it in detached mode. You can read more about Docker Compose in general [here](https://docs.docker.com/compose/intro/compose-application-model/).
While there's an image you can pull instead of cloning the repo and building the image yourself, you will not be able to update any of the environment variables (e.g. `PUB_PLAUSIBLE_URL`) as they're baked directly into the image and not obtained during runtime. If you're okay with this, you can simply run this command instead:
```shell
$ docker run -d \
--restart unless-stopped \
-p 3000:80 \
--name "vert" \
ghcr.io/vert-sh/vert:latest
```## License
This project is licensed under the AGPL-3.0 License, please see the [LICENSE](LICENSE) file for details.