Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added templates/ties/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added templates/ties/assets/screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
49 changes: 49 additions & 0 deletions templates/ties/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import {
Output,
randomPassword,
randomString,
Services,
} from "~templates-utils";
import { Input } from "./meta";

export function generate(input: Input): Output {
const services: Services = [];
const adminPassword = input.adminPassword ?? randomString(32);

const databasePassword = randomPassword();

services.push({
type: "app",
data: {
serviceName: input.appServiceName,
source: {
type: "image",
image: input.appServiceImage,
},
domains: [
{
host: "$(EASYPANEL_DOMAIN)",
port: 3000,
},
],
env: [
`LISTEN=0.0.0.0:3000`,
`DATABASE_URL=postgres://postgres:${databasePassword}@$(PROJECT_NAME)_${input.appServiceName}-db:5432/$(PROJECT_NAME)`,
`BASE_URL=https://$(PRIMARY_DOMAIN)`,
`RUST_LOG=info`,
`ADMIN_USERNAME=${input.adminUsername}`,
`ADMIN_PASSWORD=${adminPassword}`,
].join("\n"),
},
});

services.push({
type: "postgres",
data: {
serviceName: `${input.appServiceName}-db`,
password: databasePassword,
},
});

return { services };
}
78 changes: 78 additions & 0 deletions templates/ties/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Ties
description:
Ties is a federated, self-hosted bookmark manager and link aggregator. Save,
organize, annotate, and share bookmarks; follow other users across instances;
and search a trusted network of curated links. Built in Rust for a fast,
lightweight footprint.
instructions:
Set BASE_URL to your public domain before first run — it becomes part of user
handles (e.g. user@your-domain.com) and cannot be changed once a user exists.
An admin account is auto-created on startup if ADMIN_USERNAME and
ADMIN_PASSWORD are set. Database migrations run automatically.
changeLog:
- date: 2026-06-16
description: Initial release
links:
- label: Website
url: https://demo.ties.pub
- label: Documentation
url: https://github.com/raffomania/ties/tree/main/doc
- label: GitHub
url: https://github.com/raffomania/ties
contributors:
- name: Ahson Shaikh
url: https://github.com/Ahson-Shaikh
schema:
type: object
required:
- appServiceName
- appServiceImage
- adminUsername
- adminPassword
properties:
appServiceName:
type: string
title: App Service Name
default: ties
appServiceImage:
type: string
title: App Service Image
default: ghcr.io/raffomania/ties:0.2.1
adminUsername:
type: string
title: Admin Username
default: admin
adminPassword:
type: string
title: Admin Password
default: adminpassword
benefits:
- title: Federated Bookmarking
description:
Follow users across different Ties instances and search a network of
curated links beyond your own collection.
- title: Lightweight & Fast
description:
Written in Rust with a stateless binary and embedded assets — minimal
resource usage with no app-side volumes needed.
- title: Simple Setup
description:
Database migrations run automatically on startup. Just set BASE_URL and
optionally ADMIN_USERNAME/ADMIN_PASSWORD to be ready immediately.
features:
- title: Bookmark Management
description: Save, annotate, tag, and organize links with a clean interface.
- title: Federation
description:
Follow other users across Ties instances for a curated, trusted link
network.
- title: Full-Text Search
description:
Search across your own bookmarks and followed users' collections.
- title: OIDC Support
description:
Optional single sign-on via OIDC for enterprise or team deployments.
tags:
- Bookmarks
- Self-hosted
- Federation