stack/examples/convex
Bilal Godil 178b5c5a8c chore: rename STACK_* env vars to HEXCLAVE_* in env templates, with legacy dual-read
Renames every STACK_*-prefixed variable (including NEXT_PUBLIC_STACK_*) to
HEXCLAVE_* across all checked-in .env, .env.development, and .env.example
files, completing the env-var side of the Hexclave rebrand. Legacy STACK_*
names keep working everywhere so existing deployments, .env.local files, and
self-hosted setups don't need immediate migration:

- getEnvVariable already prefers HEXCLAVE_* with STACK_* fallback; fix it to
  treat empty-string values as unset so the empty HEXCLAVE_* placeholders in
  the checked-in templates can't shadow a real value under the legacy name.
- Apply the same empty-as-unset rule (|| instead of ??) to all literal
  process.env dual-reads (dashboard inline env, docs, examples, CLI) and to
  the generated SDK env getter chains via packages/template generate-env.ts.
- Add explicit HEXCLAVE_* || STACK_* dual-reads to direct process.env readers
  fed by the renamed files: prisma seed, e2e tests/helpers, internal-tool
  scripts and app, demo/convex examples.
- docker/server/entrypoint.sh: add a generic two-way HEXCLAVE_/STACK_ env
  mirror (run at startup and again before sentinel replacement), replacing the
  previous URL-trio-only mirror; accept legacy NEXT_PUBLIC_STACK_PORT_PREFIX;
  rotate-secrets.sh falls back to HEXCLAVE_DATABASE_CONNECTION_STRING.
- e2e cross-domain-auth and the internal-feedback-emails in-source test now
  override the canonical HEXCLAVE_* names (the legacy override would be
  shadowed by the renamed env files).
- docs/code-examples snippets renamed outright to the canonical names.
2026-06-11 16:23:50 -07:00
..
app feat(hexclave): PR 5 — internal symbol/path/package renames + brand strings (#1547) 2026-06-03 18:57:09 -07:00
components feat(hexclave): PR 5 — internal symbol/path/package renames + brand strings (#1547) 2026-06-03 18:57:09 -07:00
convex chore: rename STACK_* env vars to HEXCLAVE_* in env templates, with legacy dual-read 2026-06-11 16:23:50 -07:00
hexclave feat(hexclave): PR 5 — internal symbol/path/package renames + brand strings (#1547) 2026-06-03 18:57:09 -07:00
public Convex implementation (#913) 2025-09-24 19:16:45 +00:00
.env.development chore: rename STACK_* env vars to HEXCLAVE_* in env templates, with legacy dual-read 2026-06-11 16:23:50 -07:00
.eslintrc.js Upgrade ESLint 2026-02-27 10:58:28 -08:00
.gitignore convex example testing (#943) 2025-10-15 15:50:04 -07:00
globals.css Convex README 2025-10-10 04:27:05 -07:00
next.config.ts Convex implementation (#913) 2025-09-24 19:16:45 +00:00
package.json chore: update package versions 2026-06-11 17:19:24 +00:00
postcss.config.mjs Convex README 2025-10-10 04:27:05 -07:00
README.md Convex implementation (#913) 2025-09-24 19:16:45 +00:00
tailwind.config.js feat(hexclave): PR 3 — native @hexclave/* source rename + delete dual-publish wiring (#1482) 2026-05-29 15:21:59 -07:00
tsconfig.json Convex implementation (#913) 2025-09-24 19:16:45 +00:00

Welcome to your Convex + Next.js app

This is a Convex project created with npm create convex.

After the initial setup (<2 minutes) you'll have a working full-stack app using:

  • Convex as your backend (database, server logic)
  • React as your frontend (web page interactivity)
  • Next.js for optimized web hosting and page routing
  • Tailwind for building great looking accessible UI

Get started

If you just cloned this codebase and didn't use npm create convex, run:

npm install
npm run dev

If you're reading this README on GitHub and want to use this template, run:

npm create convex@latest -- -t nextjs

Learn more

To learn more about developing your project with Convex, check out:

  • The Tour of Convex for a thorough introduction to Convex principles.
  • The rest of Convex docs to learn about all Convex features.
  • Stack for in-depth articles on advanced topics.

Join the community

Join thousands of developers building full-stack apps with Convex: