GithubHelp home page GithubHelp logo

pensieve-srs / pensieve-api Goto Github PK

View Code? Open in Web Editor NEW
20.0 6.0 6.0 1.57 MB

🔭The Pensieve backend providing the API to review cards

Home Page: https://pensieve.app

License: MIT License

JavaScript 100.00%

pensieve-api's Introduction

"I use Pensieve. One simply siphons the excess thoughts from one's mind, pours them into the basin, and examines them at one's leisure. It becomes easier to spot patterns and links, you understand, when they are in this form."

Albus Dumbledore

This project contains the backend for Pensieve providing the API for accessing data using NodeJS and MongoDB.

Getting Started

Dependencies

  • Node 4+
  • MongoDB
  • SendGrid

Installing

Clone this project and update path accordingly:

git clone [email protected]:pensieve-srs/pensieve-api.git
cd pensieve-api/

Install the dependencies:

yarn install

Copy the .env.example and update the variables to your settings:

cp .env.example .env.development.local

Start MongoDB instance:

mongod

Finally, start the server and watch for changes:

yarn run start:watch

Open up your browser and navigate to http://localhost:5000/docs/. You should see a Swagger API Docs interface.

Contributing

Roadmap

View the Project Roadmap which includes upcoming features, reported bugs, and other updates to the project.

Contributing Guide

All work happens directly on GitHub and contributions are welcomed!. Submit a Pull Request to introduce new code changes. Open an Issue to request a new feature or report a bug. Interested in contributing? Contact @nlaz for help to get started.

License

Pensieve is MIT licensed.

pensieve-api's People

Contributors

nlaz avatar deklanw avatar jappareti avatar

Stargazers

Stacey Burns avatar Eddie Husarcik, MD avatar Tay Hai avatar Marcin Ostrouch avatar Jedediah avatar Xicor avatar David Pavlík avatar bampt avatar Jamal Taylor avatar Ryan Atkinson avatar Kevin Yeh avatar 开水白菜 avatar  avatar  avatar  avatar Sheng Xi avatar Andreas Røssland avatar  avatar Clifford Patterson avatar Aristotelis avatar

Watchers

James Cloos avatar Daniel Moraes avatar  avatar  avatar  avatar Clifford Patterson avatar

pensieve-api's Issues

Support deck tags

Description

Users want to use tags in order to organize and sort decks more effectively. This includes setting up new data models and creating a new endpoint for querying tags.

Tests are slow on Windows 10

The tests are significantly slower on Windows (10 at least).

I was hesitant on making pull requests for this project until I got this resolved. Turns out to be something related to IPv6. More info here:
Automattic/mongoose#6566 (comment)

mongoose.connect(config.database.uri);

Just changing the line to
mongoose.connect(config.database.uri, { family: 4 });
works. I don't think it has any unintended consequences, either. Unless the server needs to use IPv6 for some reason?

Add API documentation

Description

The API lacks clear and consistent documentation. It should be updated to include documentation and tooling to support developers.

Add request validation to backend

Currently the backend controllers don't do any sort of object validation. We should use Joi to help validate some of the controller requests.

Support shareable public decks

Description

We want to support public decks for users to share and discover decks. This requires an update to the deck and cards models and query permissions.

Support `additional` field for card notes

Description

Cards frequently have additional notes that are related to the front/back information but not necessarily needed for review. Support this additional field for cards.

Prioritize cards with lowest recall rate for review

Description

Cards with low recall rate should be naturally be prompted for review. We want to keep some type of randomness with the review. However, we should set some prioritization for cards in review.

Support export of notes

Description

Users should be able to export and download a copy of their notes and their study activity. Build support for exporting user personal notes in .csv format.

Turn default data into json files

Description

The data that populates the default views currently live in a .js file and should really live in the database or a json file.

Prioritize cards with lowest recall rate for review

Description

Cards with low recall rate should be naturally be prompted for review. We want to keep some type of randomness with the review. However, we should set some prioritization for cards in review.

Support 'Undo' action for review

Description

Users want the ability to undo a review action in case of a mistaken touch. Users should be able to undo an action after just causing it.

Support forking decks

It's very important to be able to find quality flash cards and adjust them to one's needs. That goes for both teachers and students, who both have a need for quality content, yet one that suits their class curriculum/study requirements.

To meet this need, I propose a crowdsourcing model inspired by open-source communities. The idea is for public decks to be CC BY-SA by default, allowing people to make forks and propose changes to the original decks.

(Here's also an idea for making money from Pensieve: introduce a GitHub-like model and offer a paid tier that lets people create private proprietary decks to be shared with only a select group.)

The way it works could be identical to GitHub: fork to create your own deck, with the ability to file a pull request to the original deck whenever. (The terminology might need to be changed to be friendlier to non-technical people.)

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.