How teerxwat/shooting_range-pi works
Shooting Range combines an on-site kiosk and GoPro capture system with a cloud service for clip access, purchases, rendering, downloads, and statistics. The main journey runs from lane selection and recording through upload, customer PIN lookup, preview, order, payment, and download. README capabilities fill in cloud and kiosk behavior where source excerpts were not provided; those connections are documented rather than verified from sampled implementations. The separate LianLian API gateway is modeled as an optional payment integration, not as wired into the mock payment flow.
Main entry points: customer.js Customer endpoints · server.py Lane sessions · index.js Cloud API · app.py Transfer API
Components 29
Range capture
- Camera API
local/Gopro-connect/server.py - Lane sessions
local/Gopro-connect/server.py - GoPro cameras
- Pose detection
local/Gopro-connect/detect_stream.py - Clip recording
local/Gopro-connect/recorder.py - Clip processing
local/Gopro-connect/server.py - Cloud uploader
local/Gopro-connect/uploader.py
Cloud media commerce
- Cloud API
server/src/index.js - Session and clip ingest
server/src/routes/ingest.js - Customer endpoints
server/src/routes/customer.js - Preview and render
server/src/media.js - Orders and payments
server/src/payment.js - Statistics and events
server/src/routes/admin.js - Cloud database
server/src/db.js
Web experiences
- Kiosk app
web/src/kiosk/App.jsx - Lane selection
web/src/kiosk/pages/LaneSelect.jsx - Live capture view
web/src/kiosk/pages/LiveView.jsx - Replay playback
web/src/kiosk/pages/ReplayList.jsx - Customer app
web/src/customer/App.jsx - Session PIN lookup
web/src/customer/pages/Lookup.jsx - Video catalog
web/src/customer/pages/Videos.jsx - Clip studio
web/src/customer/pages/Studio.jsx
Payment gateway
- Transfer API
api_gateway/app.py - LianLian client
api_gateway/lianlian/client.py - Transfer database
api_gateway/lianlian/db.py
Other components
- Range customer
- Administrator
- Project client
- LianLian Pay
Connections 34
- Range customer → Kiosk app: uses
- Kiosk app → Lane selection: routes to
- Lane selection → Camera API: lists lanes
- Live capture view → Camera API: controls session
- Camera API → Lane sessions: dispatches
- Lane sessions → GoPro cameras: controls
- Lane sessions → Pose detection: starts detection
- Lane sessions → Clip recording: starts recording
- Clip recording → Clip processing: queues clips
- Clip processing → Cloud uploader: uploads clips
- Replay playback → Camera API: requests playback
- Cloud uploader → Cloud API: sends sessions and clips
- Cloud API → Session and clip ingest: routes ingest
- Cloud API → Customer endpoints: routes customer
- Cloud API → Statistics and events: routes admin
- Session and clip ingest → Cloud database: stores session and clip records
- Session and clip ingest → Preview and render: creates preview
- Customer app → Session PIN lookup: routes to
- Range customer → Customer app: uses
- Session PIN lookup → Customer endpoints: submits session and PIN
- Customer endpoints → Cloud database: reads and updates
- Customer endpoints → Preview and render: serves preview and download
- Customer endpoints → Orders and payments: creates and pays orders
- Video catalog → Customer endpoints: loads videos
- Clip studio → Customer endpoints: requests preview and order
- Orders and payments → Preview and render: requests render
- Orders and payments → Cloud database: records orders and payments
- Administrator → Statistics and events: requests reports
- Statistics and events → Cloud database: queries statistics
- Project client → Transfer API: creates or checks transfer
- Transfer API → LianLian client: creates and queries payment
- Transfer API → Transfer database: logs transactions
- LianLian client → LianLian Pay: calls payment API
- LianLian Pay → Transfer API: sends webhook