github.com/tulir/lindeb

A simple link manager with powerful search


Keywords
react, golang, elasticsearch, rest-api, openapi, mariadb, firefox-extension
License
GPL-3.0
Install
go get github.com/tulir/lindeb

Documentation

lindeb - mau\Lu Link Database

A simple link manager with powerful search. Built using Go, React, Elasticsearch and MariaDB.

The official deployment is available at lindeb.mau.lu.

Course info

This is also a database exercise project.

For the duration of the exercise project course, the repository will contain some useless files, such as this README section, the course documentation (also in Google Docs), SQL query files and the following links to some React components:

  • HUOM: kirjautumissivu toimii vain, jos et ole kirjautunut. Loput sivut toimivat vain, jos olet kirjautunut.
  • Kirjautumissivu verkossa ja repossa
  • Linkkilista verkossa ja repossa (etusivu, linkkien muokkaus ja linkkien poisto)
  • Linkin lisäys verkossa ja repossa
  • Tagilista verkossa ja repossa (tagien listaus, lisäys, muokkaus ja poisto)

API

Technologies

Backend

The backend uses Go with gorilla/mux for routing and go-sql-driver/mysql as the database driver. It has a REST-like JSON API that is documented with an OpenAPI document. The specification file is available here and a graphical API explorer is available here.

MariaDB is the recommended database management system, but anything compatible with MySQL should work. The search system uses Elasticsearch as its backend. Since the backend is written in Go, the server running the backend does not need any language-specific runtimes. However, a DBMS instance and an Elasticsearch instance must be available.

Frontend

The frontend uses React, Sass and modern JavaScript syntax. Support for old browsers is not guaranteed. The latest version of Firefox is recommended, but Chrome will work too.

Objective

The goal of this project is to create an easy-to-use system for saving links and searching saved links.

Scope

  • Authentication. Saved links are always private.
  • Saving links and deleting saved links
    • Saving a link should only require one or two clicks on the page being saved
  • Tagging and untagging links, managing tags
    • Adding descriptions for tags
  • Browsing links
    • Sorting and filtering by different fields (e.g. date added, by-domain, by-tag)
    • Searching for links based on page data (e.g. body content, title)

Extended scope

  • Sharing links to external platforms
  • Shortening links using mau\Lu
  • Advanced authentication
    • 2-factor auth (U2F and/or TOTP)
    • Email verification
      • Magic sign-in links
      • Password resets

Out of scope

  • All internal social features