MyNixOS website logo
Description

Espial is an open-source, web-based bookmarking server.

Espial is an open-source, web-based bookmarking server. - Yesod + PureScript + sqlite3 - multi-user (w/ privacy scopes) - tags, stars, editing, deleting

Espial

Espial is an open-source, web-based bookmarking server.

It allows mutiple accounts, but currently intended for self-host scenarios.

The bookmarks are stored in a sqlite3 database, for ease of deployment & maintenence.

The easist way for logged-in users to add bookmarks, is with the "bookmarklet", found on the Settings page.

Also, see the android app for adding bookmarks via an Android Share intent https://github.com/jonschoning/espial-share-android

demo server

log in — username: demo password: demo

https://esp.ae8.org/u:demo

jpg

Docker Setup

see https://github.com/jonschoning/espial-docker

Server Setup (from source)

  1. Install the Stack executable here:

    • https://tech.fpcomplete.com/haskell/get-started
  2. Build executables

    stack build
    
  3. Create the database

    stack exec migration -- createdb --conn espial.sqlite3
    
  4. Create a user

    stack exec migration -- createuser --conn espial.sqlite3 --userName myusername --userPassword myuserpassword
    
  5. Import a pinboard bookmark file for a user (optional)

    stack exec migration -- importbookmarks --conn espial.sqlite3 --userName myusername --bookmarkFile sample-bookmarks.json
    
  6. Import a firefox bookmark file for a user (optional)

    stack exec migration -- importfirefoxbookmarks --conn espial.sqlite3 --userName myusername --bookmarkFile firefox-bookmarks.json
    
  7. Start a production server:

    stack exec espial
    

Configuration

See config/settings.yml for changing default run-time parameters & environment variables.

  • config/settings.yml is embedded into the app executable when compiled, so after changing config/settings.yml, run stack build again to apply the new settings.
  • config/settings.yml values formatted like _env:ENV_VAR_NAME:default_value can be overridden by the specified environment variable.
  • Example
    • _env:PORT:3000
      • environment variable PORT
      • default app http port: 3000

SSL: use reverse proxy

Development

Backend

  • Install the yesod command line tool: stack install yesod-bin --install-ghc

  • Start a development server:

    yesod devel
    

Frontend

  • See purs/ folder

Import Bookmark file format (pinboard compatible format)

see sample-bookmarks.json, which contains a JSON array, each line containing a FileBookmark object.

example:

[ {"href":"http://raganwald.com/2018/02/23/forde.html","description":"Forde's Tenth Rule, or, \"How I Learned to Stop Worrying and \u2764\ufe0f the State Machine\"","extended":"","time":"2018-02-26T22:57:20Z","shared":"yes","toread":"yes","tags":"raganwald"},
, {"href":"http://downloads.haskell.org/~ghc/latest/docs/html/users_guide/flags.html","description":"7.6. Flag reference \u2014 Glasgow Haskell Compiler 8.2.2 User's Guide","extended":"-fprint-expanded-synonyms","time":"2018-02-26T21:52:02Z","shared":"yes","toread":"no","tags":"ghc haskell"},
]
Metadata

Version

0.0.20

Maintainers (1)

Executables (2)

  • bin/migration
  • bin/espial

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows