Rewritten in rust with new features
Manage onsite portrait booths with offsite processing for large events.
- Customer registration and ordering with stripe payments.
Customers can pre-purchase number of photos before they get their pictures taken. - Photos uploaded for offsite processing.
Photos will be stored in S3 storage with pre-signed links for downloading. - Once photos are processed, they'll be uploaded back to S3 storage and pre-signed links will be emailed to the customers.
- Create Booth.
- Activate User accounts and assign roles (Operator and Processor).
- Access the application, likely through a QR code.
- Enter profile information and provide at least either an email or a phone number and verify using OTP.
- Create an order and select number of photos. Order number is created. Order status is Created.
- Pay for the order using Stripe. Order status is Paid.
- Present the Order number to the booth operator.
- Verify Order is paid and number of photos selected.
- Upload raw photos to the order. Order status is Uploaded.
- Access unprocessed orders and download photos. Order status is In Progress.
- Process photos and upload processed photos to the order. Order status is Processed.
- Verify orders.
- Trigger emails with links of processed photos. Order status is Completed.
- Rust API backend written with Axum/Leptos Server Functions.
- Rust frontend written with Leptos.
- S3 integration for storage backend to store original and processed photos.
- Presigned expiring URLs using S3.
- OAuth2 authentication for onsite operators and offsite processors.
- Stripe integration for payments.