How noelorph/diy-instax-photobooth works
DIY Instax Photo Booth combines an Admin application for access, event-draft management, and profile settings with a separate iPhone printer-qualification harness. The main Admin workflow is sign-in and authorization, then creating or editing a Draft Event backed by Supabase. The qualification workflow captures and prepares a test image, communicates with an Instax Mini Link 3 over browser Bluetooth, and records trial outcomes. README describes Booth Mode and printing operations as gated; the supplied tree does not show their implementation. Edges reflect excerpts, SOURCE INDEX references, or README statements; unsampled subsystems are represented only at supported paths.
Main entry points: QualificationClient.tsx Trial interface · server.ts Server client · drafts.ts Draft service · require-admin.ts Admin authorization
Components 26
Admin experience
- Sign in
src/app/(auth)/sign-in/page.tsx - Auth actions
src/features/admin/auth/actions.ts - Recovery flow
src/app/auth/callback/route.ts - Admin pages
src/app/(admin)/dashboard/page.tsx - Profile
src/features/admin/profile/profile.tsx - Profile actions
src/features/admin/profile/actions.ts
Event drafts
- Event pages
src/app/(admin)/events/page.tsx - Draft editor
src/features/admin/events/draft-form.tsx - Draft actions
src/features/admin/events/actions.ts - Draft service
src/lib/events/drafts.ts - Draft validation
src/features/admin/events/draft-event.schema.ts
Printer qualification
- Qualification page
src/app/qualification/iphone-print/page.tsx - Trial interface
src/features/qualification/QualificationClient.tsx - Image preparation
src/features/qualification/image.ts - Print session
src/features/qualification/instax/session.ts - Bluetooth transport
src/features/qualification/instax/bluetooth.ts - Printer protocol
src/features/qualification/instax/protocol.ts - Trial state
src/features/qualification/trial.ts - Trial log
src/features/qualification/trial-log.ts
Auth and persistence
- Server client
src/lib/supabase/server.ts - Admin authorization
src/lib/auth/require-admin.ts
Other components
- Admin
- Supabase Auth and data
- Trial operator
- Device camera
- Instax Mini Link 3
Connections 30
- Admin → Sign in: signs in
README.md - Sign in → Auth actions: submits credentials
src/app/(auth)/sign-in/page.tsx - Auth actions → Server client: uses server client
README.md - Recovery flow → Server client: exchanges recovery code
src/app/auth/callback/route.ts - Server client → Supabase Auth and data: auth and data requests
src/lib/supabase/server.ts - Admin pages → Admin authorization: requires Admin
src/app/(admin)/dashboard/page.tsx - Admin authorization → Server client: creates client
src/lib/auth/require-admin.ts - Admin authorization → Supabase Auth and data: checks session and Profile
src/lib/auth/require-admin.ts - Admin → Profile: manages account
README.md - Profile → Profile actions: submits changes
src/app/(admin)/profile/page.tsx - Profile actions → Server client: uses server client
src/features/admin/profile/actions.ts - Admin → Event pages: manages Drafts
README.md - Event pages → Draft service: loads Drafts
src/app/(admin)/events/page.tsx - Event pages → Draft editor: renders editor
- Draft editor → Draft actions: submits changes
src/features/admin/events/draft-form.tsx - Draft actions → Draft service: delegates Draft operations
- Draft service → Admin authorization: requires Admin
src/lib/events/drafts.ts - Draft service → Server client: queries events
src/lib/events/drafts.ts - Draft service → Draft validation: validates input
src/lib/events/drafts.ts - Trial operator → Qualification page: opens trial
README.md - Qualification page → Trial interface: renders harness
src/app/qualification/iphone-print/page.tsx - Trial interface → Device camera: captures video
src/features/qualification/QualificationClient.tsx - Trial interface → Image preparation: prepares print image
src/features/qualification/QualificationClient.tsx - Trial interface → Print session: runs print trial
src/features/qualification/QualificationClient.tsx - Trial interface → Trial state: updates trial state
src/features/qualification/QualificationClient.tsx - Trial interface → Trial log: records trial events
src/features/qualification/QualificationClient.tsx - Print session → Image preparation: validates JPEG
src/features/qualification/instax/session.ts - Print session → Bluetooth transport: exchanges printer data
src/features/qualification/instax/session.ts - Bluetooth transport → Printer protocol: uses protocol
src/features/qualification/instax/bluetooth.ts - Bluetooth transport → Instax Mini Link 3: communicates over Bluetooth