Novum is a modern video sharing platform built with Next.js, NestJS, and TypeScript. It allows users to upload, view, and interact with videos in a user-friendly interface.
Platform uses HLS streaming for better experience. I'm transcoding videos to multiple qualities, creating HLS playlists and segments, and enabling adaptive streaming.
This project is set up as a monorepo using npm workspaces. It consists of the following packages:
packages/frontend: Next.js-based frontend applicationpackages/backend: NestJS-based backend APIpackages/shared: Shared types and utilities used by both frontend and backend
- Node.js (v18 or later)
- Docker and Docker Compose (for running the database and other services)
-
Clone the repository:
git clone https://github.com/chetanxpro/novum.git cd novum -
Install dependencies:
npm install -
Set up environment variables:
- Copy
.env.exampleto.envin bothpackages/frontendandpackages/backend - Fill in the necessary environment variables
- Copy
-
Start the development servers:
npm run devThis will start both the frontend and backend in development mode.
-
Open your browser and navigate to
http://localhost:3000to see the application running.
npm run dev: Start both frontend and backend in development modenpm run build: Build all packagesnpm run start: Start both frontend and backend in production modenpm run test:backend: Run backend testsnpm run migrate: Run Prisma migrationsnpm run generate: Generate Prisma clientnpm run docker:up: Start Docker servicesnpm run docker:down: Stop Docker servicesnpm run lint: Run linting across all packages