haishanh/cherry

Cherry is a self-hostable bookmark service

TypeScript

277

205 commits

updated Sep 14, 2026

See the code
bookmarks
selfhosted
sqlite
svelte

README

Cherry Logo

Development

# Install dependencies
pnpm i

# Pull required SQLite tokenizer extension
pnpm fetch:signal-tokenizer

# Create a .env file
cp env.example .env

# Generate typing files
pnpm sync

# Run the app in dev mode
pnpm dev

# You may want to create an user
pnpm cherry create-user "foo@example.com" "P@ssw0rd" --admin
pnpm cherry set-admin "foo@example.com"

# You can grab the zipped CSV from
# https://cherry.haishan.me/cherries.csv.zip
# Unzip it and import it into Cherry. Steps:
# 1/ Click "Setttings" on the top right corner
# 2/ Click "Import" on the left side bar
# 3/ Select "CSV" in the tabs
# 4/ Click or drag your file into the upload area and click the "Import" button below.

Contributors

haishanh

205 commits

haishanh/cherry

Cherry is a self-hostable bookmark service

TypeScript

277

205 commits

updated Sep 14, 2026

See the code
bookmarks
selfhosted
sqlite
svelte

README

Cherry Logo

Development

# Install dependencies
pnpm i

# Pull required SQLite tokenizer extension
pnpm fetch:signal-tokenizer

# Create a .env file
cp env.example .env

# Generate typing files
pnpm sync

# Run the app in dev mode
pnpm dev

# You may want to create an user
pnpm cherry create-user "foo@example.com" "P@ssw0rd" --admin
pnpm cherry set-admin "foo@example.com"

# You can grab the zipped CSV from
# https://cherry.haishan.me/cherries.csv.zip
# Unzip it and import it into Cherry. Steps:
# 1/ Click "Setttings" on the top right corner
# 2/ Click "Import" on the left side bar
# 3/ Select "CSV" in the tabs
# 4/ Click or drag your file into the upload area and click the "Import" button below.

Contributors

haishanh

205 commits

Languages

TypeScript

52.4%

Svelte

43.9%

JavaScript

2.1%