Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/linka-app/linka

Cross-platform, Self-hosted & AI powered bookmark management app for linkding, an alternative to linkding front-end, with special optimization for search and quick open functions. Free and open source. Provide web app、PWA and desktop APP. Companion for browsers without bookmark like Arc.
https://github.com/linka-app/linka

bookmarks chakraui fulltext-search linkding pwa react spa

Last synced: about 2 months ago
JSON representation

Cross-platform, Self-hosted & AI powered bookmark management app for linkding, an alternative to linkding front-end, with special optimization for search and quick open functions. Free and open source. Provide web app、PWA and desktop APP. Companion for browsers without bookmark like Arc.

Awesome Lists containing this project

README

        

# Linka!

A smooth bookmarks management web app, shipped with special optimization for quick-search & quick-open, which will boost your productivity.

Currently it supports `linkding`, we are planning to make `Linka` a more flexible app to support other popular backends.

- [Linka!](#linka)
- [Features](#features)
- [Demo](#demo)
- [How-To use](#how-to-use)
- [Hotkeys](#hotkeys)
- [Backend Prerequisite](#backend-prerequisite)
- [Development Guide](#development-guide)
- [Prerequisite](#prerequisite)
- [Start a local development app](#start-a-local-development-app)
- [Deployment Guide](#deployment-guide)
- [Option 1: Deploy With Static HTTP Server (e.g. Nginx)](#option-1-deploy-with-static-http-server-eg-nginx)
- [Option 2: Deploy with Docker](#option-2-deploy-with-docker)

## About the Logo

❤️ The logo was copied from the project [Benthos](https://www.benthos.dev/) in this [commit](https://github.com/linka-app/linka/commit/2521264d1e6cbb166066d1d3ad42908daf7c356a).

## Features

- full text search
- multi keywords, substract keywords support
- instantly open search results
- search on type
- dark/light mode
- hotkeys

## Demo

![demo](./screenshot/demo.gif)

- [Stable Version](https://linka.unoiou.com)
- [Development Version](https://linka-git-dev-cmsax.vercel.app/)

Following configs are for testing:

- `demo linkding base url`: https://link.unoiou.com
- `demo token`(restricted): `a6816f654f87197545cd66bfd2f8e294c40f1ee4`

## How-To use

- type any keywords, seperated by space, results will be **intersection**
- use keywords start with `!` to **exclude**
- type `Enter` to open search results in new tabs

### Hotkeys

- `cmd+l` or `ctrl+l` to focus on the search box
- `cmd+Down Arrow` or `ctrl+Down Arrow` / `cmd+Down Arrow` or `ctrl+Down Arrow` to navigate the results
- `cmd+Enter` or `ctrl+Enter` with an item selected to open it as a new tab or open all bookmarks when no item is selected

## Backend Prerequisite

Currently, this app only supports the "linkding" backend. However, our plan is to make Linka a backend-dependent app.

To ensure compatibility with Linka, the backend service must enable "Cross-Origin Resource Sharing" (CORS).

You can nable `CORS` in backend by adding following headers to HTTP response:

- `Access-Control-Allow-Origin: *`
- `Access-Control-Allow-Methods: GET,POST,OPTIONS,PUT,DELETE`
- `Access-Control-Allow-Headers: *`
- `Access-Control-Max-Age: 1000000`

## Development Guide

### Prerequisite

Install `nodejs` and `yarn`.

### Start a local development app

Run `yarn install` & `yarn dev` to start up.

## Deployment Guide

### Option 1: Deploy With Static HTTP Server (e.g. Nginx)

Run `yarn build` then publish the `./build` directory to a static http server like nginx, following is a demo nginx config part:

```config
# linka
server {
listen 443 ssl http2;
server_name linka.unoiou.com;
index index.html;
location / {
root /home/ubuntu/static_sites/linka/build;
try_files $uri $uri/ /index.html;
}
}
```

### Option 2: Deploy with Docker

Use pre build image:

```bash
docker pull cmsax/linka:latest
docker run --name my-own-linka -p 80:80 -d cmsax/linka:latest
```

Build on your own:

```bash
docker build -t my/linka:latest .
docker run --name my-own-linka -p 80:80 -d my/linka:latest
```

## Stargazers over time
[![Stargazers over time](https://starchart.cc/linka-app/linka.svg?variant=adaptive)](https://starchart.cc/linka-app/linka)