Giter VIP home page Giter VIP logo

notary's Introduction

This project is now archived and not maintained. Even more so than the usual MIT License:

THE SOFTWARE IS ARCHIVED AND NOT MAINTAINED β€œAS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

notary

Evernote clone based on a Flask/Python back end

to check what pages are being accessed:

$ python
>>> import pymongo
>>> client = pymongo.MongoClient('localhost', 27017)
>>> db = client.notary_database
>>> records = db.access
>>> records.find_one()

Note: there needs to be a running MongoDB instance To run the instance:

$ mongod --smallfiles --dbpath ./data/db

Remember: use venv

$ source venv/bin/activate

To run the server:

$ cd .../notary
$ python run.py

notary's People

Contributors

buckbaskin avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar  avatar

notary's Issues

Implement a task queue on the server side

Note creation, that kind of thing are best effort, return as soon as possible kind of thing.
Note update can be put in a list of changes to be made when the server has time, so the db update is added to the queue, and the note is echoed back to the user to ack the fact that the note was received. This can be tied in with processing for incrementing versions. The user making the edits gets an immediate response, but other users will see the new data as soon as possible.
Aggregate analysis data can be run on a tertiary queue that runs whenever the 2nd job queue (after live server requests) is empty

Convert Version Doc into issues

Each version is a milestone, and I can add issues to each version as a milestone. Once the milestone is 100% complete, I can release the version.

Authenticated get note by version

Parent #4

get note by version (atoken, <note id>, version)

Returns the note at the specified version. version is an incrementing integer, and invalid version defaults to latest version.

Authenticated get notes

Parent: #4

get notes (atoken, list of <note id>)

Returns the note title, metadata and contents as a json object.

Authenticated get searchable notes

Parent: #4

get searchable notes (atoken, list of <note id>, options)

Options:

  • delimiter: delimiter string
  • as list: returns a list instead of delimited string
  • tokens: returns as a dict of tokens, with their count
    Returns a space delimited version of the note that is designed to be indexed or searched on the client. This can be converted to a list of tokens by spliting on the spaces.

Authenticated update notes

Parent: #4

update notes (atoken, list of <note info>)

Push the provided info into the given note.
Returns { 'results' : number of successful updates }

Authenticated Note Offset

Parent #4

get note offset (atoken, note id, note set)

Find the position of a note in the given set. A set is a combinations of a notebook (1 or 0) and arbitrarily many tags, and ordered by a given attribute (default is last updated). A note set contains:

  • notebook: notebook guid
  • tags: list of tag ids
  • sort: sort order (title, meta, content, created, updated)
  • sort ascending: 1 or -1
    Returns the integer offset (0 for first note)

Authenicated Trash Notes

Parent: #4

trash notes (atoken, list of <note id>)

Send the given notes to the trash
Returns { 'results' : number of successful notes trashed }

Authenticated Create Notes

Parent: #4

create notes (authentication token, list of <note info>)

Create new notes based on the given information. If nothing is provided, the default note values are instantiated.

  • title
  • meta
  • content
  • public share
  • private share
    Returns the list of <new note id>s

Create a single page app for signing up and viewing/editing user profile

It starts out with just a username and password field, with a login button:

  • If the username/password sent in match a user, switch to a profile view.
  • If it doesn't match, offer two options: login again, or create user.
    • If they click create user, load a new screen with the username and password field filled in, and an extra confirm password field.
    • otherwise, repeat login step.

Authenticated Email notes

Parent #4

email notes (atoken, email info, list of <note id>)

Send the given notes to the given email address
Returns { 'results' : number of successful notes emailed }

Create a basic, templated user profile page.

No editing yet, just show user, last login (via token information). Authenticate this with the token.
This is a prerequisite for finishing #2. This is also part of the web interface that does basic note creation.

Implement Users

Part of the v0.2.0 spec. This is part of the conversion to Github issues from a single doc. See #1

Authenticated get notes sharing info

Parent: #4

get notes sharing info (atoken, list of <note id>)

Return a list of pairs of [private, public] share link strings. If they are empty, the note is note shared that way.

Authenticated Copy Note

Parent: #4

copy note (atoken, note id, target Notebook)

Copy the existing note to the target notebook
Returns the new note id

Implement programatic "sets" of notes

This is a prerequisite for #11, #12 . The current system is just getting all notes for a user. This depends on having notes and tags ( #5 and #6 ) so this is a v0.4.0 task. #11 and #12 need to also be updated to the v0.4.0 milestone.

Implement Login

Part of the v0.2.0 spec. This is part of the conversion to Github issues from a single doc. See #1

Depends on #32

Authenticated get note ids

Parent: #4

get note ids (atoken, set)

Find the notes that are in the set. A set is a combinations of a notebook (1 or 0) and arbitrarily many tags, and ordered by a given attribute (default is last updated). A note set contains:

  • notebook: notebook guid
  • tags: list of tag ids
  • sort: sort order (title, meta, content, created, updated)
  • sort ascending: 1 or -1
    Returns a list of the ids of notes in the set.

Initial Login Page

Parent: #2

Create the html for the initial login page (username field, password field, login button, create user button)

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.