Giter VIP home page Giter VIP logo

quicknote's Introduction

QuickNote

Join the chat at https://gitter.im/QuickNote_gitter/Lobby

Your Intelligent Note-taking Helper

QuickNote is a cross-platform scientific note-taking application, which supports a number of distinct features, including integration of multimedia, dragging and dropping, cloud storgae, and embeded web searching. It is currently being deployed at University of Notitngham, either for pratical and research usage.

Usage

Web App

Desktop App

Highlighted Features

  • Tagging
  • Cloud Storage
  • Dragging & Dropping
  • Sharing
  • Integration of multimedia

Development

Structure

.
├── public
│   ├── html files
│   ├── assests
│   │   ├───── css
│   │   │   └── css files
│   │   ├───── js
│   │   │   └── js files
│   │   └───── images
│   │       └── images
│   ├── homepage_assets
│   │   ├───── css
│   │   │   └── css files
│   │   ├───── js
│   │   │   └── js files
│   │   └───── images
│   │       └── images
│   └── package.json
├── app.js
└── node_modules

/public:

  1. logIn.html is the log in/register interface of Quick Note.
  2. qnote.html is the main interface of Quick Note.
  3. All related js and css files are put in the assets directory.

/public/assets/:

  1. css directory includes all css style sheets for the application.
  2. images directory includes all related images used in the application.
  3. js directory includes all js files.

Technical Details

Session authentication

Express.js + Passport.js

Security

HTTPS + bcrypt.js

Storage System

  • Files in notes: PanFS (custom Facebook Haystack based distributed file storage system)
  • Cloud storage: disk based file system

ToDo List

  • The useless(redundant) code needs to be cleaned.
  • The media insertion mechanism needs to be improved: Media files should not be saved as blob within the note; instead, they should be uploaded to the server and saved as a url to this file on the server.
  • Security isses need to be addressed: Anything should be encoded when transmitting through https protocol.
  • Synchronization mechanism needs to be improved: Each time, only the changed note/notebook should be synchronized rather than "alldata".
  • For the Windows version:
    • The recorded audio cannot be downloaded.
  • For both Mac and Windows versions:
    • The file management part cannot fit the screen perfectly.
    • There is an unknown scroll bar outside the note.
    • Online video cannot be inserted, showing as image.
  • It should allow the user to choose the camera, rather than only use the default one.
  • Note context menu needs to be improved: export to pdf, information.
  • Save uploaded files to haystack storage system rather than hard encoding them as blob.
  • When inserting an image into editor, UI needs to be improved - progress bar perhaps.
  • Server error code needs to be regulated.
  • Session authentication mechanism.
  • Hash passwords before storing to db.
  • HTTPS over koa server.
  • Figure out why localstorage would be problematic if requesting webpage from server rather than load local one.
  • Session/Cookies seems not working for desktop version because they can not be set for local html files.
  • Set up a notification area in the top middle of the interface:
  • Bootstrap Notify seems difficult to customize
  • Re-login when authentication failed
  • Add gulp.js
  • Refactor front-end structure
  • Refactor back-end structure
  • Robust file deletion
  • Debounce the event listeners a little bit to around 100ms

Bugs

  1. When copying the shared note to user's own notebook.
  2. In notebook hierarchy, the number of notes in the child-notebook is incorrect after first refreshing.
  3. tinymce.js cannot be compressed - media insertion fails.
  4. The paragraph mechanism is useless - it is always inserted into the end of the note and it cannot be exchanged with other elements in the note.

Build

npm install nw-builder
sh build.sh

Contributing

  1. Fork it (https://github.com/PAN001/QuickNote/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

quicknote's People

Contributors

tiz170 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

quicknote's Issues

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.