Skip to content

gptenv/camerafodder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Camera Fodder

Camera Fodder is a Rust + modern JavaScript random video chat application inspired by the classic anonymous pairing flow, updated for polished small-group WebRTC rooms.

Features in this version

  • Guest sessions with no account required.
  • Local account signup/sign-in with Argon2 password hashes and a JSON-backed auth/session store.
  • OAuth provider buttons are represented in the UI as placeholders for future Google, Facebook, and additional provider integrations.
  • Random matching into rooms of up to 8 participants, defaulting to 2.
  • Dedicated /room/:room_id links first show a request-to-join page where visitors can start a guest/local session, choose a display name, and ask to enter before joining the video room.
  • Accepted users enter a video-first conference layout with adaptive tiles, chat, attendee list, call controls, and join-request tools.
  • Meeting controls include mic/camera toggles, screen sharing, grid/focus layouts, mirrored self-view, compact tile mode, and camera/microphone device selectors.
  • Participants publish lightweight presence state so attendees can see who is muted, who has video off, and who is sharing a screen.
  • Any participant can call in another random person unless the room was started with host-controlled add-person permissions.
  • Host-control rooms are intentionally excluded from matching with other host-control rooms.
  • Optional room share links.
  • Global Directory opt-in works for signed-in and anonymous users, shows room membership, and lets people request to join listed rooms.
  • Room participants get a non-intrusive join-request panel where they can review and accept pending directory requests.
  • WebSocket signaling for browser-to-browser WebRTC audio/video and room chat.

Run locally

cargo run

Open http://localhost:3000 in two or more browser windows. Camera/microphone access requires a browser context that allows getUserMedia (localhost is allowed by modern browsers).

Auth data is stored at data/auth.json by default. Override it with:

AUTH_STORE_PATH=/path/to/auth.json cargo run

Deploy to Cloud Run

Prerequisites: enable Cloud Run, Cloud Build, and Artifact Registry APIs, then authenticate the gcloud CLI.

export PROJECT_ID=your-gcp-project
export REGION=us-central1
./scripts/deploy-cloud-run.sh

You can also deploy through Cloud Build:

gcloud artifacts repositories create camerafodder --repository-format=docker --location=us-central1
gcloud builds submit --config cloudbuild.yaml --substitutions _REGION=us-central1,_SERVICE=camerafodder

The container honors Cloud Run's PORT environment variable. AUTH_STORE_PATH defaults to /tmp/camerafodder/auth.json in the image, which is fine for smoke testing but ephemeral on Cloud Run. For durable production auth, mount persistent storage or replace the JSON store with a managed database such as Cloud SQL or Firestore.

Development notes

Rooms, directory presence, and join requests are runtime state. Restarting the server clears live rooms and directory entries, but account/session data is restored from AUTH_STORE_PATH. Production hardening should add OAuth callbacks, moderation/reporting, TURN servers, rate limiting, and stronger room access controls.

About

Camera Fodder

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors