
Full-scale live streaming + VOD platform: Express + PostgreSQL + Socket.IO backend, React + Vite frontend.
backend/migrations/001_schema.sql — full DB schema (users, channels, videos, live_streams, chat, subscriptions, moderation_reports, content_flags)backend/src/index.js — Express server + Socket.IO live chat (viewers can watch anonymously; chatting requires login)backend/src/routes/ — auth, channels, live streams, moderation endpointsbackend/src/middleware/ — JWT auth, role checks, basic chat text filterfrontend/ — React + Vite app: live feed home page, HLS watch page with live chat, login/registercd backend
npm install
cp .env.example .env # fill in DATABASE_URL and JWT_SECRET
psql $DATABASE_URL -f migrations/001_schema.sql
npm run dev # runs on http://localhost:4000
cd frontend
npm install
cp .env.example .env # point VITE_API_URL / VITE_SOCKET_URL at your backend
npm run dev # runs on http://localhost:5173
Note on testing: I built this in a sandboxed environment with no network access, so I could not run npm install/npm run build myself to confirm it compiles. The code follows standard Vite + React 18 + react-router-dom v6 patterns — run the commands above locally and let me know if you hit any errors and I’ll fix them.
users.date_of_birth is required at registration; under-18 signups are rejected server-side.moderation_reports for human review — nothing is auto-deleted without a moderator action.content_flags table is where you’d wire in an automated scanner (AWS Rekognition, Google Video Intelligence, etc.) for nudity/violence detection on uploads and live streams.videos.playback_url.content_flags.moderation_reports queueTell me which phase to build next.
Built by Agegnehu Shibiru — a self-taught developer from Ethiopia, building full-stack applications entirely from a mobile phone using AI-assisted development tools.
Open to collaboration, learning opportunities, and connecting with developers internationally.