An AI-powered document analysis platform with real-time chat and intelligent search capabilities.
- π PDF Upload & Analysis - Upload PDFs and chat with your documents
- π Smart Search - WebSocket & Elasticsearch-powered fuzzy search with autocomplete
- π Privacy First - 100% local processing with Ollama (no external APIs)
- π― Session Management - Multiple concurrent document conversations
Backend
- Spring Boot 3.5.7 + Java 21
- Spring AI (LLM integration)
- Elasticsearch 8.11 (search)
- MongoDB 7.0 (storage)
- WebSocket/STOMP (real-time)
- Apache PDFBox (PDF parsing)
Frontend
- React 18 + Vite
- STOMP.js + SockJS (WebSocket client)
- Custom design system
Infrastructure
- Docker Compose
- Ollama (Llama 3.1 8B model)
- Single-port deployment
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER BROWSER β
β React 18 + Vite Frontend β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββββββ β
β β Session List β β Document β β Chat Interface β β
β β (Search) β β Upload β β (WebSocket Streaming) β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββββββ β
βββββββββββββββ¬βββββββββββββ¬βββββββββββββββββββββ¬ββββββββββββββββββ βββ
β β β
β WebSocket β REST API β REST API
β (Search) β (Upload) β (Real-time Chat)
β β β
βββββββββββββββΌβββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββ
β SPRING BOOT APPLICATION β
β (Single Port: 8080) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Controllers Layer β β
β β β’ WebSocketController β’ DocumentController β’ ChatControllerβ β
β ββββββββββββββ¬ββββββββββββββββββββββ¬βββββββββββββββββββ¬βββββββββ β
β β β β β
β ββββββββββββββΌββββββββββββββββββββββΌβββββββββββββββββββΌββββββββββ β
β β Service Layer β β
β β β’ ChatService β β
β β β’ DocumentService β β
β β β’ ElasticsearchSearchService β β
β β β β
β ββββββββββ¬βββββββββββββββ¬βββββββββββββββ¬ββββββββββββββ¬βββββββββββ β
β β β β β β
β ββββββββββΌβββββ ββββββββΌβββββββ ββββββΌββββββ ββββββΌβββββββββββ β
β β AI β β PDFBox β β MongoDB β β Elasticsearch β β
β β Integration β β Text β β Repo β β Client β β
β ββββββββββ¬βββββ β Extraction β ββββββ¬ββββββ ββββββ¬βββββββββββ β
β β βββββββββββββββ β β β
βββββββββββββΌβββββββββββββββββββββββββββββΌβββββββββββββΌβββββββββββββββ
β β β
βββββββββΌβββββββββ βββββββββββΌβββββββ ββββΌββββββββββββββ
β OLLAMA LLM β β MONGODB β β ELASTICSEARCH β
β (Llama 3.1) β β β β β
ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ
1. Document Upload Flow:
User β Upload PDF β DocumentController β PDFBox (Extract)
β Save to MongoDB β Create Session β Sync to Elasticsearch
β Return Session ID
2. Chat Message Flow (WebSocket):
User β Send Message β WebSocketController β ChatService
β Retrieve Context from MongoDB β Spring AI β Ollama LLM
β Stream Tokens β WebSocket β User (Real-time Display)
β Save to MongoDB β Sync to Elasticsearch
3. Search Flow (Real-time):
User β Type Query β WebSocketController β ElasticsearchSearchService
β Fuzzy Search in Elasticsearch β Return Results β WebSocket
β Display Matches (Live Update)
4. Session Retrieval Flow:
User β Select Session β REST API β ChatService
β Fetch from MongoDB β Return History β Display Chat
- 8GB RAM minimum (for Ollama LLM)
- Docker Desktop or Podman
- Maven 4.x+
- Java 21+
- IntelliJ IDEA or VSCode (optional)
docker-compose up -dWait 1-2 minutes for services to start and Ollama model to download.
mvn clean installspring-boot:run
(or)
java -jar target/PDFChatBot.jarThen open: http://localhost:8080
- Upload PDF β System extracts text and creates a chat session
- Ask Questions β LLM analyzes document context and responds
- Real-Time Streaming β Responses stream token-by-token like ChatGPT
- Search Sessions β Find past conversations with fuzzy search
- Continue Conversations β Resume any chat session
document-summary/
βββ src/main/java/com/docqa/
β βββ config/ # Spring & Elasticsearch config
β βββ controller/ # REST & WebSocket endpoints
β βββ service/ # Business logic & LLM integration
β βββ repository/ # MongoDB repositories
β βββ model/ # Domain entities
βββ frontend/src/
β βββ components/ # React components
β βββ api/ # API client
β βββ design-system.css # UI styles
βββ docker-compose.yml # Infrastructure setup
- Single-Port Deployment - Frontend served from Spring Boot
- Async Streaming - Non-blocking WebSocket responses
- Search Indexing - Auto-sync MongoDB β Elasticsearch
- Session Isolation - Each document gets separate context
MIT License - Feel free to use for personal or commercial projects!
Contributions welcome! Please open an issue or PR.
Built with β€οΈ using Spring Boot β’ React β’ Ollama β’ Elasticsearch β’ MongoDB