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.example
to.env
in bothpackages/frontend
andpackages/backend
- Fill in the necessary environment variables
- Copy
-
Start the development servers:
npm run dev
This will start both the frontend and backend in development mode.
-
Open your browser and navigate to
http://localhost:3000
to 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