A personalized note-taking application with AI-powered suggestions using RAG (Retrieval-Augmented Generation).
- 🔐 Multi-user Authentication - Secure JWT-based authentication
- 📝 Rich Text Editor - Full-featured Tiptap editor with formatting
- 🏷️ Tags & Organization - Tag your notes for easy filtering
- 📦 Bulk Operations - Select and manage multiple notes at once
- 🤖 AI Suggestions - Get personalized suggestions based on your notes
- 🔍 Semantic Search - AI-powered search across all your notes
- 🔄 Hybrid AI - Switch between local (Ollama) and cloud (OpenAI/Anthropic) LLMs
- Backend: FastAPI, Python, MongoDB (Beanie ODM)
- Frontend: React, TypeScript, Tailwind CSS, Tiptap
- AI: LangChain, LangGraph, MongoDB Atlas Vector Search
- Python 3.11+
- Node.js 18+
- MongoDB Atlas account (for Vector Search)
- Ollama (for local LLM) or API keys for cloud providers
cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your MongoDB URI and other settings
# Run the server
uvicorn main:app --reloadcd frontend
# Install dependencies
npm install
# Run development server
npm run devCreate a .env file in the backend directory:
MONGODB_URI=mongodb+srv://...
DATABASE_NAME=notetaking_db
SECRET_KEY=your-secret-key
LLM_PROVIDER=local # or openai, anthropic
OLLAMA_BASE_URL=http://localhost:11434
# OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=...POST /api/v1/auth/register- Register new userPOST /api/v1/auth/login- Login and get tokenGET /api/v1/auth/me- Get current user
GET /api/v1/notes/- List all notesPOST /api/v1/notes/- Create noteGET /api/v1/notes/{id}- Get notePATCH /api/v1/notes/{id}- Update noteDELETE /api/v1/notes/{id}- Delete notePOST /api/v1/notes/bulk/delete- Bulk deletePOST /api/v1/notes/bulk/tags- Bulk tag update
POST /api/v1/ai/suggest- Get AI suggestionsPOST /api/v1/ai/search- Semantic search
MIT