skip to content
← back to all projects

studybuddy

On-device RAG study app for React Native.

React Native Skia llama.rn SQLite

studybuddy

on-device RAG study app · review heatmap

beta
Jun 1 · 4 reviewsJun 2 · 3 reviewsJun 3 · 5 reviewsJun 4 · 4 reviewsJun 5 · 1 reviewsJun 6 · 3 reviewsJun 7 · 2 reviewsJun 8 · 4 reviewsJun 9 · 5 reviewsJun 10 · 3 reviewsJun 11 · 2 reviewsJun 12 · 5 reviewsJun 13 · 5 reviewsJun 14 · 2 reviewsJun 15 · 1 reviewsJun 16 · 3 reviewsJun 17 · 5 reviewsJun 18 · 4 reviewsJun 19 · 0 reviewsJun 20 · 3 reviewsJun 21 · 6 reviewsJun 22 · 0 reviewsJun 23 · 4 reviewsJun 24 · 0 reviewsJun 25 · 2 reviewsJun 26 · 0 reviewsJun 27 · 1 reviewsJun 28 · 6 reviewsJun 29 · 5 reviewsJun 30 · 0 reviewsJul 1 · 1 reviewsJul 2 · 7 reviewsJul 3 · 4 reviewsJul 4 · 7 reviewsJul 5 · 3 reviewsJul 6 · 5 reviewsJul 7 · 0 reviewsJul 8 · 1 reviewsJul 9 · 6 reviewsJul 10 · 6 reviewsJul 11 · 2 reviewsJul 12 · 7 reviewsJul 13 · 2 reviewsJul 14 · 4 reviewsJul 15 · 9 reviewsJul 16 · 10 reviewsJul 17 · 6 reviewsJul 18 · 2 reviewsJul 19 · 3 reviewsJul 20 · 4 reviewsJul 21 · 1 reviewsJul 22 · 9 reviewsJul 23 · 9 reviewsJul 24 · 10 reviewsJul 25 · 13 reviewsJul 26 · 1 reviewsJul 27 · 15 reviewsJul 28 · 7 reviewsJul 29 · 15 reviewsJul 30 · 2 reviewsJul 31 · 2 reviewsAug 1 · 0 reviewsAug 2 · 6 reviewsAug 3 · 9 reviewsAug 4 · 11 reviewsAug 5 · 17 reviewsAug 6 · 1 reviewsAug 7 · 13 reviewsAug 8 · 17 reviewsAug 9 · 5 reviewsAug 10 · 15 reviewsAug 11 · 4 reviewsAug 12 · 11 reviewsAug 13 · 17 reviewsAug 14 · 3 reviewsAug 15 · 21 reviewsAug 16 · 12 reviewsAug 17 · 22 reviewsAug 18 · 10 reviewsAug 19 · 14 reviewsAug 20 · 8 reviewsAug 21 · 14 reviewsAug 22 · 8 reviewsAug 23 · 17 reviewsAug 24 · 8 reviewsAug 25 · 12 reviewsAug 26 · 22 reviewsAug 27 · 18 reviewsAug 28 · 26 reviewsAug 29 · 24 reviewsAug 30 · 11 reviewsAug 31 · 16 reviewsSep 1 · 9 reviewsSep 2 · 3 reviewsSep 3 · 20 reviewsSep 4 · 9 reviewsSep 5 · 23 reviewsSep 6 · 26 reviewsSep 7 · 3 reviewsSep 8 · 15 reviewsSep 9 · 26 reviewsSep 10 · 4 reviewsSep 11 · 31 reviewsSep 12 · 6 reviewsSep 13 · 23 reviewsSep 14 · 24 reviewsSep 15 · 8 reviewsSep 16 · 14 reviewsSep 17 · 6 reviewsSep 18 · 23 reviewsSep 19 · 12 reviewsSep 20 · 7 reviewsSep 21 · 24 reviewsSep 22 · 33 reviewsSep 23 · 12 reviewsSep 24 · 30 reviewsSep 25 · 15 reviewsSep 26 · 5 reviewsSep 27 · 33 reviewsSep 28 · 15 reviewsSep 29 · 0 reviewsSep 30 · 30 reviewsOct 1 · 26 reviewsOct 2 · 35 reviewsOct 3 · 37 reviewsOct 4 · 8 reviewsOct 5 · 26 reviewsOct 6 · 21 reviewsOct 7 · 8 reviewsOct 8 · 2 reviewsOct 9 · 30 reviewsOct 10 · 30 reviewsOct 11 · 12 reviewsOct 12 · 5 reviewsOct 13 · 6 reviewsOct 14 · 1 reviewsOct 15 · 4 reviewsOct 16 · 18 reviewsOct 17 · 10 reviewsOct 18 · 18 reviewsOct 19 · 3 reviewsOct 20 · 3 reviewsOct 21 · 11 reviewsOct 22 · 6 reviewsOct 23 · 7 reviewsOct 24 · 8 reviewsOct 25 · 8 reviewsOct 26 · 13 reviewsOct 27 · 8 reviewsOct 28 · 7 reviewsOct 29 · 18 reviewsOct 30 · 6 reviewsOct 31 · 10 reviewsNov 1 · 12 reviewsNov 2 · 11 reviewsNov 3 · 12 reviewsNov 4 · 5 reviewsNov 5 · 7 reviewsNov 6 · 6 reviewsNov 7 · 6 reviewsNov 8 · 14 reviewsNov 9 · 5 reviewsNov 10 · 4 reviewsNov 11 · 14 reviewsNov 12 · 7 reviewsNov 13 · 3 reviewsNov 14 · 7 reviewsNov 15 · 1 reviewsNov 16 · 12 reviewsNov 17 · 4 reviewsNov 18 · 10 reviewsNov 19 · 8 reviewsNov 20 · 15 reviewsNov 21 · 19 reviewsNov 22 · 17 reviewsNov 23 · 9 reviewsNov 24 · 3 reviewsNov 25 · 19 reviewsNov 26 · 11 reviewsNov 27 · 18 reviewsNov 28 · 19 reviewsNov 29 · 10 reviewsNov 30 · 3 reviewsDec 1 · 13 reviewsDec 2 · 17 reviewsDec 3 · 4 reviewsDec 4 · 8 reviewsDec 5 · 12 reviewsDec 6 · 21 reviewsDec 7 · 11 reviewsDec 8 · 19 reviewsDec 9 · 18 reviewsDec 10 · 16 reviewsDec 11 · 1 reviewsDec 12 · 1 reviewsDec 13 · 4 reviewsDec 14 · 11 reviewsDec 15 · 15 reviewsDec 16 · 16 reviewsDec 17 · 21 reviewsDec 18 · 18 reviewsDec 19 · 14 reviewsDec 20 · 18 reviewsDec 21 · 18 reviewsDec 22 · 13 reviewsDec 23 · 7 reviewsDec 24 · 9 reviewsDec 25 · 19 reviewsDec 26 · 14 reviewsDec 27 · 7 reviewsDec 28 · 19 reviewsDec 29 · 13 reviewsDec 30 · 7 reviewsDec 31 · 18 reviewsJan 1 · 3 reviewsJan 2 · 8 reviewsJan 3 · 0 reviewsJan 4 · 2 reviewsJan 5 · 13 reviewsJan 6 · 15 reviewsJan 7 · 19 reviewsJan 8 · 18 reviewsJan 9 · 9 reviewsJan 10 · 14 reviewsJan 11 · 7 reviewsJan 12 · 13 reviewsJan 13 · 7 reviewsJan 14 · 2 reviewsJan 15 · 14 reviewsJan 16 · 22 reviewsJan 17 · 28 reviewsJan 18 · 34 reviewsJan 19 · 37 reviewsJan 20 · 37 reviewsJan 21 · 9 reviewsJan 22 · 31 reviewsJan 23 · 24 reviewsJan 24 · 21 reviewsJan 25 · 21 reviewsJan 26 · 21 reviewsJan 27 · 19 reviewsJan 28 · 15 reviewsJan 29 · 14 reviewsJan 30 · 7 reviewsJan 31 · 23 reviewsFeb 1 · 11 reviewsFeb 2 · 23 reviewsFeb 3 · 23 reviewsFeb 4 · 28 reviewsFeb 5 · 19 reviewsFeb 6 · 6 reviewsFeb 7 · 0 reviewsFeb 8 · 6 reviewsFeb 9 · 38 reviewsFeb 10 · 3 reviewsFeb 11 · 35 reviewsFeb 12 · 17 reviewsFeb 13 · 20 reviewsFeb 14 · 4 reviewsFeb 15 · 31 reviewsFeb 16 · 2 reviewsFeb 17 · 14 reviewsFeb 18 · 9 reviewsFeb 19 · 26 reviewsFeb 20 · 21 reviewsFeb 21 · 4 reviewsFeb 22 · 34 reviewsFeb 23 · 26 reviewsFeb 24 · 23 reviewsFeb 25 · 28 reviewsFeb 26 · 19 reviewsFeb 27 · 28 reviewsFeb 28 · 18 reviewsMar 1 · 6 reviewsMar 2 · 3 reviewsMar 3 · 3 reviewsMar 4 · 2 reviewsMar 5 · 8 reviewsMar 6 · 22 reviewsMar 7 · 21 reviewsMar 8 · 16 reviewsMar 9 · 29 reviewsMar 10 · 1 reviewsMar 11 · 12 reviewsMar 12 · 10 reviewsMar 13 · 8 reviewsMar 14 · 24 reviewsMar 15 · 14 reviewsMar 16 · 5 reviewsMar 17 · 25 reviewsMar 18 · 25 reviewsMar 19 · 7 reviewsMar 20 · 14 reviewsMar 21 · 23 reviewsMar 22 · 22 reviewsMar 23 · 16 reviewsMar 24 · 13 reviewsMar 25 · 19 reviewsMar 26 · 7 reviewsMar 27 · 12 reviewsMar 28 · 18 reviewsMar 29 · 12 reviewsMar 30 · 14 reviewsMar 31 · 12 reviewsApr 1 · 11 reviewsApr 2 · 20 reviewsApr 3 · 21 reviewsApr 4 · 16 reviewsApr 5 · 6 reviewsApr 6 · 12 reviewsApr 7 · 12 reviewsApr 8 · 16 reviewsApr 9 · 7 reviewsApr 10 · 16 reviewsApr 11 · 6 reviewsApr 12 · 14 reviewsApr 13 · 7 reviewsApr 14 · 5 reviewsApr 15 · 9 reviewsApr 16 · 13 reviewsApr 17 · 10 reviewsApr 18 · 14 reviewsApr 19 · 10 reviewsApr 20 · 2 reviewsApr 21 · 4 reviewsApr 22 · 13 reviewsApr 23 · 7 reviewsApr 24 · 4 reviewsApr 25 · 9 reviewsApr 26 · 9 reviewsApr 27 · 9 reviewsApr 28 · 8 reviewsApr 29 · 2 reviewsApr 30 · 10 reviewsMay 1 · 11 reviewsMay 2 · 6 reviewsMay 3 · 5 reviewsMay 4 · 1 reviewsMay 5 · 5 reviewsMay 6 · 9 reviewsMay 7 · 7 reviewsMay 8 · 4 reviewsMay 9 · 4 reviewsMay 10 · 5 reviewsMay 11 · 6 reviewsMay 12 · 4 reviewsMay 13 · 0 reviewsMay 14 · 1 reviewsMay 15 · 1 reviewsMay 16 · 1 reviewsMay 17 · 3 reviewsMay 18 · 6 reviewsMay 19 · 6 reviewsMay 20 · 5 reviewsMay 21 · 1 reviewsMay 22 · 0 reviewsMay 23 · 2 reviewsMay 24 · 5 reviewsMay 25 · 2 reviewsMay 26 · 6 reviewsMay 27 · 4 reviewsMay 28 · 6 reviewsMay 29 · 6 reviewsMay 30 · 2 reviewsMay 31 · 1 reviewsJun 1 · 4 reviewsJun 2 · 1 reviewsJun 3 · 3 reviewsJun 4 · 2 reviewsJun 5 · 2 reviewsJun 6 · 4 reviewsJanFebMarAprMayJunJulAugSepOctNovDec
lessmore

