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

[ agpl, library, web ] [ Propose Tags ]

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


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
dev

Turn on development settings, like auto-reload templates.

Disabled
library-only

Build for use with "yesod devel"

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.5.1, 0.0.7, 0.0.9, 0.0.10, 0.0.11, 0.0.16, 0.0.19, 0.0.20 (info)
Change log changelog.md
Dependencies aeson (>=1.4), attoparsec, base (>=4.8.2.0 && <4.9 || >=4.9.1.0 && <5), base64 (<1), bcrypt (>=0.0.8), blaze-html (>=0.9 && <1.0), bytestring (>=0.9 && <0.14), case-insensitive, classy-prelude (>=1.4 && <1.6), classy-prelude-conduit (>=1.4 && <1.6), classy-prelude-yesod (>=1.4 && <1.6), conduit (>=1.0 && <2.0), containers, cryptohash-sha256, crypton-connection, data-default, directory (>=1.1 && <1.4), entropy, espial, esqueleto, fast-logger (>=2.2 && <4), file-embed, foreign-store, hjsmin (>=0.1 && <0.3), hscolour, html-entities, http-api-data (>=0.3.4), http-client, http-client-tls (>=0.3 && <0.4), http-conduit (>=2.3 && <2.4), http-types, iso8601-time (>=0.1.3), microlens, monad-logger (>=0.3 && <0.4), mtl, optparse-applicative, optparse-generic (>=1.2.3), parser-combinators, persistent (>=2.8 && <2.15), persistent-sqlite (>=2.6.2), persistent-template (>=2.5 && <2.13), pretty-show, safe, shakespeare (>=2.0 && <2.2), template-haskell, text (>=0.11 && <3.0), time, transformers (>=0.2.2), unix, unordered-containers, vector, wai, wai-extra (>=3.0 && <3.2), wai-logger, warp (>=3.0 && <3.4), yaml (>=0.8 && <0.12), yesod (>=1.6 && <1.8), yesod-auth (>=1.6 && <1.8), yesod-core (>=1.6 && <1.8), yesod-form (>=1.6 && <1.8), yesod-newsfeed (>=1.6 && <1.8), yesod-static (>=1.6 && <1.8) [details]
License AGPL-3.0-only
Copyright Copyright (c) 2018 Jon Schoning
Author Jon Schoning
Maintainer jonschoning@gmail.com
Revised Revision 1 made by jonschoning at 2024-01-19T04:46:37Z
Category Web
Home page https://github.com/jonschoning/espial
Bug tracker https://github.com/jonschoning/espial/issues
Source repo head: git clone git://github.com/jonschoning/espial.git
Uploaded by jonschoning at 2024-01-18T04:38:31Z
Distributions NixOS:0.0.20
Executables migration, espial
Downloads 3774 total (34 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-01-19 [all 3 reports]

Readme for espial-0.0.19

[back to package description]

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:

  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"},
]