How vitordan/herbariumback works
This is a Flask API for managing herbarium specimen (“exsiccate”) records, including taxonomy, collection locations, collectors, and associated images, plus user signup and login. The primary workflow accepts specimen data and uploaded images, dispatches record and image-metadata work to Celery tasks, stores structured records in the SQLAlchemy database and image files under the configured upload folder, and returns serialized results. The graph includes the API setup and authentication branches. Source excerpts show task dispatch and database operations; image-file persistence is visible, but broader storage and deployment details are not established.
Main entry points: tasks.py Record tasks · urls.py Specimen routes · factory.py App factory · account.py Account routes
Components 17
API and routing
- App factory
app/api/factory.py - Specimen routes
app/api/exsiccate/urls.py - App configuration
app/config.py
Specimen records
- Record tasks
app/api/exsiccate/tasks.py - Serializers
app/api/serializers.py - Domain models
app/api/models.py
User identity
- Account routes
app/api/users/account.py - Token auth
app/api/auth.py - User tasks
app/api/users/tasks.py
Async and images
- Image access
app/api/images/path.py - Celery setup
app/api/__init__.py - Task configuration
app/celery_config.py - Task context
app/api/cutils.py - Task broker
Persistence
- SQL database
app/api/models.py - Image files
app/api/exsiccate/tasks.py
Other components
- API client
Connections 22
- API client → Specimen routes: submits requests
- API client → Account routes: uses account API
- App factory → Specimen routes: registers route
app/api/factory.py - App factory → Account routes: loads routes
app/api/factory.py - App factory → App configuration: loads settings
app/api/factory.py - App factory → Task context: initializes Celery
app/api/factory.py - Specimen routes → Record tasks: dispatches tasks
app/api/exsiccate/urls.py - Specimen routes → Serializers: parses and formats
app/api/exsiccate/urls.py - Record tasks → Domain models: queries and updates
app/api/exsiccate/tasks.py - Record tasks → Serializers: serializes results
app/api/exsiccate/tasks.py - Serializers → Domain models: maps model data
app/api/serializers.py - Domain models → SQL database: defines mapped tables
app/api/models.py - Specimen routes → Image access: requests image access
app/api/exsiccate/urls.py - Record tasks → Image files: creates image paths
app/api/exsiccate/tasks.py - Account routes → User tasks: dispatches login tasks
app/api/users/account.py - Account routes → Token auth: guards user route
app/api/users/account.py - User tasks → Domain models: reads and saves users
app/api/users/tasks.py - User tasks → Serializers: imports serializers
app/api/users/tasks.py - Celery setup → Task configuration: reads broker settings
app/api/__init__.py - Task configuration → Task broker: configures broker
app/celery_config.py - Task context → Celery setup: wraps task execution
app/api/cutils.py - Record tasks → Task broker: runs asynchronously