diff --git a/README.md b/README.md index d6e729e..f45d89a 100644 --- a/README.md +++ b/README.md @@ -1,98 +1,90 @@ -# ๐ DocumentManager - +
+
+
+
+
+
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 +
+ Clean, intuitive dashboard showing document statistics and recent activities
+
+ Find documents by meaning, not just keywords - ask questions in natural language
+
+ Interactive AI chat for document analysis and knowledge extraction
+
+ Drag-and-drop interface with automatic text extraction and AI tagging
+
+ AI auto-generates correspondents, document types, and tags - fully customizable with color coding
+
+ Built-in document viewer with search highlighting and annotations
+
+ Enterprise-grade user and permission management
+
+ Easy configuration of AI providers and system settings
The beauty of open source? You can have this running on your machine right now:
+# 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
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):
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
+
+ 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
+
+ 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 .
+
+ 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.
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
+# 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!
+
+
+http://localhost:8000DocumentManager/
+โโโ 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
+
+
+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
+Once running, access the interactive API documentation at:
+http://localhost:8000/docshttp://localhost:8000/redocimport 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
+
+
+Your document management system shouldn't be a black box. With DocumentManager you can:
+No vendor lock-in. Complete transparency. Total control.
+ +The foundation is solid, but we're just getting started:
+We love contributions! Please see our Contributing Guide for details.
+git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)# 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.
-
----
+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