---
layout: integration
title: Deploy Onelink with Sites
description: Deploy a Nuxt link-in-bio page on Appwrite Sites
date: 2026-11-06
featured: false
isPartner: true
isNew: true
cover: /images/integrations/sites-onelink/cover.avif
category: sites
product:
    vendor: Onelink
    description: "Onelink is an experimental, open-source link-in-bio page built with Nuxt and Tailwind CSS."
platform:
    - 'Self-hosted'
    - 'Cloud'
images:
    - /images/integrations/sites-onelink/cover.avif
    - /images/sites/templates/onelink-dark.png
    - /images/sites/templates/onelink-light.png
---

[Onelink](https://github.com/fayazara/onelink) is an experimental link-in-bio page built with [Nuxt](https://nuxt.com) and Tailwind CSS. It shows a profile photo, a name, a row of social icons, and a list of links with icons, in light and dark modes. The upstream project encodes the whole profile in the page URL. The Appwrite template keeps the profile in your code instead, so you edit one object and redeploy.

# How does the integration work?

[Appwrite Sites](/docs/products/sites) includes Onelink in its template library. When you create a site from the template, Appwrite runs `nuxt generate` on the template from the [appwrite/templates-for-sites](https://github.com/appwrite/templates-for-sites/tree/main/nuxt/onelink) repository and serves the generated page as a static site on an Appwrite domain. If you connect a repository, every push to the production branch publishes your changes.

Appwrite applies these build settings to the template:

| Setting | Value |
| --- | --- |
| Framework | Nuxt |
| Install command | `npm install` |
| Build command | `npm run generate` |
| Output directory | `./dist` |
| Rendering | Static |

**Self-hosted Appwrite**

The template builds on the `node-22` runtime, which `_APP_SITES_RUNTIMES` enables by default. To create a repository from the template, configure [version control](/docs/advanced/self-hosting/configuration/version-control) for your instance first. **Connect later** deploys the template straight from its public GitHub source.

# How to implement

To deploy Onelink with Appwrite Sites, there are several steps you must complete:

## Step 1: Create a site from the template

For this step, you must [create an account on Appwrite Cloud](/sign-up) or [self-host Appwrite](/docs/advanced/self-hosting) if you haven't already. In your Appwrite project, go to **Sites** and click **Create site**. Search the templates for **Onelink** and select it.

Enter a **Site name** and a **Site ID**, then choose how to manage the code:

- **Connect your repository** creates a new repository from the template with your Git provider, such as GitHub, or connects one you already have, and redeploys on every push to the production branch. Choose this so you can add your own profile.
- **Connect later** deploys the template as it is. You can connect a repository afterwards from the site's **Settings** > **Git repository**.

Pick a subdomain under **Domain** and click **Deploy**. You can follow the build logs in the Console, and the site goes live on that domain when the build succeeds.

## Step 2: Add your profile

Clone the repository and open `pages/index.vue`. The page renders the `account` object, so replace the sample values with your own:

- `name`, `description`, and `photo`, the URL of your profile picture.
- The social fields: `facebook`, `twitter`, `instagram`, `email`, `github`, `telegram`, `phone`, `youtube`, and `linkedin`. Each one adds an icon, so remove the fields you don't use.
- `links`: the buttons under your profile, each with a `title`, a `url`, and an `icon`.

`components/Homepage.vue` only renders the description when `acc.d` is set, so change that `v-if` to `acc.description` if you want your description to appear.

```js
links: [
  {
    title: "My Website",
    icon: "ph:globe-duotone",
    url: "https://example.com",
  },
],
```

Icons are [Iconify](https://icones.js.org) names, such as `ph:globe-duotone`, rendered by the `nuxt-icon` module. Commit and push to the production branch to publish the change.

## Step 3: Add a custom domain

Open your site's **Domains** tab to serve the page from your own domain. Follow [Add a custom domain](/docs/products/sites/domains#add-a-custom-domain) for the DNS records to create.

# Read more about Onelink and Appwrite Sites

If you would like to learn more about Onelink and Appwrite Sites, we have some resources that you should visit:

- [Appwrite Sites templates](/docs/products/sites/templates)
- [Deploy Sites from Git](/docs/products/sites/deploy-from-git)
- [Free Nuxt hosting with Appwrite Sites](/blog/post/free-nuxt-hosting)
- [Onelink on GitHub](https://github.com/fayazara/onelink)
