Coder Social home page Coder Social logo

laverna / laverna Goto Github PK

View Code? Open in Web Editor NEW
9.1K 335.0 798.0 6.51 MB

Laverna is a JavaScript note taking application with Markdown editor and encryption support. Consider it like open source alternative to Evernote.

Home Page: https://laverna.cc/index.html

License: Mozilla Public License 2.0

JavaScript 83.20% HTML 7.40% CSS 9.40%
peer-to-peer note-taking laverna socket-io websocket webrtc

laverna's Introduction

Laverna - note taking web app

Join the chat at https://gitter.im/Laverna/laverna

Build Status devDependency Status Code Climate

Laverna is a JavaScript note-taking web application with a Markdown editor and encryption support. It's built to be an open source alternative to Evernote.

The application stores all your notes in your browser databases such as indexedDB or localStorage, which is good for security reasons, because only you have access to them.

Demo: https://laverna.cc/ OR http://laverna.github.io/static-laverna

Features


  • Markdown editor based on Pagedown
  • Manage your notes, even when you're offline
  • Secure client-side encryption
  • Synchronizes with cloud storage services (currently only with Dropbox and RemoteStorage)
  • Three editing modes: distraction free, preview, and normal mode
  • WYSIWYG control buttons
  • MathJax support
  • Syntax highlighting
  • No registration required
  • Web based
  • Keybindings

Tools

On the front-end this project uses JavaScript and the Marionette JS framework while Node JS, Bower, and Gulp.js are used on the back-end. The test runner used is karma however, contributors are free to utilize whatever testing tools they desire.

Installation


There are several ways to start using Laverna:

  1. Open laverna.cc and start using it. No extra steps are needed.
  2. Use a desktop app.
  3. Use a prebuilt version from Laverna/static-laverna repository.
  4. Build it from the source code.

Desktop app installation


Download the latest Laverna release for your operating system. After downloading the archive, you need to unpack it. Then, in the unpacked folder you need to run an executable (laverna.exe for Windows, laverna for Linux and Mac).

Arch Linux (or derived distributions)

The package can be found here.

For installation please use :

$ pacaur -S laverna

For issue about installation please report here or contact @funilrys on gitter here

Installation of a prebuilt version


1. Download

$ wget https://github.com/Laverna/static-laverna/archive/gh-pages.zip -O laverna.zip

2. Unpack the downloaded archive

$ unzip laverna.zip

3. Open index.html in a browser

Open in your favorite browser the index.html file which is located inside laverna directory.

Installation from source


To install, do the following:

1. Install Git

This project requires that you have the latest version of git installed. To do so, see Installing Git (first-time users of git might want to check out the next section for configuring git).

Note: Windows users will have to set the PATH variable for git after installing it.

2. Clone repository:

For those who plan on contributing to the project's development , hit the fork button at the top of the page first (others can go on to the next step). Open a terminal, or command line, and navigate to the desired location of where you want to download the repository. Then enter the following commands to clone the repo:

# clone the repository
$ git clone [email protected]:Laverna/laverna.git
# navigate to the project directory
cd laverna

3. Ensure you have the node.js platform installed. (See OS-specific instructions on their website).

4. Ensure you have the bower and gulp packages installed (locally and globally):

$ npm install bower
$ npm install -g bower
$ npm install gulp
$ npm install -g gulp

5. Install Laverna's dependencies:

$ npm install
$ bower install
$ cd test
$ bower install
$ cd ..

6. Build minified version of Laverna:

$ gulp build

7. Start Laverna:

$ gulp

MacOS notes on accepting incoming connections

Because currently Laverna does not sign it's Mac packages, if you want to avoid the "Accept incoming connections" warning message everytime the application is launched, you can run the following commands. Assuming your current direction contains the laverna application:

codesign -s - -f ./laverna.app/Contents/Frameworks/Electron\ Framework.framework
codesign -s - -f ./laverna.app/Contents/Frameworks/Electron\ Helper\ EH.app 
codesign -s - -f ./laverna.app/Contents/Frameworks/Electron\ Helper\ NP.app
codesign -s - -f ./laverna.app/Contents/Frameworks/Electron\ Helper.app 
codesign -s - -f ./laverna.app/Contents/Frameworks/Mantle.framework 
codesign -s - -f ./laverna.app/Contents/Frameworks/ReactiveCocoa.framework 
codesign -s - -f ./laverna.app/Contents/Frameworks/Squirrel.framework 
codesign --verify -vv ./laverna.app

