Docs/Contributingv1.0.0-rc.1

Website development and deployment

udiot.in is built with @tagna/udiot@1.0.0-rc.1. Its source uses defineWebApp, definePage, createWebBuilder and createWebServer. Browser examples use the installed Store and Form APIs; the DI example runs a fixed Container operation on the Node server.

Run locally

From the website repository, or apps/udiot.in in a framework checkout:

npm ci
npm run build
npm test
npm start

Open http://localhost:3000. npm run dev builds once and starts the server; rerun after source edits. PORT and HOST default to 3000 and 127.0.0.1. No framework checkout, documentation access token or UDIOT_SOURCE variable is needed. Documentation is local to this repository in content/docs/.

Author and verify

Add Markdown under content/docs/; the build generates navigation, headings, sanitized HTML, a local search index and SEO pages. README.md maps to its directory route; for example api/README.md becomes /docs/api. Use relative Markdown links between guides. Missing local targets and duplicate routes fail the build. Tests check generated links, assets and heading fragments.

Keep current framework metadata in content/framework.json aligned with the installed package and app.mjs. Validate public imports and executable guide examples from the framework checkout using npm run test:docs; the website's own tests cover rendering, public output isolation and fixed interactive demos.

lib/ renders pages and demos, client/ progressively enhances controls, public/ holds static assets and build/ invokes the framework generator. dist/ and .generated/ are disposable. archives/, .planning/, .nexpec/, source code and credentials are never public assets.

Deploy

Build and test the exact reviewed checkout before deployment:

npm ci
npm run build
npm test
NODE_ENV=production HOST=0.0.0.0 PORT=3000 npm start

Retain dist/, package.json, the lockfile, app.mjs, server.mjs, lib/ and installed production dependencies in the server image. The running server does not need documentation source, a framework checkout, a database or provider credentials. Serve only dist/ as public assets. Configure HTTPS and domain DNS at the hosting provider. The verification workflow builds an artifact; it does not deploy a site or configure DNS.

Static hosting supports documentation, search and browser examples. The DI example requires the Node server. Apply dist/redirects.json and a real 404 response on a static host. Legacy examples, about, community, blog, quickstart and style-guide routes have generated redirect pages.

VPS installation

The shared VPS runs this site independently of tagna.in. The deployment files under deploy/ define a dedicated udiot-site service account, systemd unit udiot-in.service, loopback listener 127.0.0.1:3101, and a domain-specific Nginx virtual host. Nginx forwards one trusted proxy hop; the server accepts TRUST_PROXY_HOPS=1 in that deployment.

Package only dist/, lib/, app.mjs, server.mjs, package metadata/lockfile and deploy/ from a verified build. Do not include .env, credentials, archives, planning records or the repository root. The installer validates the archive hash, installs locked production dependencies without lifecycle scripts, activates a release under /srv/udiot.in/releases/, and checks readiness before adding this site's Nginx route. A failed app startup restores the previous release when available.

Point the apex A record at the shared VPS and www at the apex. Complete registrar verification before relying on DNS. Once public DNS resolves, issue the certificate using the VPS's existing Certbot account and webroot at /srv/udiot.in/acme, then activate deploy/nginx-https.conf after nginx -t. Keep an automatic renewal hook that validates and reloads Nginx. HTTPS redirects both the HTTP domain and www to https://udiot.in.

The website lockfile includes patched transitive dependencies. A scoped @grpc/grpc-js override currently selects 1.13.6 because the installed Firebase dependency otherwise selects an affected older line. Recheck the override against upstream dependency updates and require a fresh audit and website tests before removing it.

Smoke checks and rollback

Check /, /docs, /playground, /api/playground/di?scope=scoped, /health/live, /health/ready and a nonexistent path returning HTTP 404. Verify desktop/mobile navigation, search, code copying, examples, keyboard focus and readable guides with JavaScript disabled. Inputs are bounded data for fixed examples; the playground does not execute arbitrary submitted code. Follow the detailed browser verification checklist.

Restore a previously verified commit and lockfile, rebuild and restart to roll back. There are no data migrations.

RC.1 replaces document-shell assets when producing an SEO head. The build currently completes the generated head with local stylesheet, favicon and script tags. Keep this compatibility step until a reviewed framework upgrade preserves those tags; HTTP tests guard the generated result.

From the canonical UDIOT public documentation.Try it in the playground ↗