This guide walks you through setting up Note Taker Plus on macOS. Linux/Windows instructions are similar with minor adjustments noted.
Before starting, ensure you have:
- Python 3.11+ (3.12 or 3.13 recommended; 3.14 works but is bleeding edge)
- Node.js 18+ (20 LTS recommended)
- Docker (recommended for PostgreSQL) or PostgreSQL installed locally
- Git
python3 --version # Should be 3.11+
node --version # Should be 18+
docker --version # Optional but recommendedgit clone https://github.com/shalgrim/note-taker-plus.git
cd note-taker-pluscd backend
# Create venv
python3 -m venv .venv
# Activate it
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windowspip install --upgrade pip
pip install -e .Troubleshooting:
- If you get hatchling errors, ensure your
pyproject.tomlhas the[tool.hatch.build.targets.wheel]section withpackages = ["app"] - On Python 3.14, some packages may have compatibility warnings (they usually still work)
cp .env.example .envEdit .env with your settings:
# Required: Database connection
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/notetaker
# Required: API key for authentication (make up a random string)
# Generate one with: python -c "import secrets; print(secrets.token_urlsafe(32))"
API_KEY=your-secret-key-here
# Optional: Raindrop.io integration
RAINDROP_TOKEN=
# Optional: Ollama settings (defaults work if Ollama is running locally)
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama3.2
# Optional: Obsidian export
OBSIDIAN_VAULT_PATH=/Users/scotthalgrim/Documents/Obsidian/main
OBSIDIAN_LEARNINGS_FOLDER=learnings# Start PostgreSQL container
docker run -d \
--name notetaker-db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=notetaker \
-p 5432:5432 \
-v notetaker-pgdata:/var/lib/postgresql/data \
postgres:15
# Verify it's running
docker psThe -v notetaker-pgdata:/var/lib/postgresql/data creates a persistent volume so your data survives container restarts.
Useful Docker commands:
docker stop notetaker-db # Stop the container
docker start notetaker-db # Start it again
docker logs notetaker-db # View logs
docker rm notetaker-db # Remove container (data in volume persists)# Install via Homebrew
brew install postgresql@15
brew services start postgresql@15
# Create database
createdb notetakersudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql
# Create database and user
sudo -u postgres createdb notetaker
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"Ollama runs AI models locally on your Mac for flashcard generation.
macOS:
brew install ollamaLinux:
curl -fsSL https://ollama.com/install.sh | shWindows: Download from https://ollama.com/download
# Start the Ollama service (runs in foreground)
ollama serveKeep this terminal open, or run it in the background:
# Run in background (macOS/Linux)
nohup ollama serve > /dev/null 2>&1 &In a new terminal:
# Recommended: Good balance of quality and speed
ollama pull llama3.2
# Alternative: Smaller/faster
ollama pull llama3.2:1b
# Alternative: Larger/smarter (needs more RAM)
ollama pull llama3.2:8bModel Requirements:
| Model | RAM Needed | Quality | Speed |
|---|---|---|---|
| llama3.2:1b | 4GB | Good | Fast |
| llama3.2 (3b) | 6GB | Better | Medium |
| llama3.2:8b | 10GB | Best | Slower |
ollama run llama3.2 "Say hello in one word"If this works, Ollama is ready.
cd backend
source .venv/bin/activate # If not already activated
# Start with auto-reload for development
uvicorn app.main:app --reloadYou should see:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process
Verify it works:
- Open http://localhost:8000 - should show
{"name": "Note Taker Plus API", ...} - Open http://localhost:8000/docs - interactive API documentation
- Open http://localhost:8000/health - should show service status
Troubleshooting:
- Port in use: Add
--port 8001to use a different port - Database connection failed: Check PostgreSQL is running and
.envis correct - Module not found: Make sure you ran
pip install -e .and venv is activated
In a new terminal:
cd frontend
# Install dependencies
npm install
# Start development server
npm run devYou should see:
VITE v5.x.x ready in xxx ms
➜ Local: http://localhost:5173/
Open http://localhost:5173 in your browser.
- Open http://localhost:5173
- Click Settings in the sidebar
- Enter your API key (the one you put in
backend/.env) - Verify the service status shows green checkmarks for Ollama
To sync highlights from Raindrop.io:
- Go to https://app.raindrop.io/settings/integrations
- Scroll to "For Developers"
- Click "Create new app"
- Fill in any name (e.g., "Note Taker Plus")
- After creating, click on your app
- Under "Test token", click "Create test token"
- Copy the token and add it to
backend/.env:RAINDROP_TOKEN=your-token-here - Restart the backend (
Ctrl+Cand runuvicornagain)
- Open Chrome and go to
chrome://extensions/ - Enable Developer mode (toggle in top right)
- Click Load unpacked
- Navigate to and select the
extensionfolder in this repo - Click the puzzle piece icon in Chrome toolbar
- Pin "Note Taker Plus" for easy access
- Click the extension icon and configure:
- API URL:
http://localhost:8000 - API Key: (same key from
.env)
- API URL:
Usage:
- Select text on any webpage
- Right-click → "Save to Note Taker+"
- Or press
Ctrl+Shift+S(Mac:Cmd+Shift+S)
Once everything is set up, your daily workflow is:
# Terminal 1: Start Postgres (if using Docker)
docker start notetaker-db
# Terminal 2: Start Ollama
ollama serve
# Terminal 3: Start Backend
cd backend && source .venv/bin/activate && uvicorn app.main:app --reload
# Terminal 4: Start Frontend
cd frontend && npm run devOr create a startup script - see scripts/ folder (coming soon).
- Open http://localhost:5173
- Check Review page for new sources to process
- Click Quiz to study due cards
- Use keyboard shortcuts: Space (reveal), 1-4 (rate)
- Check backend is running on port 8000
- Check you entered the correct API URL in settings
- Check CORS is configured (it should be by default)
- Make sure the key in the frontend settings matches
API_KEYinbackend/.env - Restart the backend after changing
.env
- Make sure
ollama serveis running - Check http://localhost:11434 is accessible
- Try
ollama run llama3.2 "test"to verify
- Check Ollama service status in Settings
- Check the backend logs for errors
- Ensure you have a model pulled (
ollama list)
- Check PostgreSQL is running:
docker psorpg_isready - Verify DATABASE_URL in
.envis correct - Check the database exists:
psql -l
See DEPLOYMENT.md for Railway/Render deployment instructions (coming soon).
- Check the README.md for feature overview
- API documentation at http://localhost:8000/docs
- Open an issue on GitHub for bugs