Do you have questions?


Please have a look in our wiki.

Support


Coding Style Guidelines

For those wanting to contribute code, we ask that you use either plain JavaScript or the Marionette.js framework. (For more details on the preferred coding style see .editorconfig). Also, all experimental changes are being pushed on the dev branch, so any feature changes are preferred to be done on either this branch or a branch that uses the dev branch as its parent.

Donation:


Security


Laverna uses the [SJCL] 1 library implementing the AES algorithm. You can review the code at:

License


Published under MPL-2.0 License.

Laverna uses a lot of other libraries and each of these libraries use different licenses.

laverna's People

Contributors

asalthobaity avatar atomk avatar brian-heumann avatar brunosxs avatar come-maiz avatar eloquentzebra avatar erfahrungen avatar funilrys avatar gregaou avatar h4yfans avatar janis-kra avatar kdby-io avatar leandrocrs avatar lucasmezencio avatar lucasroot avatar martymcguire avatar nwuensche avatar pc-fan avatar quent-in avatar quenty31 avatar rantanen avatar rcmc2 avatar sandeeppinge avatar talklittle avatar wislon avatar wwebfor avatar wwwredfish avatar zuphilip avatar zweicoder avatar zygimantus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

laverna's Issues

Install with Bower Failed(With a Github account setup)

The installation exited with the following error message:

.......
bower not-cached    git://github.com/WickyNilliams/enquire.js.git#~2.1.0
bower resolve       git://github.com/WickyNilliams/enquire.js.git#~2.1.0
bower checkout      backbone.mousetrap#11ecdbfbe1099249daa6e1e86db7aee090ea5801
bower checkout      pagedown-ace#84d5e1b7ff233a1c8cafa9716e825228d275120c
bower checkout      pagedown-extra#bd0870e3e871e15bde1fa5a427e3e10028a09789
bower checkout      ace#bfba4f1efd6e6a8b2b8e1478c10daecfbe64e784

bower ECMDERR       Failed to execute "git ls-remote --tags --heads git://github.com/superfeedr/indexeddb-backbonejs-adapter.git", exit code of #128

Additional error details:
fatal: unable to connect to github.com:
github.com[0: 192.30.252.129]: errno=Connection refused

I'm not really familiar with Github so I couldn't tell where went wrong... My machine is MBA OS X 10.9.2. Thanks in advance.

HTML tags in title

rsz_screenshot_from_2014-03-21_103345

This occurs in the inbox when you click on a note in the left column.

UX Suggestion: Sync Button

Only show the sync button when connected to remote storage or Dropbox. Otherwise, it just takes up space and is confusing.

Feature Request: Indentable Checkboxes

We can put checkboxes in our notes but only if they are left justified.

Sometimes I have a hierarchical list that I want to put checkboxes in. Laverna won't currently allow me to indent before my checkboxes.

