How meno-g/streamly-video works
Streamly is a full-stack video platform. Viewers browse feeds, search and watch videos; signed-in users interact with videos, channels and playlists, while creators upload and manage their own content in Studio. Pages and API routes are the entry points; server queries and actions mediate reads and mutations against PostgreSQL, with storage drivers handling media files. The README documents the broader feature set; source-level edges are limited to relationships shown in the provided excerpts or SOURCE INDEX.
Main entry points: db.ts PostgreSQL access · route.ts Upload endpoint · session.ts Session helpers · auth.ts Auth service
Components 23
Discovery and viewing
- Home and explore
src/app/(main)/page.tsx - Video feed
src/components/video/video-feed.tsx - Feed API
src/app/api/videos/route.ts - Video queries
src/server/queries/videos.ts - Search
src/app/(main)/search/page.tsx - Watch page
src/app/(main)/watch/[videoId]/page.tsx - Custom player
src/components/watch/video-player.tsx - Media delivery
src/app/api/media/[...key]/route.ts
Community and library
- Comments and interactions
src/server/actions/interactions.ts - Library pages
src/app/(main)/library/page.tsx - Playlist queries
src/server/queries/playlists.ts - Notifications
src/server/actions/notifications.ts
Creator tools
- Upload endpoint
src/app/api/upload/route.ts - Storage drivers
src/server/storage/index.ts - Creator Studio
src/app/(main)/studio/page.tsx - Studio queries
src/server/queries/studio.ts
Platform services
- Login and register
src/app/(auth)/login/page.tsx - Auth forms
src/components/auth/auth-forms.tsx - Auth service
src/server/auth.ts - Session helpers
src/server/session.ts - PostgreSQL access
src/server/db.ts - Input validation
src/lib/validations.ts
Other components
- Viewer
Connections 28
- Viewer → Home and explore: browses
- Home and explore → Video feed: renders feed
src/app/(main)/page.tsx - Viewer → Search: searches
- Viewer → Watch page: watches
- Watch page → Custom player: renders player
- Viewer → Login and register: signs in
- Login and register → Auth forms: renders forms
src/components/auth/auth-forms.tsx - Auth forms → Auth service: submits credentials
src/components/auth/auth-forms.tsx - Auth service → PostgreSQL access: looks up user
src/server/auth.ts - Session helpers → Auth service: reads session
src/server/session.ts - Session helpers → PostgreSQL access: loads user
src/server/session.ts - Video feed → Feed API: loads pages
src/components/video/video-feed.tsx - Feed API → Video queries: requests feed
src/app/api/videos/route.ts - Video queries → PostgreSQL access: reads videos
src/server/queries/videos.ts - Viewer → Library pages: uses library
- Library pages → Playlist queries: loads playlists
src/app/(main)/library/page.tsx - Playlist queries → PostgreSQL access: reads playlists
src/server/queries/playlists.ts - Viewer → Comments and interactions: interacts
- Viewer → Notifications: checks alerts
- Viewer → Upload endpoint: uploads video
- Upload endpoint → Session helpers: checks identity
src/app/api/upload/route.ts - Upload endpoint → Input validation: validates metadata
src/app/api/upload/route.ts - Upload endpoint → Storage drivers: stores media
src/app/api/upload/route.ts - Upload endpoint → PostgreSQL access: creates video
src/app/api/upload/route.ts - Viewer → Creator Studio: manages videos
- Creator Studio → Studio queries: loads analytics
src/app/(main)/studio/page.tsx - Studio queries → PostgreSQL access: reads metrics
- Custom player → Media delivery: requests media