A web-based tool for reviewing extracted field slip data from NEMF 2025 photos.
- User Guide - Comprehensive guide for reviewers
- Quick Reference - Cheat sheet for experienced users
- README (this file) - Technical documentation for developers/admins
- Multi-user support with HTTP Basic Auth
- Image claiming/locking to prevent conflicts
- Autocomplete for MO locations and names
- Link related images (e.g., closeups to main shots)
- Mark images as "Already on MO" with ID verification
- Integration with MO field slip pages
# Install dependencies
pip install -r requirements.txt
# Create users file
cp users.json.example users.json
# Edit users.json with real credentials
# Run prepare script (requires MO database access)
python prepare_review_data.py --db
# Start server
python -m app.server --data review_data.json --users users.jsonSee scripts/deploy.sh for Ubuntu server deployment.
- Create DigitalOcean droplet (Ubuntu 24.04)
- Upload code:
rsync -avz . user@server:/var/www/nemf-review/ - Upload data files to
/var/www/nemf-review/data/ - Upload images to
/var/www/nemf-review/data/images/ - Run
scripts/deploy.shon server - Configure nginx and systemd per script output
review_data.json- Main review dataall_names.json- MO names for autocompleteall_locations.json- MO locations for autocompleteusers.json- User credentialsimages/- Photo directory
| Endpoint | Method | Description |
|---|---|---|
/api/whoami |
GET | Current user info |
/api/status |
GET | Review progress |
/api/images |
GET | List all images |
/api/image/<filename> |
GET | Get image details (claims it) |
/api/image/<filename>/review |
POST | Submit review |
/api/image/<filename>/heartbeat |
POST | Refresh claim |
/api/image/<filename>/release |
POST | Release claim |
/api/link/<filename> |
POST | Link two images |
/api/unlink/<filename> |
POST | Unlink two images |
/api/lookup/location |
GET | Location autocomplete |
/api/lookup/name |
GET | Name autocomplete |
/api/settings |
GET/POST | User settings |
Copyright 2025 Mushroom Observer. All rights reserved.