Personal project · On my server · 2026

Notebook

Notes as a chat with yourself, with memory: ask them, search them and study with flashcards. Open source.

See it live ↗

My role

Idea, architecture, development and open-source release, with my AI agent as a pair programmer.

Stack

  • Node.js
  • Express
  • SQLite
  • sqlite-vec
  • FTS5
  • RAG
  • Groq
  • Gemini
  • SSE
  • PWA
  • JavaScript

The problem

University notes end up scattered across notebooks, whiteboard photos, voice notes and chats. Notebook groups them by subject in chat-like threads and lets you ask them questions in natural language: it answers only from what you wrote, cites the source and jumps to the exact message when you tap it. From the same notes it generates summaries, flashcards and quizzes.

Highlights

  1. 01Hybrid search inside SQLite: meaning (sqlite-vec) + exact words (FTS5) fused with RRF, no separate vector database. 93 % Recall@6 measured on real data.
  2. 02Streaming answers with citations: every source jumps to the exact message and highlights the sentence the AI used; conversations keep context.
  3. 03Whiteboard photos and voice notes are transcribed automatically and indexed; it also imports WhatsApp chats with their photos and audio.
  4. 04Study mode: summaries, flashcards and quizzes generated from a note or a whole subject.
  5. 05Fluid writing: messages appear instantly and are sent in order even on a slow network, never losing what you are typing.
  6. 06Zero cost: all AI runs on free tiers (Groq and Gemini) within their limits; lightweight on purpose (Node.js, framework-free frontend, systemd) for a low-RAM server.

What I learned

  • → 01Measure before tuning: an automatic evaluation with generated questions showed the relevance cutoff was wrong and chunks were splitting messages in half; with data, retrieval reached 93 %.
  • → 02Fluidity is architecture, not styling: a send queue and never stealing focus from the input mattered more than any animation.
  • → 03Open-sourcing forces you to tidy up: tests, CI, docs and removing every personal detail from the history before publishing.

Live

Running on my server

Projects running on my homelab, under my own domain. Open each one to see how it works.

Posts about this project

Next project

Rubik →

← Back