Skip to content

smallnest/notex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

46 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Notex

δΈ­ζ–‡ | English

A privacy-first, open-source alternative to NotebookLM

Go License

An AI-powered knowledge management application that lets you create intelligent notebooks from your documents.

Project URL: https://github.com/smallnest/notex

✨ Features

  • πŸ“š Multiple Source Types - Upload PDFs, text files, Markdown, DOCX, and HTML documents
  • πŸ€– AI-Powered Chat - Ask questions and get answers based on your sources
  • ✨ Multiple Transformations - Generate summaries, FAQs, study guides, outlines, timelines, glossaries, quizzes, mindmaps, infographics and podcast scripts
  • πŸ“Š Infographic Generation - Create beautiful, hand-drawn style infographics from your content using Google's Gemini Nano Banana
  • πŸŽ™οΈ Podcast Generation - Create engaging podcast scripts from your content
  • πŸ’Ύ Full Privacy - Local SQLite storage, optional cloud backends
  • πŸ”„ Multi-Model Support - Works with OpenAI, Ollama, and other compatible APIs
  • 🎨 Academic Brutalist Design - Distinctive, research-focused interface

πŸš€ Quick Start

Prerequisites

  • Go 1.23 or later
  • An LLM API key (OpenAI) or Ollama running locally

Installation

# Clone the repository
git clone https://github.com/smallnest/notex.git
cd notex

# Install dependencies
go mod tidy

# Set your API key
export OPENAI_API_KEY=your_key_here

# Run the server
go run . -server

Open your browser to http://localhost:8080

Using Ollama (Local, Free)

# Make sure Ollama is running
ollama serve

# Run with Ollama
export OLLAMA_BASE_URL=http://localhost:11434
go run . -server

Alternative: Build and Run

# Build the binary
go build -o notex .

# Run with OpenAI
export OPENAI_API_KEY=your_key_here
./notex -server

# Or run with Ollama
export OLLAMA_BASE_URL=http://localhost:11434
./notex -server

πŸ“– Usage

Creating Notebooks

  1. Click "New Notebook" in the header
  2. Enter a name and optional description
  3. Click "Create Notebook"

Adding Sources

You can add content to your notebook in three ways:

File Upload

  • Click the "+" button in the Sources panel
  • Drag and drop or browse for files
  • Supported: PDF, TXT, MD, DOCX, HTML

Paste Text

  • Select the "Text" tab
  • Enter a title and paste your content

From URL

  • Select the "URL" tab
  • Enter the URL and optional title

Chatting with Sources

  1. Switch to the "CHAT" tab
  2. Ask questions about your content
  3. Responses include references to relevant sources

Transformations

Click any transformation card to generate:

Transformation Description
πŸ“ Summary Condensed overview of your sources
❓ FAQ Common questions and answers
πŸ“š Study Guide Educational material with learning objectives
πŸ—‚οΈ Outline Hierarchical structure of topics
πŸŽ™οΈ Podcast Conversational script for audio content
πŸ“… Timeline Chronological events from sources
πŸ“– Glossary Key terms and definitions
✍️ Quiz Assessment questions with answer key
πŸ“Š Infographic Hand-drawn style visual representation of your content
🧠 Mindmap Visual hierarchical diagram of your sources using Mermaid.js

Or use the custom prompt field for any other transformation.

βš™οΈ Configuration

Environment Variables

Variable Description Default
OPENAI_API_KEY OpenAI API key Required (unless using Ollama)
OPENAI_BASE_URL Custom API base URL OpenAI default
OPENAI_MODEL Model name gpt-4o-mini
EMBEDDING_MODEL Embedding model text-embedding-3-small
OLLAMA_BASE_URL Ollama server URL http://localhost:11434
OLLAMA_MODEL Ollama model name llama3.2
GOOGLE_API_KEY Google Gemini API key Required for Infographics
SERVER_HOST Server host 0.0.0.0
SERVER_PORT Server port 8080
VECTOR_STORE_TYPE Vector store backend sqlite
STORE_PATH Database path ./data/checkpoints.db
MAX_SOURCES Max sources for RAG 5
CHUNK_SIZE Document chunk size 1000
CHUNK_OVERLAP Chunk overlap 200

Vector Store Options

  • sqlite - Local SQLite database (default)
  • memory - In-memory vectors
  • supabase - Supabase vector store
  • postgres / pgvector - PostgreSQL with pgvector
  • redis - Redis with RediSearch

Example Configuration Files

docker-compose.yml (for PostgreSQL + pgvector)

version: '3.8'
services:
  postgres:
    image: pgvector/pgvector:pg16
    environment:
      POSTGRES_DB: notebook
      POSTGRES_USER: notebook
      POSTGRES_PASSWORD: secret
    ports:
      - "5432:5432"

  app:
    build: .
    environment:
      - POSTGRES_URL=postgres://notebook:secret@postgres:5432/notebook
      - VECTOR_STORE_TYPE=postgres
    ports:
      - "8080:8080"

πŸ”§ Development

Running Tests

go test -v ./...

Building

go build -o notex .

Code Quality

# Format
go fmt ./...

# Lint
golangci-lint run

# Vet
go vet ./...

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

Apache License 2.0 - see LICENSE for details.

πŸ™ Acknowledgments

πŸ“ž Support


Notex - A privacy-first, open-source alternative to NotebookLM https://github.com/smallnest/notex