Skip to content

AI Web Application

Full-stack web application with Next.js frontend, RAG pipeline, authentication, database, and a Platform tenant chart whose ModelGateway is the app's model path.

Nameai-web-app
Version0.1.0
Tagsai, nextjs, fullstack, rag, typescript
Sourcecomposites/ai-web-app.yaml

Render it

# CLI
npx @nanohype/sdk render-composite ai-web-app --out ./my-app

# SDK
import { LocalSource, renderComposite } from "@nanohype/sdk";
const result = await renderComposite(source, "ai-web-app", variables);

# MCP — from an agent
get_composite({ name: "ai-web-app" })

What it draws together

TemplateRendered atNotes
monoreporootthe root project
next-appapps/web
rag-pipelinepackages/ragonly when IncludeRag
module-auth-tspackages/auth
module-database-tspackages/db
module-observability-tspackages/observability
eval-harnesspackages/evalsonly when IncludeEvals
k8s-app-tenantinfra

Variables

Required

ProjectName string
Project name used across all templates Must be lowercase kebab-case.

Optional

LlmProvider string — defaults to gateway
LLM provider the packages deployed on the substrate call: gateway, the Platform ModelGateway, which holds the Bedrock role there, so none of them holds a model credential. The eval harness runs on a CI runner and keeps its own bedrock default
IncludeRag bool — defaults to true
Include RAG pipeline for document search
IncludeEvals bool — defaults to true
Include evaluation harness
Tenant string — defaults to ${ProjectName}
Owning team: the tenants-<team> namespace the Platform, BudgetPolicy and ModelGateway CRs are applied in, the Platform's spec.tenant, and the team label on the tenant chart's resources and telemetry
Image string — defaults to ${ProjectName}
Container image repository the tenant chart deploys, without a tag; each values-<env>.yaml pins one
AppMetric string — defaults to http
Prefix of the RED series the tenant chart's Grafana dashboard reads: <prefix>_requests_total, <prefix>_errors_total and <prefix>_request_duration_seconds. The default, http, is the prefix a ts-service emits them under; set it to the prefix the deployed service emits