🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

femto-fsrs

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

femto-fsrs

A minimalistic implementation of FSRS 5 spaced repetition algorithm

latest
npmnpm
Version
2.0.0
Version published
Weekly downloads
25
-7.41%
Maintainers
1
Weekly downloads
 
Created
Source

Femto-FSRS

A zero dependency implementation of the FSRS 5 spaced repetition algorithm.

This is the scheduler used by Koala.Cards.

Demo

I made an HTML pen-and-paper demo here. You can store facts on paper and use Femto-FSRS for scheduling, just like Piotr Wozniak did in the 80s.

Features

  • Zero dependencies
  • Follows the paper.
  • Sensible defaults.

Usage

import { Grade, createDeck } from "femto-fsrs";

// === Create a new deck
const { newCard, gradeCard } = createDeck();

// === Initiate a new card with an initial grade of "GOOD":
const initialGrade = Grade.GOOD;
const myCard = newCard(initialGrade);

// === Grade the card as "easy" two days later.
//     Returns a new card that replaces the old one.
const daysSinceReview = 2;
const nextCard = gradeCard(myCard, daysSinceReview, Grade.EASY);
// The "I" attribute represents "I" like in the FSRS paper.
// It is the next review date at which the probability
// of success is 90% (assuming you used default parameters).
const nextReview = nextCard.I.toFixed(2);
// Print results:
console.log(`Card will be due for review in ${nextReview} day(s)`);

Result:

Card will be due for review in 16.63 day(s)

Installation

npm install femto-fsrs

Not Included

This is supposed to be a minimalistic library that can be used as a starting point for FSRS-enhanced apps. If you need a more full-featured offering with features like logs (so you can optimize your w param) or revert, etc.., check out ts-fsrs.

Tests

npm run test

Keywords

spaced repetition

FAQs

Package last updated on 03 May 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts