How snappriceaffiliate/photostudio works
PickSnap is a studio-to-client photo-selection product: studios create events and upload photos; the browser compresses previews and thumbnails while RAW originals stay local; clients open a shared gallery, select photos, add notes, and submit; studios review and export the selection list. Supporting capabilities include studio accounts and staff, branding, billing, audit, notifications, and archive retention. The README documents the main workflow and capabilities; sampled source confirms several frontend/API and storage relationships, but many backend routes were not inspected, so those links are documented rather than inferred from module names.
Main entry points: events/views.py Event operations · StudioPages.tsx Studio screens · client.ts API client · clients/views.py Client access
Components 24
Studio workspace
- Events and albums
backend/apps/events/models.py - Event operations
backend/apps/events/views.py - Studio tenants
backend/apps/studios/models.py
Client selection
- Client gallery
frontend/src/gallery/GalleryPages.tsx - Client access
backend/apps/clients/views.py - Selections and notes
backend/apps/clients/models.py - Selection exports
backend/apps/clients/exports.py
Photo pipeline
- Folder uploader
frontend/src/upload/uploader.ts - Browser compression
frontend/src/compression/compress.ts - Photo records
backend/apps/photos/models.py - Photo uploads
backend/apps/photos/views.py - Object storage
backend/apps/core/storage.py
Platform services
- Accounts and staff
backend/apps/accounts/views.py - Plans and payments
backend/apps/billing/views.py - Audit trail
backend/apps/audit/models.py - Email jobs
backend/apps/notifications/tasks.py - Photo retention
backend/apps/photos/tasks.py - Django API
backend/config/urls.py
Web application
- Studio screens
frontend/src/pages/StudioPages.tsx - Event workspace
frontend/src/pages/EventPage.tsx - API client
frontend/src/api/client.ts - Application routes
frontend/src/App.tsx
Other components
- Studio owner
- Gallery client
Connections 26
- Studio owner → Studio screens: manages events
README.md - Studio screens → Event workspace: opens events
frontend/src/App.tsx - Event workspace → Folder uploader: starts uploads
frontend/src/pages/EventPage.tsx - Folder uploader → Browser compression: compresses images
- Browser compression → Photo uploads: prepares previews
- Event workspace → API client: sends requests
frontend/src/pages/EventPage.tsx - API client → Django API: calls API
frontend/src/api/client.ts - Django API → Event operations: routes events
backend/config/urls.py - Event operations → Events and albums: reads and writes
backend/apps/events/views.py - Event operations → Photo records: uses photo records
backend/apps/events/views.py - Photo uploads → Object storage: uses storage
- Photo uploads → Photo records: records uploads
- Gallery client → Client gallery: opens gallery
README.md - Application routes → Client gallery: routes gallery
frontend/src/App.tsx - Client gallery → API client: requests gallery data
frontend/src/gallery/GalleryPages.tsx - API client → Client access: calls API
- Client access → Selections and notes: records selections
- Client access → Selection exports: provides exports
README.md - Studio screens → Accounts and staff: uses staff API
- Accounts and staff → Studio tenants: manages tenants
- Studio screens → Plans and payments: manages plans
README.md - Event operations → Plans and payments: checks entitlements
backend/apps/events/views.py - Event operations → Audit trail: records activity
- Accounts and staff → Email jobs: sends account email
- Photo retention → Object storage: deletes old images
backend/apps/photos/tasks.py - Photo retention → Photo records: updates photo records
backend/apps/photos/tasks.py