Striim is a web-based collaboration platform for scheduled and instant calls, public community visibility, moderated join requests, and shared materials.
This repository contains a React + TypeScript frontend that uses Supabase for authentication, persistence, and storage-backed community features.
- Authenticated call launcher at
/callsfor one-on-one, group, and webinar sessions - Instant and scheduled call modes
- Public and private meeting visibility controls
- Community dashboard for:
- active users
- ongoing calls
- public scheduled calls
- public materials
- threaded chats
- Join request workflow for public meetings requiring:
- requester name
- GitHub profile/name/url
- short interest description
- RSVP support for public scheduled meetings (authenticated users and guests)
- Floating "Return to call" shortcut when a session is active and user navigates away
- One active joined meeting per user rule
- Can view public community data (public ongoing calls, public scheduled calls, public threads/materials)
- Can submit join requests to public meetings with required metadata
- Can RSVP to public scheduled meetings using email
- Cannot start calls
- Cannot post/reply/react/publish/collaborate
- Can start and schedule calls
- Can request/join meetings based on meeting conditions
- Can publish and manage materials
- Can post/reply in threads and react to materials
- Can manage profile metadata and follow users
- React 18
- TypeScript
- Vite
- Zustand
- Supabase (Auth, Postgres, Storage)
- Tailwind CSS
- Framer Motion
src/pages/route-level UIsrc/components/shared UI and call controlssrc/store/Zustand storessrc/services/Supabase data access wrapperssupabase/community_schema.sqlschema and policies for community featuresdocs/operational and developer documentation
- Node.js 18+
- npm
- Supabase project
- Install dependencies
npm install- Configure environment variables
cp .env.example .envSet:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
- Apply required database setup in Supabase SQL Editor
docs/SUPABASE_SETUP.md(profilestable and auth-compatible policies)supabase/community_schema.sql(community, meetings, follows, RSVPs, storage policies)
- Start development server
npm run devOpen http://localhost:3000.
npm run devstart dev servernpm run buildcreate production buildnpm run build:checkrun type-check and production buildnpm run lintrun ESLintnpm run previewpreview production build locally
/home/callscall launcher/joinjoin-by-id page/communitycommunity dashboard/call/:roomIdone-on-one call page/group/:roomIdgroup call page (authenticated)/webinar/:roomIdwebinar page (authenticated)/schedulermeeting scheduler (authenticated)/recordingsrecordings page (authenticated)/profileprofile page (authenticated)
docs/USAGE.mdend-user usage and behavior by roledocs/SUPABASE_SETUP.mdSupabase setup and migration orderdocs/ARCHITECTURE.mdsystem architecture and store/service designdocs/API.mdservice/store APIs and table contract referencedocs/CONFIGURATION.mdenvironment and runtime configurationdocs/DEPLOYMENT.mddeployment and production checklistdocs/SECURITY.mdsecurity model and hardening guidancedocs/PRIVACY_SECURITY.mdprivacy/data handling summarydocs/TROUBLESHOOTING.mdcommon issues and fixesdocs/CONTRIBUTING.mdcontribution workflow and quality gatesdocs/WORKFLOWS.mdimplementation workflows for feature delivery