AI-powered mobile document scanner that captures physical documents and converts them to structured digital formats.
- π· Smart Document Capture - Camera-based scanning with auto-crop and perspective correction
- π OCR Engine - Extract text from printed and handwritten documents
- π Table Detection - Automatically detect and extract tables
- π Multiple Export Formats - Export to PDF, Excel, CSV, JSON, Markdown
- π Offline Support - Queue uploads when offline, sync when connected
- π Secure - End-to-end encryption, data isolation, GDPR compliance
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Mobile App (Expo) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββββββββββββββ β
β β Camera β β Image β β Upload β β Offline Queue β β
β β Capture ββ β Process ββ β Manager ββ β (Background Sync) β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Backend API (Express) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββββββββββββββ β
β β Auth β β Upload β β Jobs β β Rate Limiting β β
β β JWT β β Handler β β Queue β β Validation β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββ ββββββββββββ ββββββββββββββββ
β Postgres β β Redis β β MinIO β
β DB β β Queue β β Storage β
ββββββββββββ ββββββββββββ ββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI Workers (Python/FastAPI) β
β ββββββββββββββ βββββββ ββββββββββ ββββββββββ ββββββββββββββ
β β Preprocess ββ β OCR ββ β Layout ββ β Tables ββ β Structure ββ
β β Image β β β β Detect β β Extractβ β Data ββ
β ββββββββββββββ βββββββ ββββββββββ ββββββββββ ββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Expo SDK 54 - Managed workflow
- React Native - Cross-platform UI
- TypeScript - Type safety
- React Navigation - Native stack navigation
- Express.js - HTTP server
- Prisma - PostgreSQL ORM
- BullMQ - Job queue
- Jose - JWT authentication
- Zod - Request validation
- FastAPI - Python API server
- OpenCV - Image processing
- Tesseract/EasyOCR - Text recognition
- LayoutParser - Document layout detection
- img2table - Table extraction
- PostgreSQL - Primary database
- Redis - Job queue & caching
- MinIO - S3-compatible object storage
- Docker - Containerization
- Node.js 20+
- Python 3.11+
- Docker & Docker Compose
- PostgreSQL 15+
- Redis 7+
# Clone the repository
git clone https://github.com/yourusername/structa-ai.git
cd structa-ai
# Start all services
docker-compose up -d
# The services will be available at:
# - Mobile Metro: http://localhost:8081
# - Backend API: http://localhost:3000
# - AI Workers: http://localhost:8000
# - MinIO Console: http://localhost:9001# Install dependencies
npm install
# Start Expo development server
npx expo startcd backend
# Install dependencies
npm install
# Setup environment
cp .env.example .env
# Generate Prisma client
npm run db:generate
# Run migrations
npm run db:migrate
# Start development server
npm run devcd ai-workers
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Setup environment
cp .env.example .env
# Start server
python main.pystructa-ai/
βββ app/ # Mobile app screens
β βββ screens/ # Screen components
β βββ components/ # Reusable UI components
βββ domain/ # Business logic
β βββ models/ # Data models
β βββ workflows/ # State machines
β βββ services/ # Domain services
βββ infra/ # Infrastructure layer
β βββ camera/ # Camera service
β βββ image/ # Image processing
β βββ upload/ # Upload management
β βββ api/ # API client
β βββ network/ # Network state
βββ backend/ # Node.js backend
β βββ src/
β β βββ api/ # Express routes
β β βββ config/ # Configuration
β β βββ services/ # Business services
β βββ prisma/ # Database schema
βββ ai-workers/ # Python AI processing
β βββ processors/ # AI processors
β βββ exporters/ # Export services
βββ docker-compose.yml # Docker orchestration
POST /api/auth/register- Create accountPOST /api/auth/login- LoginPOST /api/auth/logout- LogoutGET /api/auth/profile- Get profile
GET /api/documents- List documentsPOST /api/documents- Create documentGET /api/documents/:id- Get documentDELETE /api/documents/:id- Delete documentGET /api/documents/:id/status- Processing statusPOST /api/documents/:id/process- Start processing
POST /api/uploads/:documentId/pages- Upload pageDELETE /api/uploads/:documentId/pages/:pageId- Delete pagePUT /api/uploads/:documentId/pages/reorder- Reorder pages
DATABASE_URL=postgresql://user:pass@localhost:5432/structa
REDIS_URL=redis://localhost:6379
JWT_SECRET=your-secret-key
STORAGE_ENDPOINT=http://localhost:9000
STORAGE_BUCKET=structa-documentsAI_PORT=8000
AI_REDIS_URL=redis://localhost:6379
AI_OCR_ENGINE=tesseract
AI_STORAGE_TYPE=s3- β Phase 1: Foundation (Expo, TypeScript, Models)
- β Phase 2: Mobile Runtime (Permissions, Storage, Background)
- β Phase 3: Image Quality (Preprocessing, Multi-page)
- β Phase 4: Network & Transfer (Chunked Upload, Offline Queue)
- β Phase 5: Backend API (Express, Prisma, BullMQ)
- β Phase 6: AI Pipeline (OCR, Layout, Tables)
- β Phase 7: Data Structuring (Block Segmentation, Validation)
- β Phase 8: Export (PDF, Excel, CSV, JSON)
- β Phase 9: Security (Encryption, Data Isolation, Audit)
- β Phase 10: Scalability (Metrics, Health, Feature Flags)
MIT License - see LICENSE for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request