GithubHelp home page GithubHelp logo

jchampemont / notedown Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 2.0 326 KB

NoteDown is a MarkDown-powered simple note-taking application

License: Apache License 2.0

JavaScript 12.95% HTML 16.05% Java 69.41% CSS 1.59%

notedown's People

Contributors

adericbourg avatar jchampemont avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

notedown's Issues

Lock note

When a user starts editting a note, it should be locked.

When editting a note, the user's browser should send a heartbeat every 10 seconds.

If a note is locked and last heartbeat for this note was received more than 20 seconds ago, the note is unlocked.

When a note is locked, user should not be able to edit it.

UI should display who locked the note.

History compression

Compress NoteEvent history:
Using a configurable threshold (property ?), when there is more than X NoteEvent for a Note, oldest NoteEvent up to X should be compressed into a single NoteEvent, in order to gain space in DB.

Folder sharing

Allow user to share folders between each other with either read access, read/write access or full control. Full control allows to delete/rename a folder.

Shared folders should be received in a special folder named "shared with me". Users can put them anywhere in their folders.

Individual notes permission is prioritary compared to folder permission.

Image integration

Add the ability to add one or more images to a note by uploading them.

Note sharing

Allow user to share notes between each other with either read access, read/write access or full control. Full control allows to delete/rename a note.

Shared notes should be received in a special folder named "shared with me". Users can put them anywhere in their folders.

Session expiration notification

Using the heartbeat mecanism implemented in #16, user should be warned with a smal modal when is session is about to expire. (35s before). A 30s countdown is shown.

There is a button on this small modal to allow session renewal.

When not clicked in time, the button become disabled, and a message states that the session is effectively expired.

Multiple users

The first user created should be admin and have the possibility to add any number of users to the application.

User's avatar

Users should be able to upload a small image as their avatar.

This avatar is shown in the UI wherever display name is shown. (Eg. when a note is locked).

NullPointerException on changing language

Affected version: v0.1.0-RC

Steps to reproduce:

  • run application (dev mode);
  • create account;
  • go to user settings and change language;
  • save.
java.lang.NullPointerException: null
        at com.jeanchampemont.notedown.web.SettingsController.updateLang(SettingsController.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

In my case, default language is French so I tried to switch to English.

Conflict management

Instead of locking (#16), manage conflicts in concurrent saving. Exemple:

  • Note is at version 36
  • I open 2 tabs to edit the note
  • I'm saving version 37, 38, 39 from the first tab. First tab is at version 39.
  • Second tab is still at version 36.
  • I'm saving from the second tab. There is a conflict as the note has been changed in the mean time.
    • Merge changes if possible, reload the note, second tab is at version 40
    • When changes can't be merged, mark conflicted changes into the file. (See below)
    <<<<<<<<<<<<<<<<<<< Theirs
    ....
    =====================
    ....
    >>>>>>>>>>>>>>>>>>> Mine

Folders

Add the ability to create folders, and move notes between folders, arbitrary depth.

Handle saves of too old versions

Linked to #3.

When trying to save from a version which is not anymore available in history, the user should be warned and asked to reload the page.

Search engine

Implement a search engine (using elastic search ?)

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.