How sruinz/svrx-pinry works
SVRx Pinry is a self-hosted image board: users browse and search pins, create pins from uploads or collected web images, organize them into boards and tags, and can export selected content as background ZIP jobs. The Vue SPA is the main interface to Django APIs; Django manages accounts, pin/board data, media assets, SSO, and exports. The README documents additional browsing and account capabilities, but sampled source excerpts are limited, so only high-level subsystem connections are shown where implementation wiring was not available.
Main entry points: api.js API client · views.py Django API · worker.py Export worker · Pins4Board.vue Pin and board screens
Components 22
Web interface
- Vue application
pinry-spa/src/main.js - Views and routes
pinry-spa/src/router/index.js - API client
pinry-spa/src/components/api.js - Search interface
pinry-spa/src/components/search/SearchPanel.vue - Pin and board screens
pinry-spa/src/views/Pins4Board.vue - Export interface
pinry-spa/src/components/export/ExportDialog.vue
Pins and organization
- Django API
core/views.py - Pin and board services
core/services/pin_import.py - Pin and board models
core/models.py - Application database
Accounts and SSO
- Account management
users/views.py - SSO flows
users/sso/flows.py - Provider client
users/sso/client.py
Media lifecycle
- Media API services
core/services/media_storage.py - Image lifecycle
django_images/services/media_cleanup.py - Image files
Exports
- Export endpoints
exports/views.py - Export jobs
exports/services/jobs.py - Export worker
exports/services/worker.py - ZIP artifacts
exports/services/archive.py
Other components
- User
- Identity provider
Connections 23
- User → Vue application: uses
- Vue application → Views and routes: mounts
- Views and routes → Pin and board screens: routes
- Pin and board screens → Search interface: offers search
- Pin and board screens → API client: requests data
- Search interface → API client: requests results
- API client → Django API: calls
- Django API → Pin and board services: invokes
- Pin and board services → Pin and board models: updates
- Pin and board models → Application database: reads and writes
- Django API → Account management: serves account actions
- Account management → SSO flows: starts SSO
- SSO flows → Provider client: exchanges credentials
- Provider client → Identity provider: authenticates
- Django API → Media API services: handles media
- Media API services → Image files: publishes assets
- Image lifecycle → Image files: manages files
- Export interface → API client: requests export
- API client → Export endpoints: calls export endpoints
- Export endpoints → Export jobs: creates jobs
- Export worker → Export jobs: claims jobs
- Export worker → Pin and board models: captures pin data
- Export worker → ZIP artifacts: builds archive