Developing a Mobile Application for Document Approval
Invoice for supplier sits in approval chain three days — manager on business trip, doesn't check email. Supplier charged penalties. Mobile app for document approval — it's not "convenient interface", it's accelerating company cash flow.
Push Notifications as Workflow Engine
Document enters approval chain → each approver gets push the moment queue reaches them. Not email after an hour, not morning message — immediate push with priority: high.
Actions directly from notification (iOS Notification Actions / Android Notification Actions):
- "Approve" — without opening app, with biometric signature
- "Reject" — opens input field for reason
- "Open" — full document view
On iOS this is UNNotificationAction with UNNotificationActionOptions.authenticationRequired — system requests Face ID/Touch ID before "Approve" action. Legally not qualified electronic signature, but sufficient for internal document workflow.
When wait time expires (configurable: 4 hours, 8 hours, 1 business day) — push reminder to approver and notification to initiator "Awaiting approval for >8 hours".
Escalation: if document not approved for N hours — automatically notify approver's manager. Implemented via Bull Queue with delayed jobs, canceled when user takes action.
Approval Route Types
Sequential: lawyer → finance director → CEO. Each next gets notification only after previous approves.
Parallel: accountant + lawyer simultaneously, then director. Push all parallel step participants at once, next step starts when all approved.
Conditional: if amount >1M ₽ — add board director approval step. Condition logic in route config (JSON rules), not code — so business can change routes without deployment.
Document Viewing in App
PDF rendering on mobile — specific task. iOS has native PDFKit (works great). Android — PdfRenderer (basic) or third-party AndroidPdfViewer.
On Flutter cross-platform: flutter_pdfview or syncfusion_flutter_pdfviewer. Latter paid but supports annotations — needed for notes on rejection.
Documents stored in S3, presigned links with 30-minute TTL. Document versioning — S3 Versioning or manual version in DB. On rejection and resubmission create new version, keep history.
Documents >10 MB — streaming render, don't load before show. syncfusion_flutter_pdfviewer supports this via URL.
Electronic Signature
For legally significant workflow need QES (qualified electronic signature). Separate integration with certification centers or SBIS/Diadoc.
Simple electronic signature (login + action in app + timestamp + IP) sufficient for internal approval and meets requirements with party consent.
Integrations
1C:Document Management — SOAP API or direct DB connection. SAP, SharePoint, Bitrix24 — REST API. Integration lets initiate from familiar corporate tool, mobile app only for notifications and quick actions.
Timeline
| Scale | Timeline |
|---|---|
| MVP: approval, push, PDF view | 8–10 weeks |
| + Conditional routes, escalation, history | 14–18 weeks |
| + 1C/SAP integration, QES | +6–10 weeks |







