e37cf878d0c7af2c7b8536287aa8f29aceabb3b6
The previous approach used setTimeout to re-trigger the file input after each capture, which iOS Safari blocks because it loses the user gesture context. Now uses getUserMedia for a fullscreen camera viewfinder that stays open between shots. Shutter button captures frames from the video stream, saves to IndexedDB, and the camera remains open until the user taps close. Includes flash feedback, session counter, and camera flip. Falls back to single-shot file input if getUserMedia is unavailable. 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%