Deploying the website
Environment variables, storage and production checklist.
How to run uframework.com in production.
Requirements
- Node.js 20.9 or newer
- Optionally, PostgreSQL (recommended for any multi-instance deployment)
Environment variables
NEXT_PUBLIC_SITE_URL=https://uframework.com
# Dashboard authentication
CMS_SESSION_SECRET=<32+ random bytes, base64>
CMS_ADMIN_EMAIL=admin@yourdomain.com
CMS_ADMIN_PASSWORD_HASH=<bcrypt hash>
# Storage (optional; filesystem store in ./.data when unset)
DATABASE_URL=postgres://…
# Optional forwarding of briefs and subscriptions
CONTACT_WEBHOOK_URL=
RESEND_API_KEY=
CONTACT_TO_EMAIL=
CONTACT_FROM_EMAIL=
NEWSLETTER_WEBHOOK_URL=Generate the session secret and the admin password hash:
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
npm run cms:hash -- "a-long-unique-password"Storage
- Postgres when
DATABASE_URLis set. Tables are created automatically on first use. - Filesystem otherwise, in
./.data. Use only on a single server with a persistent disk, and include.datain backups.
On serverless platforms, always use Postgres — their filesystems are ephemeral.
Build and run
npm ci
npm run build
npm startChecklist
-
NEXT_PUBLIC_SITE_URLmatches the production domain (canonical URLs and the sitemap depend on it). - Session secret and admin hash are set; sign in once to create the administrator.
- Postgres configured, or
.dataon a persistent, backed-up disk. - Contact forwarding configured if the team should be notified by email.
- HTTPS enforced at the edge.