2024-12-16 14:19:42 +01:00
< div align = "center" >
2024-12-16 14:18:46 +01:00
< a href = "https://versia.pub" >
< picture >
< source media = "(prefers-color-scheme: dark)" srcset = "https://cdn.versia.pub/branding/logo-dark.svg" >
< source media = "(prefers-color-scheme: light)" srcset = "https://cdn.versia.pub/branding/logo-light.svg" >
< img src = "https://cdn.versia.pub/branding/logo-dark.svg" alt = "Versia Logo" height = "110" / >
< / picture >
< / a >
2024-12-16 14:19:42 +01:00
< / div >
2024-12-16 14:18:46 +01:00
< h2 align = "center" >
< strong > < code > Versia Frontend< / code > < / strong >
< / h2 >
< div align = "center" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/typescript/typescript-original.svg" height = "42" width = "52" alt = "TypeScript logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/vuejs/vuejs-original.svg" height = "42" width = "52" alt = "Vue logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nuxtjs/nuxtjs-original.svg" height = "42" width = "52" alt = "Nuxt logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/docker/docker-original.svg" height = "42" width = "52" alt = "Docker logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/bun/bun-original.svg" height = "42" width = "52" alt = "Bun logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/css3/css3-original.svg" height = "42" width = "52" alt = "CSS3 logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/html5/html5-original.svg" height = "42" width = "52" alt = "HTML5 logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/linux/linux-original.svg" height = "42" width = "52" alt = "Linux logo" >
< img src = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/tailwindcss/tailwindcss-original.svg" height = "42" width = "52" alt = "TailwindCSS logo" >
< / div >
< br / >
2024-12-16 14:19:42 +01:00
< div align = "center" >
2024-12-16 14:18:46 +01:00
< picture >
< source media = "(prefers-color-scheme: dark)" srcset = "assets/ipad-dark.webp" >
< source media = "(prefers-color-scheme: light)" srcset = "assets/ipad-light.webp" >
< img alt = "Versia-FE screenshot on an iPad Pro" src = "assets/ipad-dark.webp" height = "400" / >
< / picture >
2024-12-16 14:19:42 +01:00
< / div >
2024-12-16 14:18:46 +01:00
# Features
2024-05-06 21:17:12 +02:00
- [x] Timelines: public, home, local
- [x] Login
- [x] Notifications
- [x] Replies
- [x] Quotes
2024-06-10 05:53:51 +02:00
- [x] Markdown posts (quasi-unrestricted)
2024-05-06 21:17:12 +02:00
- [x] Dark mode
- [x] Following
2024-06-10 05:53:51 +02:00
- [x] Multiple accounts
- [x] Custom Emojis
2024-08-28 00:23:29 +02:00
- [x] Versia Server Permissions support
2024-06-10 05:53:51 +02:00
- [x] Note editing
- [x] Alt text support everywhere
- [x] Media uploads
2024-12-16 14:18:46 +01:00
- [x] WCAG 2.2 AAA testing
2024-06-19 08:16:28 +02:00
- [x] Settings
- [x] Profile editing
2024-05-06 21:17:12 +02:00
2024-12-16 14:18:46 +01:00
## Browser Support
2024-05-06 21:17:12 +02:00
2024-06-10 05:53:51 +02:00
The following browsers are **supported** (issues will be prioritized):
- **Chromium**: `110+`
- **Firefox**: `110+`
- **Safari**: `16+`
- **IE**: None.
The following browsers will very likely work, but are not officially supported:
- **Chromium**: `80+`
- **Firefox**: `80+`
- **Safari**: `12+`
- **IE**: None.
Other browsers may work, but are not guaranteed to.
2024-12-16 14:18:46 +01:00
# Performance
2024-06-10 05:53:51 +02:00
2024-12-16 14:18:46 +01:00
## JavaScript
2024-06-10 05:53:51 +02:00
2024-12-07 13:52:29 +01:00
The **total** JavaScript bundle size is less than `1000 kB` , but this is made even smaller by the fact that the bundle is split into multiple files, and only the necessary files are loaded on each page.
2024-06-10 05:53:51 +02:00
2024-12-16 14:18:46 +01:00
## Benchmarks
2024-06-10 05:53:51 +02:00
2024-12-07 13:52:29 +01:00
Soon™.
2024-05-06 21:17:12 +02:00
2024-12-16 14:18:46 +01:00
# Installation
2024-05-06 21:17:12 +02:00
2024-08-28 00:23:29 +02:00
Versia-FE is included in the provided `docker-compose` file during [Versia Server installation ](https://github.com/versia-pub/server/blob/main/docs/installation.md ).
2024-05-06 21:17:12 +02:00
2024-08-28 00:23:29 +02:00
To have Versia-FE and Versia Server running on the same domain, edit the Versia Server configuration to point to the Versia-FE container's address (`frontend` category inside config).
2024-05-06 21:17:12 +02:00
2024-12-16 14:18:46 +01:00
## Manual Installation
2024-05-06 21:17:12 +02:00
2024-08-28 00:23:29 +02:00
Here are the steps to install Versia-FE manually:
2024-05-06 21:17:12 +02:00
2024-12-16 14:18:46 +01:00
### Docker/Podman
2024-05-06 21:17:12 +02:00
```yaml
services:
fe:
2024-08-28 00:23:29 +02:00
image: ghcr.io/versia-pub/frontend:main
container_name: versia-fe
2024-05-06 21:17:12 +02:00
restart: unless-stopped
networks:
2024-08-28 00:23:29 +02:00
- versia-net
2024-05-06 21:17:12 +02:00
```
2024-12-07 13:54:41 +01:00
Then, the frontend will be available at `http://localhost:3000` inside the container.
> [!TIP]
>
> By default, Versia-FE will connect to any Versia Server instance running on the same domain.
>
> You can set the `NUXT_PUBLIC_API_HOST` environment variable to point to a different Versia Server instance.
2024-06-10 05:53:51 +02:00
2024-12-16 14:18:46 +01:00
### Manual
2024-12-07 14:53:00 +01:00
1. Clone the repository.
```bash
git clone https://github.com/versia-pub/frontend.git
```
2. Install dependencies.
```bash
bun install
```
3. Build the project.
```bash
bun run build
```
4. Serve the static files in the `.output/public` directory.
> [!WARNING]
2024-12-16 14:18:46 +01:00
>
2024-12-07 14:53:00 +01:00
> `.output/public/200.html` should be configured as a fallback for all 404 errors.
2024-12-16 14:18:46 +01:00
# Development
2024-11-05 14:25:28 +01:00
2024-12-07 13:54:41 +01:00
Run `bun run emojis:generate` to generate the emoji list before building or running the project.
2024-11-05 14:25:28 +01:00
2024-12-16 14:18:46 +01:00
# License
2024-06-10 05:53:51 +02:00
This project is licensed under the AGPL 3.0 - see the [LICENSE ](LICENSE ) file for details.
2024-12-15 15:56:21 +01:00
All Versia assets (icon, logo, banners, etc) are licensed under [CC-BY-NC-SA-4.0 ](https://creativecommons.org/licenses/by-nc-sa/4.0 ).
2024-12-25 18:15:09 +01:00
## Misskey Audio
The `public/packs/audio/misskey` directory contains audio files from the Misskey project, which are licensed under the [AGPL 3.0 ](https://github.com/misskey-dev/misskey/blob/refs/heads/develop/LICENSE ).
2024-12-16 14:18:46 +01:00
# Acknowledgments
2024-06-10 05:53:51 +02:00
2024-12-16 14:18:46 +01:00
## Projects
2024-06-10 05:53:51 +02:00
- [**Bun** ](https://bun.sh ): Thanks to the Bun team for creating an amazing JavaScript runtime.
- [**Nuxt** ](https://nuxt.com ): Thanks to the Nuxt team for creating an amazing Vue framework.
2024-12-16 14:18:46 +01:00
## People
2024-06-10 05:53:51 +02:00
2024-12-16 14:18:46 +01:00
- [**April John** ](https://github.com/cutestnekoaqua ): Creator and maintainer of the Versia Server ActivityPub bridge.