Hoghoghi / README.md
Really-amin's picture
Update README.md
49826c6 verified
|
raw
history blame
10.9 kB
---
sdk: docker
emoji: πŸ‘€
colorFrom: yellow
colorTo: red
pinned: true
---
# πŸ“Š Legal Dashboard - داشبورد Ψ­Ω‚ΩˆΩ‚ΫŒ
[![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://python.org)
[![FastAPI](https://img.shields.io/badge/FastAPI-Latest-green.svg)](https://fastapi.tiangolo.com)
[![Gradio](https://img.shields.io/badge/Gradio-Latest-orange.svg)](https://gradio.app)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
A comprehensive legal document management and analysis system built with FastAPI and Gradio, optimized for multiple deployment environments including Hugging Face Spaces.
## 🌟 Features
- **πŸ“„ Document Management**: Upload, process, and manage legal documents (PDF, DOCX, DOC, TXT)
- **πŸ€– AI-Powered Analysis**: Extract key information using advanced NLP models
- **πŸ” Secure Authentication**: JWT-based authentication with role management
- **πŸ“Š Analytics Dashboard**: Real-time analytics and document insights
- **🌐 Web Scraping**: Extract content from legal websites
- **πŸ” Smart Search**: Advanced search capabilities across documents
- **πŸ“± Multi-Interface**: Web dashboard + Gradio interface for HF Spaces
- **🌍 Multi-Language**: Persian/Farsi and English support
- **☁️ Multi-Platform**: Docker, HF Spaces, Local deployment
## πŸš€ Quick Start
### Option 1: Hugging Face Spaces (Recommended for Demo)
1. **Fork this Space** or create a new one
2. **Upload all files** to your space
3. **Set environment variables** in Space settings:
```bash
JWT_SECRET_KEY=your-super-secret-key-here
DATABASE_DIR=/tmp/legal_dashboard/data
LOG_LEVEL=INFO
```
4. **Launch the space** - it will automatically start
**Demo Credentials:**
- Username: `admin`
- Password: `admin123`
### Option 2: Docker Deployment
```bash
# Clone repository
git clone <your-repo-url>
cd legal-dashboard
# Build and run
docker-compose up --build
# Or with Docker only
docker build -t legal-dashboard .
docker run -p 8000:8000 legal-dashboard
```
### Option 3: Local Development
```bash
# Install dependencies
pip install -r requirements.txt
# Setup environment
cp .env.example .env
# Edit .env with your settings
# Run application
python run.py
# Or specific interfaces:
python app.py # Gradio interface
uvicorn app.main:app # FastAPI only
```
## πŸ“ Project Structure
```
legal-dashboard/
β”œβ”€β”€ πŸš€ Deployment & Config
β”‚ β”œβ”€β”€ run.py # Universal runner (All environments)
β”‚ β”œβ”€β”€ config.py # Configuration management
β”‚ β”œβ”€β”€ startup_hf.py # HF Spaces startup
β”‚ β”œβ”€β”€ app.py # Gradio interface
β”‚ β”œβ”€β”€ Dockerfile # Docker configuration
β”‚ β”œβ”€β”€ docker-compose.yml # Docker Compose
β”‚ β”œβ”€β”€ requirements.txt # Dependencies
β”‚ └── .env # Environment variables
β”‚
β”œβ”€β”€ πŸ—οΈ Backend (FastAPI)
β”‚ β”œβ”€β”€ app/
β”‚ β”‚ β”œβ”€β”€ main.py # FastAPI application
β”‚ β”‚ β”œβ”€β”€ api/ # API endpoints
β”‚ β”‚ β”‚ β”œβ”€β”€ auth.py # Authentication
β”‚ β”‚ β”‚ β”œβ”€β”€ documents.py # Document management
β”‚ β”‚ β”‚ β”œβ”€β”€ analytics.py # Analytics
β”‚ β”‚ β”‚ β”œβ”€β”€ scraping.py # Web scraping
β”‚ β”‚ β”‚ └── ...
β”‚ β”‚ β”œβ”€β”€ services/ # Business logic
β”‚ β”‚ β”‚ β”œβ”€β”€ ai_service.py # AI/ML services
β”‚ β”‚ β”‚ β”œβ”€β”€ database_service.py
β”‚ β”‚ β”‚ β”œβ”€β”€ ocr_service.py # OCR processing
β”‚ β”‚ β”‚ └── ...
β”‚ β”‚ └── models/ # Data models
β”‚
β”œβ”€β”€ 🎨 Frontend
β”‚ β”œβ”€β”€ index.html # Main dashboard
β”‚ β”œβ”€β”€ documents.html # Document management
β”‚ β”œβ”€β”€ analytics.html # Analytics page
β”‚ β”œβ”€β”€ upload.html # File upload
β”‚ β”œβ”€β”€ js/ # JavaScript modules
β”‚ └── ...
β”‚
└── πŸ§ͺ Testing & Docs
β”œβ”€β”€ tests/ # Test suites
β”œβ”€β”€ docs/ # Documentation
└── README.md # This file
```
## βš™οΈ Configuration
### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `JWT_SECRET_KEY` | `auto-generated` | JWT signing key |
| `DATABASE_DIR` | `/app/data` | Database directory |
| `LOG_LEVEL` | `INFO` | Logging level |
| `ENVIRONMENT` | `production` | Environment type |
| `HF_HOME` | `/app/cache` | ML models cache |
| `PORT` | `8000/7860` | Server port |
| `WORKERS` | `1/4` | Worker processes |
### Multi-Environment Support
The system automatically detects and optimizes for:
- **πŸ€— Hugging Face Spaces**: Gradio interface, optimized resources
- **🐳 Docker**: Full FastAPI with all features
- **πŸ’» Local**: Development mode with hot reload
## πŸ”§ Advanced Configuration
### Custom Model Configuration
```python
# config.py - AI Configuration
ai_config = {
"model_name": "microsoft/trocr-small-stage1", # HF Spaces
"device": "cpu", # Force CPU for compatibility
"max_workers": 1, # Optimize for environment
"batch_size": 1, # Memory optimization
}
```
### Database Optimization
```python
# Automatic fallback paths for different environments
database_paths = [
"/app/data/legal_documents.db", # Docker
"/tmp/legal_dashboard/data/legal.db", # HF Spaces
"./data/legal_documents.db", # Local
":memory:" # Final fallback
]
```
## πŸ› Troubleshooting
### Common Issues & Solutions
1. **Permission Denied Error**
```bash
PermissionError: [Errno 13] Permission denied: '/app/database'
```
**Solution**: System uses automatic fallback directories
```bash
# Check logs for actual directory used:
grep "πŸ“.*directory" logs/legal_dashboard.log
```
2. **bcrypt Version Error**
```bash
(trapped) error reading bcrypt version
```
**Solution**: Fixed with bcrypt==4.0.1 in requirements.txt
3. **Redis Connection Failed**
```bash
Redis connection failed: Error 111 connecting to localhost:6379
```
**Solution**: System automatically falls back to in-memory storage
4. **Model Loading Issues**
```bash
OutOfMemoryError or CUDA errors
```
**Solution**: System forces CPU mode and optimizes model selection
5. **Port Already in Use**
```bash
[Errno 48] Address already in use
```
**Solution**: System automatically tries alternative ports
### Debug Mode
```bash
# Enable debug logging
export LOG_LEVEL=DEBUG
python run.py
# Or check specific components
python -c "from config import config; print(config.get_summary())"
```
### Health Checks
```bash
# Check system health
curl http://localhost:8000/api/health
# Expected response:
{
"status": "healthy",
"services": {
"database": "healthy",
"ocr": "healthy",
"ai": "healthy"
}
}
```
## πŸ”’ Security
### Authentication Flow
1. **Registration**: Create account with email/password
2. **Login**: JWT access token (30 min) + refresh token (7 days)
3. **Authorization**: Role-based access control (admin/user)
4. **Session Management**: Secure token storage and refresh
### Security Features
- πŸ” bcrypt password hashing
- 🎫 JWT token authentication
- πŸ›‘οΈ CORS protection
- πŸ“ Audit logging
- πŸ”’ Role-based permissions
- 🚫 Rate limiting (planned)
### Default Credentials
⚠️ **Change immediately in production:**
- Username: `admin`
- Password: `admin123`
## πŸ“Š API Documentation
### Main Endpoints
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/api/auth/login` | POST | User authentication |
| `/api/auth/register` | POST | User registration |
| `/api/documents` | GET/POST | Document management |
| `/api/ocr/process` | POST | OCR processing |
| `/api/analytics/overview` | GET | Analytics data |
| `/api/scraping/scrape` | POST | Web scraping |
| `/api/health` | GET | System health |
### Interactive Documentation
- **Swagger UI**: `/api/docs`
- **ReDoc**: `/api/redoc`
- **OpenAPI JSON**: `/api/openapi.json`
## πŸš€ Deployment Guide
### Hugging Face Spaces
1. **Create Space**:
```bash
# Go to https://huggingface.co/spaces
# Create new Space with Gradio SDK
```
2. **Upload Files**:
```bash
git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE
cp -r legal-dashboard/* YOUR_SPACE/
cd YOUR_SPACE
git add .
git commit -m "Initial deployment"
git push
```
3. **Configure Space**:
- Set `JWT_SECRET_KEY` in Space settings
- Optional: Set custom domain
### Docker Production
```bash
# Production docker-compose
version: "3.8"
services:
legal-dashboard:
build: .
ports:
- "80:8000"
environment:
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- ENVIRONMENT=production
volumes:
- ./data:/app/data
- ./logs:/app/logs
```
### Kubernetes (Advanced)
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: legal-dashboard
spec:
replicas: 3
selector:
matchLabels:
app: legal-dashboard
template:
spec:
containers:
- name: legal-dashboard
image: legal-dashboard:latest
ports:
- containerPort: 8000
env:
- name: JWT_SECRET_KEY
valueFrom:
secretKeyRef:
name: legal-dashboard-secrets
key: jwt-secret
```
## 🀝 Contributing
1. **Fork the repository**
2. **Create feature branch**: `git checkout -b feature/amazing-feature`
3. **Make changes** and test thoroughly
4. **Run tests**: `python -m pytest tests/`
5. **Commit changes**: `git commit -m 'Add amazing feature'`
6. **Push to branch**: `git push origin feature/amazing-feature`
7. **Create Pull Request**
### Development Setup
```bash
# Clone and setup
git clone <repo-url>
cd legal-dashboard
# Install development dependencies
pip install -r requirements.txt
pip install pytest black isort mypy
# Setup pre-commit hooks
pre-commit install
# Run tests
python -m pytest tests/ -v
# Code formatting
black .
isort .
```
## πŸ“„ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## πŸ™ Acknowledgments
- **FastAPI**: Modern, fast web framework
- **Gradio**: Easy-to-use ML app interface
- **Hugging Face**: Model hosting and Spaces platform
- **Transformers**: State-of-the-art NLP models
- **Chart.js**: Beautiful charts and visualizations
## πŸ“ž Support
- **Issues**: [GitHub Issues](../../issues)
- **Discussions**: [GitHub Discussions](../../discussions)
- **Email**: Contact maintainers
- **Documentation**: [Full Docs](./docs/)
---
### 🌐 Live Demo
Try the live demo: [Your HF Space URL]
**Made with ❀️ for the legal community**