Elevator pitch

A flashcard / study app that runs the entire inference loop on-device — embedding model + small LLM via llama.rn — so my notes never leave my phone, and the spaced-repetition queue is generated from a true semantic retrieval pass over my own corpus rather than tags or hand-picked decks.

What it is

A React Native app with three loops:

  1. Capture loop. I write a note. It’s chunked, embedded on-device by a quantised E5-small, and stored in SQLite with the chunk vectors as BLOBs.
  2. Retrieval loop. I ask a question. The query is embedded, cosine-searched against the local vectors, top-k chunks are pulled, and a small on-device LLM generates a flashcard from the retrieved context.
  3. Review loop. The flashcard is enqueued in a SuperMemo-2 spaced-repetition schedule. The heatmap (the one on the portfolio tile) is the daily-review-completion view.

All of it runs without a network. The phone is the server.

Status

Repogithub.com/mateokadiu/studybuddy
Statusbeta
PlatformsiOS + Android via React Native 0.76
ModelE5-small (embeddings) + Phi-3-mini-int4 (generation)

The problem I was solving

Notes apps make me file things. They don’t make me learn things. Anki is the gold standard for the review loop but every card is hand-authored — there’s no path from “I read 200 pages” to “I now have 30 well-tuned cards covering it”.

The bet: combine retrieval-augmented card generation with spaced repetition, and run it entirely locally because the corpus is personal notes I don’t want in someone’s cloud.

Key decisions

  1. On-device only. Once that’s the spec, every other decision falls out: small quantised models, embeddings as BLOBs in SQLite, no auth surface, no sync.
  2. llama.rn over MLC / ExecuTorch. llama.cpp’s quantisation story is more mature; the int4 model is the difference between 200ms and 2s per token on an iPhone 14.
  3. SuperMemo-2, not SM-15+. SM-2 is six lines; the marginal accuracy of SM-15+ doesn’t compensate for the implementation cost on a solo project.
  4. Skia for the heatmap. Smooth 60fps gestures on the year view; SVG falls over on a 53×7 grid with hover.

Numbers

  • ~200ms per generated token on iPhone 14 with int4 quantisation
  • 53×7 cells in the year heatmap
  • 0 bytes of personal data leaves the device