Roadmap: 0.6.0

  1. Export and print options, to PDF (one note, all notes);
  2. MathJax support (issue #53)
  3. Multiple databases (issue #47)
  4. Working in private mode (issue #46)
  5. Android based support (issue #40)
  6. Saving the .md file in clear beside the .json file (issue #9)

Autosave (suggestion)

After I have been using Laverna for some time I noticed there is a risk of data loss when you create or edit a note and forget to save/browser crashes. On the other hand clicking Save exits the edit mode so it's rather impractical to use it before you have fully finished editing the note.
If I may I would like to suggest one of those for your consideration:

  1. instant automatic save for edits;
  2. something like "Save and continue" or "Save Draft" button.

Cancel Button Bug

On click of Cancel button inside new note doesn't do anything. Only changes are in the URL. Three clicks of Cancel button result in redirection to homepage.

RemoteStorage error

I get next js error when trying to sync with remotestorage.

GET http://domain.com/storage/caske33/notes/ 403 (Forbidden) domain.com/storage/caske33/notes/:1
Possibly uncaught error:  
[Error]
 Error: Received faulty directory response for: /notes/
    at Object.<anonymous> (https://laverna.cc/scripts/libs/remotestorage.js:1215:25)
    at notifyConsumer (https://laverna.cc/scripts/libs/remotestorage.js:25:45)
    at https://laverna.cc/scripts/libs/remotestorage.js:71:11 remotestorage.js:68
Error happened with cloud storage API 

(domain.com is a valid domain - I just obfuscated it here).

Keyboard Help Dialog should close with ESC

I thought it was kinda funny that I could press "?" to get the keyboard help dialog up but I have to move my hand to the mouse to close it.

ESC would be a natural key, but really it could respond to any keypress to close.

Encryption Function Doesn't Sync

If you have both encryption and cloud storage enabled, it would be nice if your encryption settings synced between instances.

As it is right now, it seems like if I encrypt a note in one browser, there is no way to view that note in another browser. Is this accurate, or am I misunderstanding how to set this up?

screen shot 2014-03-21 at 11 22 09 am

Did I misunderstood the purpose of the app?

I think I misunderstood the purpose of the app.
I was triying to replace every note taking app I use every day.
I taught that when connecting to the app from my mobile, I was going to find every note I took.
I triend configuring the dropbox sync with my computer, and my phone, but it didn't work either.
Am I missing something? I was wrong about the purpose of laverna ?

UX Suggestion: Replace the Star with Tags

The star indicates that this is one of your favourite notes. But the functionality doubles with Tags. Why not just have a Favourite tag?

While we're doing that, we could put a tag widget in place of the star to show which tags are in a document. Somewhat how http://tinmark.com does it (watch the demo video).

Finally, it would be awesome to associate tags with a note while not having to type them into a note directly (remove the technical element to using tags). In practice, these could be appended to the end of the markdown document.

The point of this suggestion is to remove redundancy and hence, strengthen what we want Laverna to be good at "organizing your notes".

Tags in note title

A way to add a tag in the note title, which will appear in a separated branch of the tree of tags ?

Feature Request: Clear Local Data

Add a button to the settings menu that allows users to clear their data from localStorage. Makes using Laverna on public machines more secure.

UX Suggestion: Remove the Pages concept

The notion of pages is confusing to first time users. "Why is there a Prev and Next button at the bottom that don't do anything?" is a very good question.

An even better question is do we need pages at all? That section of the app is not particularly DOM-heavy (only 6 elements per listing) so I don't see an issue just removing pages altogether and listing all relevant notes in the left-side note-list. I see 3 solutions here:

  1. Remove pages and always display all notes in the note list (for that search query, folder or tag). This could be a problem in the long-term but even that can be mitigated if people keep their notes in Notebooks. But even so, if someone has 2000 notes in a notebook you could implement the next suggestion.
  2. Add a dynamic scrolling widget to keep the DOM at a manageable size.
  3. If either of those two options is undesirable, maybe just show the page buttons when a user has greater than 10 (maybe increase the default to 100) notes on a list. This is the path of least resistance.

If you go with options 1 or 2, don't forget to remove the Notes per Page setting from the settings dialog.

UX Suggestion: Saving

When editing, there should only be one Save button. If the document has unsaved changes, it should read Save & Close otherwise, just Close. Saving is a function that should happen automatically.

Take Gmail as an example. It automatically saves every 10ish seconds or after the user pauses from typing for 5ish seconds (rough guesses, I didn't go measure). So there is never a need to click a Save button. Even so, when it does save automatically it tells you as the user so you never have to guess. This is excellent UX that should be in Laverna.

Android based browser support?

I can't get it to work under Android with Chrome or Firefox.

It should probably goes into Enhancement, but as no one as even mentioned it anywhere, and as it sounds so obvious to me, I'm wondering if it's not just my phone...or my server...

Error in running locally?

I'm facing issues in setting up Laverna locally.

  1. Cloning - Works
  2. npm install && bower install - works
  3. grunt build - Fails

Gives the following error

F:\Work\Laverna\laverna>grunt build
Running "clean:dist" (clean) task
Cleaning .tmp...OK
Cleaning dist/images...OK

Running "string-replace:i18nextLocal" (string-replace) task

Running "createDefaultTemplate" task

Running "jst:compile" (jst) task
>> Destination not written because compiled files were empty.

Running "less:compile" (less) task
>> FileError: '../bower_components/bootstrap/less/variables.less' wasn't found i
n app/styles/main.less on line 15, column 1:
>> 14 // Core variables and mixins
>> 15 @import "@{boot_dir}variables.less";
>> 16 @import "@{boot_dir}mixins.less";
Warning: Error compiling app/styles/main.less Use --force to continue.

Aborted due to warnings.


Execution Time (2014-03-24 11:53:39 UTC)
loading tasks  1.4s  ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 90%
clean:dist     17ms  ■ 1%
less:compile   99ms  ■■■ 6%
Total 1.6s

Any idea how I can set this up locally?

Removing Encryption is not seamless

I had my notes encrypted, but I didn't like my password so I unchecked "Use Encryption". Then all my notes look like hashes.

It seems there needs to be a decryption step when removing established encryption. It's good to make sure the unencryption propagates to remote storage as well.

bower install fails unless you have a github account setup

Hi,

nice job, even though I haven't ben able to install & test yet, I've been looking for this for a long time.

I've got a problem when bower install:
bower pagedown-ace#84d5e1b7ff233a1c8cafa9716e825228d275120c ECMDERR Failed to execute "git clone [email protected]:benweet/pagedown-ace.git /tmp/nodje/bower/pagedown-ace-30245-UPTEdu --progress", exit code of #128
Additional error details: Permission denied (publickey). fatal: The remote end hung up unexpectedly

I generally check out projects using git clone https://github.com/Laverna/laverna.git, especially on a server where I don't have a github account setup.

I'm guessing bower install fails here because it needs a valid git account with a proper public key setup locally.

It'd be awesome to be able to run all the install commands without having a github account setup.

Support Unhosted protocols

This is just a feature request. Dropbox support is nice, but I'd much rather have support for Unhosted. It won't necessarily be easy to implement, but I think the effort would be well worth it. Then the storage backend would be nearly implementation agnostic, and wouldn't care about where the data was hosted.

Conflict with "Self-Destructing Cookies" Firefox Addon

  • After I installed the "Self-Destructing Cookies" addon, Laverna in encryption mode did not function correctly.
  • After clicking "Start using now" on the Laverna home page, the application navigated straight to my inbox without prompting for my encryption password. All the notes were still encrypted and thus, unreadable.
  • I decided to simply uninstall Self-Destructing cookies and deleted the small number of notes I had written and rewrote them.
  • However, I think in "Self-Destructing Cookies" you could theoretically white-list laverna.cc and uncheck the option to also delete Indexed.db entries and the addon should play nicely with Laverna.

can't use with firefox

Hello,

My problem is that on the same computer it works with chromium but with firefox I have this error :
It seems like you refused Laverna to use IndexedDB or you are in Private browsing mode.

Linux Mint 16 - Firefox 28.
I've already deleted my cache and cookies and tried with all my add-ons disabled.

0.5.0 - [email protected] issue

Hi,
new release welcome!

just tried on trunk npm install && bower install on a server and got a:

bower remotestorage.js#0.10.0-beta ECMDERR Failed to execute "git ls-remote --tags --heads [email protected]:remotestorage/remotestorage.js.git", exit code of #128

Would be nice to use https:// instead, as previously mentioned in previous issue #24

As workaround, replacing the scheme with https:// in bower.json works.

Setup fails using latest node/npm/bower

I do the following steps to install Laverna on Windows:
download the latest node.js windows installer and install in g:/nodejs then do:

cd g:/nodejs
npm install -g grunt bower
git clone https://github.com/Laverna/laverna.git
cd laverna
npm install
bower install
grunt build

There are two problems:

  • The repository URLs in bower.json use the git:// protocol. This hangs my bower install as it is waiting for me to type 'yes' into the SSH prompt "The authenticity of host 'github.com' can't be established.". I guess I have some old github RSA key in my known_hosts (or someone is doing a MITM on my github SSH...). It's not obvious at the time why the bower install is hung though. I fixed this by just swapping all the repo URLs for the equivalent https:// ones.
  • The bower install of device.js seems to be broken in some way. The grunt build command fails because the requirejs task can't find app/bower_components/device.js/lib/device.min.js. I "solved" this by just git cloning the appropriate repo into bower_components. This is a terrible hack, but I have no idea why bower is not installing the expected files.
G:\nodejs>node --version
v0.10.26

G:\nodejs>grunt --version
grunt-cli v0.1.13

G:\nodejs>bower --version
1.3.1

FYI I've also tried the install on Linux and had exactly the same issues.

Let me know if you need any more information.

grunt build failed

I went through the installation process without any problems until I got to "grunt build", then I got this error: -bash: grunt: command not found. What went wrong?

Doesn't work with Safari

I installed Laverna on my VPS and with Firefox on OSX I see the UI and I can use it. With Safari on OSX I see the background (white area on the left for the list of notes, grey area on the right for the currently selected note), but there is nothing in it, just the two areas.

Using Mavericks and the Safari that comes with it.

New Feature Request:: Code handler

If we place a code in the note then the current code handler isnt able to handle some of the data.

Possibly we might need to use a shortcode as something else that can be easily understand that all the rest of portion mentioned in the note is code.

For Sample purpose I have added it in our public note.
https://laverna.cc/index.html
image

image

git clone doesn't work

git clone doesn't work on ubuntu 12.04

Cloning into 'laverna'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

UX Suggestion: Make navigation more obvious

The menu button in the upper-left is ambiguous. If it takes you to notebooks, it should display the notebooks icon. Likewise for inbox (see my suggestion about renaming inbox).

But I would remove this button completely. Instead move the dropdown over to the "nav-bar brand" (which I will call "Location"). This way it tells you what you are currently in (The "Inbox") and if you want to change where you are in the app, just click on it. (See the bootstrap Navbar dropdown example: http://getbootstrap.com/components/#navbar)

Also you could remove the Notebooks listing under the location dropdown. Instead just list the notebooks there (but this makes the dropdown hierarchical so it may be a bigger job for a separate issue). So it would look like:

  • "All Notes" (suggested change from "Inbox")
  • (Notebook listings here)
  • Trash
  • Settings
  • About

So the final order of top navbar elements would be:

  • Location drop-down (left justified)
  • Search button (left justified, see suggestion about changing search)
  • Sync button (right justified, if connected to a remote storage option)
  • New note button (right justified)

Dependency conflicts

When running bower install following dependencies conflict :

Unable to find a suitable version for backbone.wreqr, please choose one:
    1) backbone.wreqr#~0.2.0 which resolved to 0.2.0 and is required by laverna 
    2) backbone.wreqr#~1.0.0 which resolved to 1.0.1 and is required by marionette#1.6.4

Prefix the choice with ! to persist it to bower.json

[?] Answer: 2

Unable to find a suitable version for backbone.babysitter, please choose one:
    1) backbone.babysitter#~0.0.6 which resolved to 0.0.6 and is required by laverna 
    2) backbone.babysitter#~0.1.0 which resolved to 0.1.1 and is required by marionette#1.6.4

Prefix the choice with ! to persist it to bower.json

[?] Answer: 2

bower fails to execute git requirejs-bower.

Hi,
I'm triying to install lavenda on my Debian server, but bower install failed.

bower resolve       git://github.com/WickyNilliams/enquire.js.git#~2.1.0
bower not-cached    git://github.com/eligrey/FileSaver.js.git#*
bower resolve       git://github.com/eligrey/FileSaver.js.git#*
bower checkout      backbone.mousetrap#11ecdbfbe1099249daa6e1e86db7aee090ea5801
bower checkout      pagedown-ace#84d5e1b7ff233a1c8cafa9716e825228d275120c
bower checkout      pagedown-extra#bd0870e3e871e15bde1fa5a427e3e10028a09789
bower cached        [email protected]:remotestorage/remotestorage.js.git#0.10.0-beta
bower validate      0.10.0-beta against [email protected]:remotestorage/remotestorage.js.git#0.10.0-beta
bower checkout      ace#fbc546032090752664aaea13c8f9489dea43490a
bower ECMDERR       Failed to execute "git ls-remote --tags --heads git://github.com/superfeedr/indexeddb-backbonejs-adapter.git", exit code of #128

I changed all the git://github.com/ to [email protected]: and it worked, until I got this error:

wer and propitious to errors!
bower resolved      [email protected]:enyo/dropzone.git#3.8.4
bower resolved      [email protected]:EightMedia/hammer.js.git#1.0.9
bower ECMDERR       Failed to execute "git ls-remote --tags --heads git://github.com/jrburke/requirejs-bower.git", exit code of #128

Additional error details:
github.com[0: 192.30.252.128]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)

I can't figure out how to solve this.

Sync to non-commercial storage

Cool project guys!

It would be nice to have a sync option to a non-commercial storage, like a self hosted FTP/GIT server.

Add Windows set up process

Hello, the setup process works on linux, no problem, but node.js being new and not obvious to use (at least on windows) it could be a good idea to include windows installation instructions too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.