5105b42c46972cba6b652883756434129ba9b39b
iOS Safari evicts Blob file-backed data from IndexedDB under memory pressure, causing upload POSTs to throw 'Load failed' without ever reaching the server. Two-pronged fix: 1. Store photos as ArrayBuffer (inline bytes) instead of Blob (file reference) in IndexedDB — ArrayBuffers are not subject to eviction 2. Request navigator.storage.persist() to signal the browser not to evict our storage under pressure Also adds Storage.getBlob() helper for converting stored ArrayBuffer back to Blob at upload/display time, with backward compat for any existing Blob-stored photos. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
NextSnap
Offline-first photo capture web app for Nextcloud.
Quick Start
Development
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python run.py
Visit http://localhost:5000/api/health to verify the server is running.
Docker Deployment
export SECRET_KEY="your-secret-key-here"
export NEXTCLOUD_URL="https://your-nextcloud-instance.com"
docker-compose up -d
Architecture
- Backend: Flask + Gunicorn
- Frontend: Vanilla JavaScript (no framework)
- Offline Storage: IndexedDB via Dexie.js
- Service Worker: For offline-first capabilities
- Nextcloud Integration: WebDAV API for file operations
Build Order
See nextsnap.md for the complete specification and phased implementation plan.
Description
Languages
JavaScript
42.2%
HTML
29.1%
Python
21.6%
CSS
5.6%
Makefile
0.6%
Other
0.9%