RelentNet is a workspace-based monorepo for RelentNet-owned applications, shared packages, templates, and deployment configuration.
The current production application is the public marketing site in apps/marketing.
apps/
marketing/ # Public RelentNet site
packages/ # Reserved for future shared packages
templates/ # Reserved for future project starters
docs/ # Legal, process, sales, and operations docs
compose.yaml # Coolify/Docker Compose entrypoint- Node.js 22+
- npm
- Docker, for local container verification
npm installRun the marketing site locally on port 3000:
npm run devRoot scripts proxy to the @relentnet/marketing workspace:
npm run build
npm run preview
npm run test
npm run lint
npm run typecheck
npm run checkBuild and run the marketing app with Docker Compose:
docker compose -f compose.yaml -f compose.local.yaml up --buildThe container serves the built SPA through Nginx on http://localhost:3000 by default. Override the published port with MARKETING_PORT:
MARKETING_PORT=3001 docker compose -f compose.yaml -f compose.local.yaml up --buildCoolify deploys from the root compose.yaml file using the marketing service.
Production configuration:
Compose file: compose.yaml
Service: marketing
Exposed port: 80
Domain: relentnet.comUse compose.local.yaml only for local development; compose.yaml intentionally does not bind host ports so Coolify can route traffic through its proxy.
apps/marketing is a client-only SPA built with React 19, Vite 7, TanStack Router, TanStack Form, Tailwind CSS 4, and TypeScript.
Routes live in apps/marketing/src/routes. apps/marketing/src/routeTree.gen.ts is generated by TanStack Router and should not be edited manually.