Build & Deploy
cd catalog-uinpm run buildThe output goes to catalog-ui/dist/ — pure static HTML, CSS, and JS.
Preview locally
Section titled “Preview locally”npm run previewOpens a local server at http://localhost:4321 serving the built site.
GitHub Pages
Section titled “GitHub Pages”name: Deploy to GitHub Pageson: push: branches: [main]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20
- name: Install & Build working-directory: catalog-ui run: | npm ci npm run build
- uses: actions/upload-pages-artifact@v3 with: path: catalog-ui/dist
deploy: needs: build runs-on: ubuntu-latest permissions: pages: write id-token: write environment: name: github-pages steps: - uses: actions/deploy-pages@v4Docker
Section titled “Docker”FROM node:20-alpine AS buildWORKDIR /appCOPY catalog-ui/package*.json ./RUN npm ciCOPY catalog-ui/ ./COPY models/ ../models/COPY registry-v2/ ../registry-v2/RUN npm run build
FROM nginx:alpineCOPY --from=build /app/dist /usr/share/nginx/htmlEXPOSE 80Static hosting (S3, Netlify, Vercel)
Section titled “Static hosting (S3, Netlify, Vercel)”cd catalog-uinpm run build# Upload dist/ to your static hosting providerThe output is a fully self-contained static site with no external API calls, no telemetry, and no runtime dependencies. It works behind a VPN or on an air-gapped network.