michahell / pinbored-nwjs

native application http://www.pinboard.in client built with AngularJS and http://nwjs.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

volkswagen status devDependency Status Code Climate Codacy Badge Test Coverage Gitter Flattr me

Pinbored is a 'native' Pinboard client application built with nwjs and AngularJS. Currently only OSX binaries are offered, but that is only because I use OSX myself and have not yet started building on other OSes. See the abandoned AS3 client version for more info on the history of this project.

Latest releases.

features / functionality

SUPPORTED

  • Bookmarks

    • currently: update, delete, browse, (full-text) search, stale checking.
    • planned: create.
  • Tags

    • currently: update, delete, browse, fold.
    • planned: create, search, fake tag hierarchy.
  • Search

    • currently: full-text, tagname, switch between OR/AND search.
    • planned: fake tag hierarchy.
  • Batch editing

    • currently: selection add tag, selection fold all tags, selection remove all tags, selection stale checking, delete selection.
    • planned: selection delete all tags, make selection public/private, share selection.

NOT YET SUPPORTED

  • Note(s)

    • currently: NONE.
    • planned: create, update, delete, search.
  • Full collection stale checking

    • currently: NONE.
    • planned: stale check your whole bookmark collection!

Fake tag hierarchy explanation

In most (bookmarking) applications, a collection of items is either a flat list or a hierarchical structure (usually a tree, like in your operating systems file browser). However, we can stick to a naming convention for naming tags such that we are able to parse that structure and construct a hierarchy from it. Say we would like the following hierarchy:

  • programming (main tag)
    • tooling
    • talks

We could then name our tags like so: programming, programming.tooling and programming.talks. Similarly we could use /, >, -, _ or some other hierarchy denotation symbol.

Why

Why use a separate bookmark service to manage bookmarks? I have < insert browser > for that?

  • Access bookmarks across multiple browsers.
  • Independant of browser crashes, sudden loss of all bookmarks, malware.
  • Being sure that no google, mozilla or microsoft are using your bookmarks for whatever.

There are several apps that already do this but they are either commercial software or did not have the simple features that i want them to have.

For bookmark creation consider using:

I WILL add bookmark creation functionality in a later version, however this was never the intention of this app. The app is aimed at managing one's bookmarks, for example after a switch from < insert browser > to Pinboard with some 1000 unmanageable bookmarks. There appear to be users with 40.000 bookmarks. Yes. 40K bookmarks. I wish to create something to allow for managing such a huge amount of bookmarks, even though that is not my own usecase.

Screenshots

Can be seen on the project page.

Download

Downloads are available on the project page or from the GH releases page.

Building + running from source

requirements

  • Node.js and NPM

  • Global npm installs of:

    • Grunt : npm install -g grunt-cli,
    • Bower : npm install -g bower,
    • Jasmine : npm install -g jasmine
  • NWJS:

    - OSX users: brew cask install nwjs. or install manually. optionally add an alias to your .bashrc, .bash_profile or .aliases file:

    # alias to nw
    alias nw="/Applications/nwjs.app/Contents/MacOS/nwjs"

    - Windows users: install manually. I've found that it is easiest to put the extracted nwjs folder next to the pinbored dir, and running nwjs from there like so: ./nw ../pinbored-nwjs/App.

    - Linux users: install manually as well. Optionally add an alias like is done here.

  • Some patience! ( the npm install command in the steps below can take quite a while to finish. Among others this is due to the NWJS module being downloaded by karma-nodewebkit-launcher which needs it to be able to test using node webkit ).

steps

  1. clone or fork project.
  2. run npm install in the project root (installs development environment dependancies)
  3. run npm install in /App (installs app dependancies)
  4. run bower install in / (installs app bower dependancies)
  5. run either:
    • grunt update

      - Windows / Linux users: if you get missing package errors, you should probably manually install the following npm packages:

      npm install grunt
      npm install grunt-purifycss
      npm install grunt-contrib-cssmin
      npm install grunt-preprocess
      npm install grunt-contrib-uglify
      npm install grunt-contrib-copy
      npm install grunt-htmlclean
      npm install grunt-karma
      npm install grunt-open
      npm install grunt-nw-builder

      and then: nw App for running the debug version in nwjs.

      - Windows users: ./nw ../pinbored-nwjs/App if your extracted nwjs folder lives next to the project folder.

    • or: grunt build and then either:

      • nw App_release. This is the pinbored-nwjs source css/js uglified + compacted files in the App_release dir. This is the version that gets packaged into a native application when a version is released. Do note that if you change the source code, and refresh inside node-nwjs, it does not reflect changes as opposed to running the debug version. you need to re-run grunt build each time!
      • grunt release-osx or [grunt release-win, grunt release-lin]. This will output binaries (both 32 bits and 64 bits by default) for the platform you are on in App/Release.

note: Windows and Linux binaries will be built every new release from now on !

warnings & errors

Depending on your OS and node version, you may see some of the following npm warnings.

Ignore these warnings. They are all required npm submodule dependancies.

  • npm WARN engine xmlbuilder@2.2.1: wanted: {"node":"0.8.x || 0.10.x"} (current: {"node":"4.0.0","npm":"3.3.3"})
  • npm WARN engine xmlbuilder@2.4.4: wanted: {"node":"0.8.x || 0.10.x || 0.11.x"} (current: {"node":"4.0.0","npm":"3.3.3"})
  • node-gyp rebuild errors for certain npm modules.

I've seen the following extra warning on Windows 8.1, git bash, nodejs v4.0.0:

npm WARN peerDependencies The peer dependency jasmine-core@* included from karma-jasmine will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.

Also these errors.

Ignore the following specific errors.

Loading "grunt-karma.js" tasks...ERROR
>> Error: Cannot find module './lib'

Caveats and quirks

  • OSX
    • On OSX ulimit -S -n 4096 no longer neccesary due to the grunt-bowercopy task.
  • Windows
    • Need to manually install missing npm dependancies, see above.
  • Linux
    • On Ubuntu Linux, which I used to test & build for linux, there can be some hassle getting the 'node' command to work: see: https://stackoverflow.com/questions/18130164/nodejs-vs-node-on-ubuntu-12-04/18130296#18130296
    • removing the core node package using apt-get worked for me to get node and npm working together fine.
    • Also, on Ubuntu version 14.x.x and up there is a libudev.so.0 issue but following the guide and thus installing NWJS outside of npm works flawlessly.
    • And finally, for some reason, the grunt-bowercopy task needs npm module 'esprima' on Ubuntu. Since on OSX that module is not needed, just installing it suffices: $ npm install esprima .

Disclaimer

Additional to the WTFPL license it is important that you know and understand the following:

*all requests performed by the application to the Pinboard API are sequences of consecutive, single operation REST requests and are not transactions with rollback history like in SQL transactions. They are 'destructive operations' by nature (that means no undo). Future versions might support custom undo history and functionality.

Roadmap

all milestones and issues:

milestones list:

name generator used for milestone names: Project Name Generator

Shit used, Acknowledgements etc.

WTFPL

About

native application http://www.pinboard.in client built with AngularJS and http://nwjs.io/

License:Do What The F*ck You Want To Public License


Languages

Language:HTML 84.2%Language:JavaScript 13.3%Language:CSS 2.4%