diff --git a/README.md b/README.md index d6e729e..f45d89a 100644 --- a/README.md +++ b/README.md @@ -1,98 +1,90 @@ -# ๐Ÿ“„ DocumentManager - +

๐Ÿ“„ DocumentManager

- -![Python](https://img.shields.io/badge/Python-3.12+-blue.svg?style=for-the-badge&logo=python) -![FastAPI](https://img.shields.io/badge/FastAPI-0.111+-00a393.svg?style=for-the-badge&logo=fastapi) -![Docker](https://img.shields.io/badge/Docker-Ready-2496ED.svg?style=for-the-badge&logo=docker) -![License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge) - -**Transform your document chaos into an AI-powered knowledge powerhouse** - -*Most document management systems feel like they're stuck in 2005. DocumentManager brings AI intelligence to understand your documents' actual content and meaning - not just their titles or tags.* - -[Features](#-features) โ€ข [Quick Start](#-quick-start) โ€ข [Demo](#-demo) โ€ข [Documentation](#-documentation) โ€ข [API](#-api) โ€ข [Contributing](#-contributing) - +

+ Python + FastAPI + Docker + License +

+

Transform your document chaos into an AI-powered knowledge powerhouse

+

Most document management systems feel like they're stuck in 2005. DocumentManager brings AI intelligence to understand your documents' actual content and meaning - not just their titles or tags.

+

+ Features โ€ข + Quick Start โ€ข + Demo โ€ข + Documentation โ€ข + API โ€ข + Contributing +

- ---- - -## ๐ŸŒŸ Features - -### ๐Ÿค– AI-Powered Intelligence -- **Semantic Search**: Find documents by meaning, not just keywords. Search for "payment terms" and find invoicing documents, contracts with payment clauses, and financial agreements - even if they never use those exact words -- **Smart OCR**: Extract text from scanned PDFs, photos of whiteboards, and documents in 50+ languages using Tesseract OCR -- **Auto-Tagging**: AI automatically categorizes documents based on content - financial reports get tagged as "finance", contracts as "legal", technical specs as "engineering" -- **Natural Language Queries**: Just ask questions like "Show me all contracts expiring this year" or "What were our Q4 marketing expenses?" -- **AI-Generated Summaries**: Understand large documents at a glance with automatic summary generation - -### ๐Ÿ”’ Enterprise-Ready Security -- **Role-Based Access Control**: Fine-grained permissions for users and groups -- **Complete Audit Trails**: Track all document activities -- **Privacy First**: Option to use Azure OpenAI to keep models in your own tenant -- **Self-Hosted**: All data stays on your infrastructure - no vendor lock-in -- **Session Management**: Secure session handling with automatic expiry - -### ๐Ÿš€ Modern Architecture -- **RESTful API**: Complete OpenAPI 3.0 documented API built with FastAPI -- **Vector Database**: ChromaDB for lightning-fast semantic search using embeddings -- **Flexible AI**: Choose between OpenAI or Azure OpenAI (your choice) -- **Simple Frontend**: Vanilla JavaScript keeping it simple and fast -- **Docker-Ready**: Deploy in minutes with included setup script - -## ๐Ÿ“ธ Demo - +
+ +

๐ŸŒŸ Features

+

๐Ÿค– AI-Powered Intelligence

+ +

๐Ÿ”’ Enterprise-Ready Security

+ +

๐Ÿš€ Modern Architecture

+ + +

๐Ÿ“ธ Demo

- -### Dashboard Overview -![Dashboard](images/dashboard-overview.png) -*Clean, intuitive dashboard showing document statistics and recent activities* - -### AI-Powered Search -![AI Search](images/ai-search.jpeg) -*Find documents by meaning, not just keywords - ask questions in natural language* - -### AI Chat -![AI Chat](images/ai-chat.png) -*Interactive AI chat for document analysis and knowledge extraction* - -### Document Upload & Processing -![Document Upload](images/document-upload.jpeg) -*Drag-and-drop interface with automatic text extraction and AI tagging* - -### Smart Tags & Organization -![Tags Management](images/tags.png) -*AI auto-generates correspondents, document types, and tags - fully customizable with color coding* - -### Document Viewer -![Document Viewer](images/document-viewer.png) -*Built-in document viewer with search highlighting and annotations* - -### User Management -![User Management](images/user-management.jpeg) -*Enterprise-grade user and permission management* - -### Settings & Configuration -![Settings](images/settings-page.jpeg) -*Easy configuration of AI providers and system settings* - +

Dashboard Overview

+ Dashboard +

Clean, intuitive dashboard showing document statistics and recent activities

+ + AI Search +

Find documents by meaning, not just keywords - ask questions in natural language

+

AI Chat

+ AI Chat +

Interactive AI chat for document analysis and knowledge extraction

+

Document Upload & Processing

+ Document Upload +

Drag-and-drop interface with automatic text extraction and AI tagging

+

Smart Tags & Organization

+ Tags Management +

AI auto-generates correspondents, document types, and tags - fully customizable with color coding

+

Document Viewer

+ Document Viewer +

Built-in document viewer with search highlighting and annotations

+

User Management

+ User Management +

Enterprise-grade user and permission management

+

Settings & Configuration

+ Settings +

Easy configuration of AI providers and system settings

-## ๐Ÿš€ Quick Start - -### Getting Started in 3 Minutes - -The beauty of open source? You can have this running on your machine right now: - -### Prerequisites -- Docker installed and running -- 4GB+ RAM recommended -- 10GB+ free disk space - -### ๐Ÿณ Using Docker (Recommended) - -```bash -# Clone the repository +

๐Ÿš€ Quick Start

+

Getting Started in 3 Minutes

+

The beauty of open source? You can have this running on your machine right now:

+

Prerequisites

+ + + +
# Clone the repository
 git clone https://github.com/JayRHa/Document-Manager.git
 cd Document-Manager
 
@@ -102,43 +94,56 @@ cd Document-Manager
 # Or manually with Docker
 docker build -t documentmanager .
 docker run -d \
-  --name documentmanager \
-  -p 8000:8000 \
-  -v $(pwd)/data:/app/data \
-  -v $(pwd)/storage:/app/storage \
-  documentmanager
-```
-
-The application will be available at `http://localhost:8000`
-
-### Windows Notes
-
-- Use `./setup.ps1` instead of `./setup.sh` in PowerShell:
-
-```powershell
-./setup.ps1 build
-./setup.ps1 prod
-```
-
-- Or run locally without Docker:
-
-```powershell
-python -m venv venv
-venv\Scripts\Activate
-pip install -r requirements.txt
-python cli.py serve
-```
-
-- OCR tools on Windows:
-  - Tesseract: `winget install tesseract-ocr` or `choco install tesseract`
-  - Poppler (for PDF OCR): `choco install poppler` or download binaries and set Settings.poppler_path to the poppler `bin` folder
-
-### ๐Ÿ› ๏ธ Using the Setup Script
-
-The `setup.sh` script provides an easy way to manage your DocumentManager installation:
-
-```bash
-# Start development environment with hot reload
+ย  --name documentmanager \
+ย  -p 8000:8000 \
+ย  -v $(pwd)/data:/app/data \
+ย  -v $(pwd)/storage:/app/storage \
+ย  documentmanager
+
+

The application will be available at http://localhost:8000

+ +

โš ๏ธ Windows Notes (Crucial Fixes)

+

Op Windows 10/11 moet u **Git Bash** gebruiken voor de meest betrouwbare installatie. De meegeleverde shell-scripts bevatten line endings die fouten veroorzaken in Linux-containers (exec... no such file or directory error).

+

Aanbevolen Installatieprocedure op Windows (Na git clone):

+
    +
  1. Corrigeer de Line Endings in Git Bash:
    + Repareer de docker-entrypoint.sh en docker-entrypoint-aio.sh scripts:

    +
    # Gebruik sed om de Windows-specifieke carriage return karakters te verwijderen
    +sed -i 's/\r$//' docker-entrypoint.sh
    +sed -i 's/\r$//' docker-entrypoint-aio.sh
    +
    +
  2. +
  3. Pas de SECRET_KEY aan:
    + De container crasht bij de start als de standaard SECRET_KEY niet is gewijzigd. Open het .env bestand en vervang de placeholder door een veilige, willekeurige waarde:

    +
    # Wijzig dit in het .env bestand:
    +SECRET_KEY=een_unieke_en_lange_willekeurige_geheime_sleutel
    +
    +
  4. +
  5. Bouw de Image op een schone manier:
    + Dit zorgt ervoor dat de gecorrigeerde scripts worden meegenomen in de Docker image:

    +
    # Stop en verwijder eerdere mislukte containers
    +docker stop documentmanager 2>/dev/null
    +docker rm documentmanager 2>/dev/null
    +
    +# Herbouw de image
    +docker build -t documentmanager .
    +
    +
  6. +
  7. Start de Container:

    +
    docker run -d \
    +ย  --name documentmanager \
    +ย  -p 8000:8000 \
    +ย  -v $(pwd)/data:/app/data \
    +ย  -v $(pwd)/storage:/app/storage \
    +ย  documentmanager
    +
    +

    Controleer de status met docker ps -f name=documentmanager. De status moet Up (healthy) zijn.

    +
  8. +
+ +

๐Ÿ› ๏ธ Using the Setup Script

+

The setup.sh script provides an easy way to manage your DocumentManager installation:

+
# Start development environment with hot reload
 ./setup.sh dev
 
 # Start production environment
@@ -155,72 +160,73 @@ The `setup.sh` script provides an easy way to manage your DocumentManager instal
 
 # Stop all containers
 ./setup.sh stop
-```
+
-### ๐Ÿ’ป Local Development - -```bash -# Create virtual environment +

๐Ÿ’ป Local Development

+
# Create virtual environment
 python -m venv venv
-source venv/bin/activate  # On Windows: venv\Scripts\activate
+source venv/bin/activateย  # On Windows: venv\Scripts\activate
 
 # Install dependencies
 pip install -r requirements.txt
 
 # Run development server
 uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
-```
-
-## ๐Ÿ“‹ Initial Setup
-
-1. **Create Admin Account**
-   - Navigate to `http://localhost:8000`
-   - The first user registration automatically becomes admin
-
-2. **Configure AI Provider**
-   - Go to Settings โ†’ AI Configuration
-   - Choose between OpenAI or Azure OpenAI
-   - Enter your API credentials
-   - Test the connection
-
-3. **Start Using**
-   - Upload documents via drag-and-drop
-   - Watch AI automatically extract text, generate summaries, and categorize
-   - AI detects: Title, Summary, Correspondent, Document Type, Document Date, Tags, and Tax Relevance
-   - Use semantic search to find information instantly with natural language
-
-## ๐Ÿ—๏ธ Architecture
-
-```
-DocumentManager/
-โ”œโ”€โ”€ app/                    # Backend FastAPI application
-โ”‚   โ”œโ”€โ”€ api/               # REST API endpoints
-โ”‚   โ”œโ”€โ”€ core/              # Core business logic
-โ”‚   โ”œโ”€โ”€ models/            # SQLAlchemy models
-โ”‚   โ””โ”€โ”€ services/          # AI, OCR, and storage services
-โ”œโ”€โ”€ frontend/              # Vanilla JS frontend
-โ”œโ”€โ”€ docker/                # Docker configuration
-โ”œโ”€โ”€ tests/                 # Test suite
-โ””โ”€โ”€ docs/                  # Documentation
-```
-
-### Technology Stack
-
-- **Backend**: FastAPI, SQLAlchemy, Pydantic
-- **AI/ML**: OpenAI GPT-4, Azure OpenAI, ChromaDB
-- **OCR**: Tesseract (50+ languages)
-- **Database**: SQLite (default), PostgreSQL (production)
-- **Frontend**: Vanilla JavaScript, modern CSS
-- **Deployment**: Docker, Docker Compose
-
-## ๐Ÿ”ง Configuration
-
-### Environment Variables
-
-Create a `.env` file in the root directory:
-
-```bash
-# Security - CHANGE IN PRODUCTION!
+
+ +

๐Ÿ“‹ Initial Setup

+
    +
  1. Create Admin Account + +
  2. +
  3. Configure AI Provider + +
  4. +
  5. Start Using + +
  6. +
+ +

๐Ÿ—๏ธ Architecture

+
DocumentManager/
+โ”œโ”€โ”€ app/ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  # Backend FastAPI application
+โ”‚ย  ย โ”œโ”€โ”€ api/ย  ย  ย  ย  ย  ย  ย  ย # REST API endpoints
+โ”‚ย  ย โ”œโ”€โ”€ core/ย  ย  ย  ย  ย  ย  ย  # Core business logic
+โ”‚ย  ย โ”œโ”€โ”€ models/ย  ย  ย  ย  ย  ย  # SQLAlchemy models
+โ”‚ย  ย โ””โ”€โ”€ services/ย  ย  ย  ย  ย  # AI, OCR, and storage services
+โ”œโ”€โ”€ frontend/ย  ย  ย  ย  ย  ย  ย  # Vanilla JS frontend
+โ”œโ”€โ”€ docker/ย  ย  ย  ย  ย  ย  ย  ย  # Docker configuration
+โ”œโ”€โ”€ tests/ย  ย  ย  ย  ย  ย  ย  ย  ย # Test suite
+โ””โ”€โ”€ docs/ย  ย  ย  ย  ย  ย  ย  ย  ย  # Documentation
+
+ +

Technology Stack

+ + +

๐Ÿ”ง Configuration

+

Environment Variables

+

Create a .env file in the root directory:

+
# Security - CHANGE IN PRODUCTION!
 SECRET_KEY=your-secret-key-here
 
 # Database
@@ -238,94 +244,92 @@ OPENAI_API_KEY=sk-...
 # Application Settings
 ENVIRONMENT=production
 LOG_LEVEL=INFO
-MAX_UPLOAD_SIZE=104857600  # 100MB
+MAX_UPLOAD_SIZE=104857600ย  # 100MB
 ALLOWED_EXTENSIONS=pdf,jpg,jpeg,png,txt,doc,docx
 
 # Storage
 STORAGE_TYPE=local
 STORAGE_PATH=/app/data/storage
-```
-
-## ๐Ÿ“š API Documentation
-
-### Interactive API Docs
-Once running, access the interactive API documentation at:
-- Swagger UI: `http://localhost:8000/docs`
-- ReDoc: `http://localhost:8000/redoc`
+
-### Quick API Examples +

๐Ÿ“š API Documentation

+

Interactive API Docs

+

Once running, access the interactive API documentation at:

+ -```python -import requests +

Quick API Examples

+
import requests
 
 # Base URL
 BASE_URL = "http://localhost:8000"
 
 # 1. Authentication
 response = requests.post(f"{BASE_URL}/api/auth/login", json={
-    "username": "admin",
-    "password": "your-password"
+ย  ย  "username": "admin",
+ย  ย  "password": "your-password"
 })
 session = requests.Session()
 session.cookies = response.cookies
 
 # 2. Upload Document
 with open("document.pdf", "rb") as f:
-    response = session.post(
-        f"{BASE_URL}/api/documents/upload",
-        files={"file": f},
-        data={"title": "Q4 Report", "tags": "finance,quarterly"}
-    )
-    document_id = response.json()["id"]
+ย  ย  response = session.post(
+ย  ย  ย  ย  f"{BASE_URL}/api/documents/upload",
+ย  ย  ย  ย  files={"file": f},
+ย  ย  ย  ย  data={"title": "Q4 Report", "tags": "finance,quarterly"}
+ย  ย  )
+ย  ย  document_id = response.json()["id"]
 
 # 3. Semantic Search
-response = session.get(f"{BASE_URL}/api/search/semantic", params={
-    "query": "What were the Q4 revenue numbers?",
-    "limit": 5
+response = requests.get(f"{BASE_URL}/api/search/semantic", params={
+ย  ย  "query": "What were the Q4 revenue numbers?",
+ย  ย  "limit": 5
 })
 results = response.json()
 
 # 4. Ask Questions
-response = session.post(f"{BASE_URL}/api/ai/ask", json={
-    "question": "Summarize the key findings from Q4 reports",
-    "document_ids": [document_id]
+response = requests.post(f"{BASE_URL}/api/ai/ask", json={
+ย  ย  "question": "Summarize the key findings from Q4 reports",
+ย  ย  "document_ids": [document_id]
 })
 answer = response.json()["answer"]
-```
-
-## ๐ŸŒŸ Why Open Source?
-
-Your document management system shouldn't be a black box. With DocumentManager you can:
-- **Audit the code** - Know exactly what happens to your documents
-- **Customize for your needs** - Modify anything to fit your workflow
-- **Self-host everything** - Your documents, your rules
-- **Contribute improvements** - Join the community making document management better
-
-No vendor lock-in. Complete transparency. Total control.
-
-## ๐Ÿš€ Roadmap
-
-The foundation is solid, but we're just getting started:
-- **Self-hosted AI models** - Run everything locally
-- **Mobile apps** - For on-the-go access and document scanning
-- **Workflow automation** - Documents that route themselves
-- **Advanced analytics** - Insights from your document repository
-- **Plugin system** - Custom integrations for your needs
-
-## ๐Ÿค Contributing
-
-We love contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
-
-1. Fork the repository
-2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
-3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
-4. Push to the branch (`git push origin feature/AmazingFeature`)
-5. Open a Pull Request
-
-### Development Setup
-
-```bash
-# Clone your fork
+
+ +

๐ŸŒŸ Why Open Source?

+

Your document management system shouldn't be a black box. With DocumentManager you can:

+ +

No vendor lock-in. Complete transparency. Total control.

+ +

๐Ÿš€ Roadmap

+

The foundation is solid, but we're just getting started:

+ + +

๐Ÿค Contributing

+

We love contributions! Please see our Contributing Guide for details.

+
    +
  1. Fork the repository
  2. +
  3. Create your feature branch (git checkout -b feature/AmazingFeature)
  4. +
  5. Commit your changes (git commit -m 'Add some AmazingFeature')
  6. +
  7. Push to the branch (git push origin feature/AmazingFeature)
  8. +
  9. Open a Pull Request
  10. +
+ +

Development Setup

+
# Clone your fork
 git clone https://github.com/JayRHa/Document-Manager.git
 cd Document-Manager
 
@@ -335,18 +339,14 @@ git checkout -b feature/your-feature
 # Install pre-commit hooks
 pip install pre-commit
 pre-commit install
-```
-
-## ๐Ÿ“„ License
+
-This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. - ---- +

๐Ÿ“„ License

+

This project is licensed under the MIT License - see the LICENSE file for details.

+
-Built with โค๏ธ by Jannik Reinhard and Fabian Peschke - -โญ Star the repo if you find it useful โ€” it really helps with motivation! - -โ˜• If you want to support the project, you can [buy us a coffee](https://www.buymeacoffee.com/your-link) +

Built with โค๏ธ by Jannik Reinhard and Fabian Peschke

+

โญ Star the repo if you find it useful โ€” it really helps with motivation!

+

โ˜• If you want to support the project, you can buy us a coffee