321 lines
8.9 KiB
Markdown
321 lines
8.9 KiB
Markdown
# Application Workflows & Processes Documentation
|
|
|
|
## Wizard Workflow Overview
|
|
|
|
The imgPub application follows a linear wizard-based workflow with 7 main steps. Each step builds upon the previous one, maintaining state throughout the entire process.
|
|
|
|
## Complete User Journey
|
|
|
|
### 1. Authentication Flow
|
|
```
|
|
User Interaction:
|
|
├── Login Screen → Choose Google OAuth or Email/Password
|
|
├── Google OAuth → Redirect to Google → Return with token
|
|
├── Email Login → Input credentials → Validate via Supabase
|
|
└── Registration → Create account → Store user data
|
|
|
|
Technical Process:
|
|
├── Supabase Auth handles authentication
|
|
├── JWT tokens stored in localStorage
|
|
├── User session maintained across app
|
|
└── Token sent with API requests for validation
|
|
```
|
|
|
|
### 2. Upload Step (Step 1)
|
|
```
|
|
User Interaction:
|
|
├── Drag & Drop files into upload zone
|
|
├── Click to browse file selection
|
|
├── Multiple file selection supported
|
|
└── File type validation (PNG, JPG, JPEG)
|
|
|
|
Technical Process:
|
|
├── Files stored as File objects in state
|
|
├── Preview URLs generated using URL.createObjectURL()
|
|
├── File validation for type and size
|
|
├── State update in useAppStore.uploadedImages
|
|
└── Navigation enabled to crop step
|
|
```
|
|
|
|
### 3. Crop Step (Step 2)
|
|
```
|
|
User Interaction:
|
|
├── Select reference image from uploaded files
|
|
├── Visual crop selection with drag handles
|
|
├── Manual offset inputs (top, bottom, left, right)
|
|
├── Zoom controls for precision
|
|
└── Preview of crop area
|
|
|
|
Technical Process:
|
|
├── Canvas-based image rendering
|
|
├── Interactive selection with mouse events
|
|
├── Percentage-based crop calculations
|
|
├── Crop configuration saved to state
|
|
└── Reference image tracking for batch processing
|
|
```
|
|
|
|
### 4. Bulk Crop Step (Step 3)
|
|
```
|
|
User Interaction:
|
|
├── Apply crop configuration to all images
|
|
├── Progress indicator for processing
|
|
├── Preview of cropped images
|
|
├── Individual crop adjustments if needed
|
|
└── Continue to OCR step
|
|
|
|
Technical Process:
|
|
├── Sequential canvas operations for each image
|
|
├── Blob generation from cropped canvas data
|
|
├── New URL creation for cropped images
|
|
├── State update with cropped image array
|
|
└── Memory management for old blob URLs
|
|
```
|
|
|
|
### 5. OCR Step (Step 4)
|
|
```
|
|
User Interaction:
|
|
├── Start OCR processing button
|
|
├── Progress indicator for each image
|
|
├── Real-time text extraction display
|
|
├── Error handling for failed processing
|
|
└── Continue to translation step
|
|
|
|
Technical Process:
|
|
├── Tesseract.js worker initialization
|
|
├── Sequential processing of cropped images
|
|
├── Turkish language detection (primary)
|
|
├── English fallback language support
|
|
├── Text cleaning and concatenation
|
|
├── Progress tracking and state updates
|
|
└── Complete OCR text stored in state
|
|
```
|
|
|
|
### 6. Translation Step (Step 5)
|
|
```
|
|
User Interaction:
|
|
├── Skip translation (optional step)
|
|
├── Language selection (English as target)
|
|
├── Start translation button
|
|
├── Progress indicator for translation
|
|
└── Continue to EPUB step
|
|
|
|
Technical Process:
|
|
├── GLM-4.6 API integration
|
|
├── Chunk-based text processing for large content
|
|
├── Progress tracking and status updates
|
|
├── Error handling for API failures
|
|
├── Translated text storage in state
|
|
└── Fallback to original text on translation failure
|
|
```
|
|
|
|
### 7. EPUB Generation Step (Step 6)
|
|
```
|
|
User Interaction:
|
|
├── Book title input
|
|
├── Author information input
|
|
├── Cover image selection (optional)
|
|
├── Metadata configuration
|
|
└── Generate EPUB button
|
|
|
|
Technical Process:
|
|
├── Metadata validation and storage
|
|
├── Cover image cropping and processing
|
|
├── API call to backend EPUB service
|
|
├── Base64 EPUB data reception
|
|
├── Blob creation and URL generation
|
|
└── EPUB data stored in application state
|
|
```
|
|
|
|
### 8. Download Step (Step 7)
|
|
```
|
|
User Interaction:
|
|
├── EPUB metadata display
|
|
├── Preview download information
|
|
├── Download EPUB button
|
|
├── Start new process option
|
|
└── Navigation to reset workflow
|
|
|
|
Technical Process:
|
|
├── EPUB blob retrieval from state
|
|
├── File download using HTML5 download attribute
|
|
├── Workflow reset functionality
|
|
├── Memory cleanup (blob URL revocation)
|
|
└── Return to initial upload step
|
|
```
|
|
|
|
## State Management Flow
|
|
|
|
### Workflow State Transitions
|
|
```javascript
|
|
Initial State → Upload → Crop → Bulk Crop → OCR → Translation → EPUB → Download
|
|
|
|
Reset Points:
|
|
├── resetFromStep('upload'): Clears everything after upload
|
|
├── resetFromStep('crop'): Clears crops, OCR, EPUB data
|
|
├── resetFromStep('ocr'): Clears OCR and EPUB data
|
|
└── resetFromStep('epub'): Clears only EPUB data
|
|
```
|
|
|
|
### Memory Management
|
|
```
|
|
Automatic Cleanup:
|
|
├── Blob URL revocation on state updates
|
|
├── Canvas cleanup after image processing
|
|
├── Worker cleanup after OCR completion
|
|
├── Component unmount cleanup
|
|
└── Navigation guard cleanup
|
|
|
|
Manual Cleanup:
|
|
├── Reset workflow buttons
|
|
├── Navigation step changes
|
|
├── Authentication state changes
|
|
└── Error recovery actions
|
|
```
|
|
|
|
## Data Processing Pipelines
|
|
|
|
### Image Processing Pipeline
|
|
```
|
|
Upload Files → File Validation → Preview Generation →
|
|
Reference Selection → Crop Configuration → Canvas Processing →
|
|
Blob Generation → URL Creation → Storage in State
|
|
```
|
|
|
|
### OCR Processing Pipeline
|
|
```
|
|
Cropped Images → Worker Initialization → Sequential Processing →
|
|
Text Extraction → Language Detection → Text Cleaning →
|
|
Concatenation → State Storage
|
|
```
|
|
|
|
### EPUB Generation Pipeline
|
|
```
|
|
OCR Text → Translation (optional) → Metadata Assembly →
|
|
API Request → Backend Processing → Base64 Response →
|
|
Blob Creation → Download Preparation
|
|
```
|
|
|
|
## Error Handling & Recovery
|
|
|
|
### Common Error Scenarios
|
|
```
|
|
File Upload Errors:
|
|
├── Invalid file types
|
|
├── File size exceeded
|
|
├── Multiple file limits
|
|
└── Browser compatibility issues
|
|
|
|
OCR Processing Errors:
|
|
├── Tesseract worker failures
|
|
├── Language detection issues
|
|
├── Memory constraints
|
|
└── Image quality problems
|
|
|
|
Translation Errors:
|
|
├── API unavailability
|
|
├── Rate limiting
|
|
├── Network connectivity
|
|
└── Text size limitations
|
|
|
|
EPUB Generation Errors:
|
|
├── Backend service unavailability
|
|
├── Invalid metadata
|
|
├── File generation failures
|
|
└── Download preparation issues
|
|
```
|
|
|
|
### Recovery Strategies
|
|
```
|
|
User-Friendly Recovery:
|
|
├── Retry buttons for failed operations
|
|
├── Step-wise reset options
|
|
├── Clear error messaging
|
|
├── Alternative action suggestions
|
|
└── State preservation during recovery
|
|
|
|
Technical Recovery:
|
|
├── Automatic retry mechanisms
|
|
├── Fallback language support
|
|
├── Service health checks
|
|
├── Graceful degradation
|
|
└── Error boundary implementation
|
|
```
|
|
|
|
## Performance Considerations
|
|
|
|
### Sequential Processing Benefits
|
|
```
|
|
Memory Efficiency:
|
|
├── One image processed at a time
|
|
├── Predictable memory usage
|
|
├── Automatic cleanup between operations
|
|
└── Browser stability maintenance
|
|
|
|
User Experience:
|
|
├── Clear progress indication
|
|
├── Cancellable operations
|
|
├── Real-time feedback
|
|
└── Estimated completion times
|
|
```
|
|
|
|
### Resource Management
|
|
```
|
|
Optimization Strategies:
|
|
├── Worker reuse for OCR processing
|
|
├── Canvas pool for image operations
|
|
├── Lazy loading of heavy assets
|
|
├── Debounced user interactions
|
|
└── Efficient state updates
|
|
|
|
Memory Patterns:
|
|
├── Minimal object creation
|
|
├── Reusable data structures
|
|
├── Blob lifecycle management
|
|
├── URL object cleanup
|
|
└── Component unmount handling
|
|
```
|
|
|
|
## Integration Points
|
|
|
|
### External Service Dependencies
|
|
```
|
|
Supabase Authentication:
|
|
├── User session management
|
|
├── OAuth integration
|
|
├── Token validation
|
|
└── User data persistence
|
|
|
|
Tesseract.js OCR Engine:
|
|
├── Client-side processing
|
|
├── Local asset loading
|
|
├── Worker management
|
|
└── Text extraction
|
|
|
|
GLM-4.6 Translation API:
|
|
├── RESTful API integration
|
|
├── Authentication headers
|
|
├── Error handling
|
|
└── Response processing
|
|
|
|
Backend EPUB Service:
|
|
├── Express server communication
|
|
├── Base64 data handling
|
|
├── File generation
|
|
└── Response streaming
|
|
```
|
|
|
|
### Browser Compatibility
|
|
```
|
|
Modern Browser Requirements:
|
|
├── ES6+ JavaScript support
|
|
├── Canvas API compatibility
|
|
├── File API support
|
|
├── Fetch API availability
|
|
└── WebAssembly support (for Tesseract)
|
|
|
|
Progressive Enhancement:
|
|
├── Feature detection
|
|
├── Fallback mechanisms
|
|
├── Graceful degradation
|
|
├── Error boundary protection
|
|
└── Cross-browser testing |