Skip to content

Web App Development

Build and run the omnilux.tv web application locally.

This is the public account and marketing surface, not the self-hosted server UI itself.

Prerequisites

  • Node.js 22+
  • pnpm
  • A configured Supabase project (see Cloud API)

Environment variables

Create .env in the web app directory:

bash
# Supabase
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIs...

# Stripe (for subscription management)
VITE_STRIPE_PUBLISHABLE_KEY=pk_test_...

# App
VITE_APP_URL=http://localhost:5173

WARNING

Variables prefixed with VITE_ are embedded in the client bundle and visible to users. Never put secret keys in VITE_ variables.

Development server

bash
pnpm install
pnpm --filter @omnilux/web dev

The development server starts at http://localhost:5173 with hot module replacement.

Building for production

bash
pnpm --filter @omnilux/web build

The build output goes to apps/web/dist/. This is a static site that can be served by any web server (Caddy, Nginx, etc.).

Project structure

The web app uses:

  • React 19 with TanStack Router
  • Vite for bundling
  • Tailwind CSS 4 for styling
  • Supabase JS client for authentication and data
  • Stripe.js for subscription checkout

Authentication flow

  1. User signs up or logs in via Supabase Auth
  2. Supabase returns a JWT
  3. The JWT is used for all subsequent API calls
  4. Session refresh is handled automatically by the Supabase client

Use OmniLux, run your own server, or build on the platform.