2025-06-24 19:56:56 +00:00
# System Overview
2026-01-14 17:59:04 +00:00
## DoczyAI Document Processing Platform
2025-06-24 19:56:56 +00:00
### Purpose and Domain
2026-02-19 20:22:59 +00:00
DoczyAI is a cloud-native document processing platform for multi-tenant PDF ingestion and processing. Organizations can upload and organize documents with folders and labels, and store structured field extraction results for downstream analysis.
2025-06-24 19:56:56 +00:00
### Core Business Capabilities
- **Multi-tenant Document Processing**: Isolated processing environments per client
2025-09-09 19:34:03 +00:00
- **Batch Document Processing**: ZIP archive uploads for processing multiple documents simultaneously
2025-06-24 19:56:56 +00:00
- **Automated Processing Pipeline**: Seamless flow from document upload to structured output
2026-01-14 17:59:04 +00:00
- **Version Management**: Complete versioning for configurations
2025-06-24 19:56:56 +00:00
- **Export and Integration**: Structured data export capabilities for downstream systems
2025-09-09 19:34:03 +00:00
- **Enhanced Observability**: Comprehensive metrics and monitoring with Prometheus integration
2025-06-24 19:56:56 +00:00
### Technology Stack
2025-09-09 19:34:03 +00:00
- **Language**: Go 1.24.3
2025-06-24 19:56:56 +00:00
- **Web Framework**: Echo v4 with OpenAPI code generation
- **Database**: PostgreSQL 17.2 with SQLC for type-safe queries
- **Messaging**: AWS SQS for event-driven microservices
- **Storage**: AWS S3 for document storage
- **Authentication**: AWS Cognito with JWT-based authorization
2025-09-09 19:34:03 +00:00
- **Monitoring**: Prometheus metrics with 12 standard metric types and OpenTelemetry tracing
- **Authorization**: Permit.io RBAC integration for fine-grained permissions
2025-06-24 19:56:56 +00:00
- **Container Platform**: Docker with multi-stage builds
## Architecture Overview
### System Architecture Pattern
The system follows an **event-driven microservices architecture ** with the following characteristics:
2026-02-19 20:22:59 +00:00
- **Active services**: 1 HTTP API + 5 active queue runners
- **Compatibility services**: Additional deprecated runners may remain in some deployments
2025-09-09 19:34:03 +00:00
- **Asynchronous communication**: SQS queues between services with batch processing capabilities
- **Background Task Framework**: Comprehensive background task execution with periodic scheduling
- **State management**: PostgreSQL as central data store with enhanced schema for batch operations
2025-06-24 19:56:56 +00:00
- **External service integration**: AWS managed services for cloud capabilities
### High-Level Component Diagram
[link to rendered version here ](https://mermaid.live/edit#pako:eNqFlGtr2zAUhv-K8KcOVtYtG0vHKCSyKYa2sSM3HTilKM5JYnCkTpe2Wel_ny4OlZ1C_MGWjp5z0asjv0YVX0L0C0VrQR83qBjPGTKP1AtvmEfJiwLBaINwUwNTch55xD63aXkHC5Qyg6xoBffvS6MsfcBXaXJTlGa4d24BYEs_OMhm2Uuq4JnuwkS5sZd_NYidGfxeiC8XGRcKDc-GZ0dDxrzSW5McZYJXIGXN1iirH6GpGYQ5SFJKxQUkTwaeasZAuEwmydd7dHp6geK0XPIqZXVv-Vuw7zj1KLEo2bGqiw5ClHgUWxQ3QFmX_R6y2LOFZQt46VXwI0QLh-bEC3ZYw88Azn0N-dTDXXB4VFsbfCM4q_9RVXOGCIin2ogc6opJWbnTP6zkPKxk1hY8AyFNrAP6_PhRp2wlqFRCV0oL-LCaeFyeZFyqtQCSX7nQMVV0QSV8Cqohg_JkdEfM1yHENAZddwkjsCNy4pBcgwYZAEXyp5iOcOEoe2SCVsqhdoISbzA7DXzw5PImLSbOBfO16TTuPEZabYyCdUV7Dtl0cl2axt6CAbR08DW3fsL0-ceC3foWtXfKG97vam_Bv-3cd9-4ZyCDviEnPUu7ozAeSbps3I2-vxb7Ke6kart7L26breuSTztT_8akV-GsZ2i1aJqHfd-4datw9BlFWxBbWi_Nv_I1Mlpv3V9zCSuqGxW9vf0HHgWInQ== )
``` mermaid
graph TB
subgraph "External Clients"
UI[Web Interface]
API_CLIENT[API Clients]
end
subgraph "API Gateway"
QAPI[queryAPI<br/>Port 8080]
end
subgraph "Document Processing Pipeline"
SE[storeEventRunner<br/>8081] --> DI[docInitRunner<br/>8082]
DI --> DS[docSyncRunner<br/>8083]
DS --> DC[docCleanRunner<br/>8084]
end
2026-01-14 17:59:04 +00:00
2025-06-24 19:56:56 +00:00
subgraph "Synchronization Services"
CS[clientSyncRunner<br/>8089]
end
subgraph "Infrastructure Services"
DB[(PostgreSQL<br/>Database)]
S3[(AWS S3<br/>Storage)]
SQS[AWS SQS<br/>Queues]
COGNITO[AWS Cognito<br/>Authentication]
PROM[Prometheus<br/>Monitoring]
end
UI --> QAPI
API_CLIENT --> QAPI
QAPI --> DB
QAPI --> S3
QAPI --> SQS
QAPI --> COGNITO
SE --> SQS
DI --> DB
DS --> DB
DC --> S3
2026-01-14 17:59:04 +00:00
2025-06-24 19:56:56 +00:00
CS --> SQS
All_Services --> PROM
```
## Deployment Architecture
### Infrastructure Requirements
- **Compute**: Container orchestration platform (Docker/Kubernetes)
- **Database**: PostgreSQL 17.2+ with connection pooling
2026-02-19 20:22:59 +00:00
- **AWS Services**: S3, SQS, Cognito services
2025-06-24 19:56:56 +00:00
- **Monitoring**: Prometheus-compatible metrics collection
- **Networking**: Load balancer for API endpoints
### Scalability Considerations
- **Horizontal Scaling**: All runners can be scaled independently based on queue depth
- **Database Scaling**: Connection pooling with configurable pool sizes
- **Storage Scaling**: S3 provides virtually unlimited document storage
- **Processing Scaling**: Auto-scaling based on SQS queue metrics
### Security Architecture
2025-09-09 19:34:03 +00:00
- **Authentication**: OAuth2 with AWS Cognito integration and MFA support
- **Authorization**: Enhanced RBAC with Permit.io integration and group-based permissions
- **Data Protection**: Encrypted storage (S3 server-side encryption) with folder path preservation
2025-06-24 19:56:56 +00:00
- **Network Security**: VPC isolation and security groups
2025-09-09 19:34:03 +00:00
- **API Security**: JWT validation and OpenAPI request validation with enhanced token handling
2025-06-24 19:56:56 +00:00
## Integration Points
### External System Dependencies
1. **AWS S3 ** : Document storage and retrieval
2. **AWS SQS ** : Inter-service messaging and event processing
2026-02-19 20:22:59 +00:00
3. **AWS Cognito ** : User authentication and session management
4. **PostgreSQL ** : Central data persistence
2025-06-24 19:56:56 +00:00
### API Integration
- **REST API**: OpenAPI 3.0.3 specification with Swagger UI
- **Authentication**: Bearer token or OAuth2 flows
2026-02-19 20:22:59 +00:00
- **Rate Limiting**: Dual-layer global and per-IP rate limiting (configurable via environment variables)
2025-06-24 19:56:56 +00:00
- **Content Types**: JSON for API, multipart/form-data for uploads
### Performance Characteristics
- **Throughput**: Designed for high-volume document processing
- **Latency**: Sub-second API response times for most operations
- **Availability**: Distributed architecture supports high availability
2026-02-19 20:22:59 +00:00
- **Durability**: S3 and RDS provide 99.999999999% (11 9's) and 99.95% durability respectively