Skip to content
/ Sup Public

adhyys07/Sup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4f88335 · · Jul 7, 2026

History

30 Commits
May 30, 2026
Mar 29, 2026
Jul 7, 2026
May 27, 2026
May 30, 2026
Mar 12, 2026
Jul 7, 2026
Mar 12, 2026
Mar 12, 2026
Mar 12, 2026
May 27, 2026
May 30, 2026
May 27, 2026
Jul 7, 2026

Repository files navigation

Sup!

Sup! is a full-stack video meeting workspace built for innovators, it has various tools integrated in your meeting to make your calls more productive and to make the workflow faster.

Features

  • Email/password auth with email verification
  • Google and GitHub OAuth login/linking
  • User profiles
  • Instant and scheduled meetings
  • Shareable meeting links
  • WebRTC video/audio rooms
  • Pre-join lobby with mic/camera controls
  • In-meeting chat, attachments, reactions, raised hands, and host controls
  • Tools: timer, checklist, notes, polls, transcription, whiteboard, breakout rooms
  • Meeting recordings with optional Google Drive/GitHub sync
  • Google Calendar and ICS support
  • Past meeting audit logs with durations and activity history
  • Admin APIs and dashboards for global users, meetings, and audit logs
  • React + TypeScript migration started under client/

Stack

  • Node.js, Express, Socket.IO
  • PostgreSQL, Drizzle ORM
  • JWT, bcryptjs, Passport
  • WebRTC
  • React, TypeScript, Vite
  • Multer, Nodemailer
  • Three.js, HTML, CSS, vanilla JS

Setup

npm install

Create a PostgreSQL database:

CREATE DATABASE sup_video_call;

Create .env:

DATABASE_URL=postgresql://postgres:your_password@localhost:5432/sup_video_call

JWT_SECRET=replace-with-a-long-random-secret

BASE_URL=http://localhost:3000

PORT=3000

NODE_ENV=development

Apply schema and compatibility backfills:

npm run db:push
node scripts/db-backfill.jss

Run locally:

npm run dev

Open http://localhost:3000.

React client:

npm install --prefix client
npm run client:dev
npm run client:buildld

Optional Env

Email:

EMAIL_SERVICE=gmail

EMAIL_USER=

EMAIL_PASSWORD=

OAuth:

GOOGLE_CLIENT_ID=

GOOGLE_CLIENT_SECRET=

GOOGLE_CALLBACK_URL=http://localhost:3000/auth/google/callback


GITHUB_CLIENT_ID=

GITHUB_CLIENT_SECRET=

GITHUB_CALLBACK_URL=http://localhost:3000/auth/github/callback

EMAIL_SERVICE=gmail

EMAIL_USER=

EMAIL_PASSWORD=

GOOGLE_DRIVE_RECORDINGS_FOLDER_ID=

Admin:

ADMIN_EMAILS=[email protected]

ADMIN_USER_IDS=1


# Password gate for the admin panel pages (/admin.html, /admin-stats.html).

# Layered on top of the ADMIN_EMAILS/ADMIN_USER_IDS checks: a visitor must both

# know this password AND sign in with an authorized admin account.

# Set ONE of the following. If neither is set, the admin panel stays locked (503).

ADMIN_PANEL_PASSWORD=change-this-strong-password

# ...or a bcrypt hash instead of plaintext (takes precedence if both are set):

# ADMIN_PANEL_PASSWORD_HASH=$2a$10$...

# Optional: how long an unlock lasts, in hours (default 8, max 168):

# ADMIN_PANEL_SESSION_HOURS=8

Scripts

npm start       # start server
npm run dev      # start with nodemon
npm run client:dev
npm run client:build
npm run db:push sh # push Drizzle schema
npm run db:studioo

Main Routes

  • / - login/register
  • /dashboard.html - meetings and audit history
  • /app/dashboard - React dashboard after npm run client:build
  • /admin.html - legacy admin dashboard
  • /app/admin - React admin dashboard after npm run client:build
  • /profile.html - profile and account connections
  • /meeting.html?room=CODE - meeting room
  • /join/:code - shareable join link
  • /api/admin/* - admin-only JSON APIs

Notes

  • Node.js 18.x is expected.
  • Run node scripts/db-backfill.js after pulling schema changes.
  • Audit logs use meeting_audit_logs; the server creates it on startup if needed.
  • Camera/mic access requires localhost or HTTPS.
  • Keep .env out of git.

License

ISC

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

No packages published