A full-stack note-taking app with RAG chat over your own notes. Spring Boot + Postgres (pgvector) + React + Ollama. All LLM calls run locally.
- Notes CRUD with tags, pagination, and hybrid search (vector + full-text via reciprocal rank fusion).
- RAG chat with streaming answers,
[N]citations rendered as clickable buttons that scroll the source into view. - Multi-conversation history, rename, in-chat search, Markdown export, copy, stop/regenerate.
- Tag-scoped chat — pin a conversation to a tag so retrieval only sees those notes.
- 👍/👎 feedback with a triage dashboard.
- Background re-index job, dark/light theme.
- JUnit + Vitest tests, GitHub Actions CI.
docker compose up -d # Postgres with pgvector
ollama pull nomic-embed-text llama3.2:3b
cd backend && mvn spring-boot:run # :8080
cd frontend && npm install && npm run dev # :5173Flyway applies V1–V7 on first start.
| Backend | Java 17, Spring Boot 3, Spring Security (JWT), JPA, Flyway |
| DB | Postgres 16, pgvector (HNSW), tsvector + GIN |
| AI | Ollama (nomic-embed-text, llama3.2:3b) over HTTP |
| Frontend | React 18, TypeScript, Vite, react-markdown + remark-gfm |
| Tests / CI | JUnit 5, Vitest, Testing Library, GitHub Actions |
- Detailed roadmap, architecture, API surface, and build history: smart-notes-ai.md