Files
docs/dev-test-account.md
-Puter e6685203fe feat: initial docs repo with project inventory and all documentation
- Added REPO_INVENTORY.md with all repos, branches, remotes, and staging info
- Added .gitignore
- Synced all existing docs from local workspace
- Centralized documentation hub for GrowQR team
2026-06-22 15:04:27 +05:30

2.6 KiB

Dev Test Account

Credentials

Field Value
Email test@test.com
Password Violet-Mountain-97!qR
User ID user_3EXAwsYrQ6WtQgxjaJtxVTEWYqz

How the account was created

1. Create user in Clerk

cd growqr-next-frontend

node - <<'NODE'
const { createClerkClient } = require("@clerk/backend");
const fs = require("fs");
const secretKey = fs.readFileSync(".env.local", "utf8").match(/^CLERK_SECRET_KEY=(.*)$/m)[1].trim();
const clerk = createClerkClient({ secretKey });

(async () => {
  const email = "test@test.com";
  const password = "Violet-Mountain-97!qR";
  const existing = await clerk.users.getUserList({ emailAddress: [email] });
  if (existing.data?.[0]) {
    console.log("already exists:", existing.data[0].id);
    return;
  }
  const user = await clerk.users.createUser({
    emailAddress: [email],
    password,
    firstName: "Test",
    lastName: "User",
    skipPasswordChecks: true,
  });
  console.log("created:", user.id, email);
})();
NODE

2. Mirror user into local Postgres

cd growqr-backend

docker compose exec -T postgres psql -U growqr -d growqr -c \
  "INSERT INTO users (id, email, display_name)
   VALUES ('user_3EXAwsYrQ6WtQgxjaJtxVTEWYqz', 'test@test.com', 'Test User')
   ON CONFLICT (id) DO UPDATE SET email = EXCLUDED.email, display_name = EXCLUDED.display_name, updated_at = now();"

Logging in without email verification (dev token)

Clerk enforces email verification on sign-in. For dev, generate a sign-in token and open it directly in the browser:

cd growqr-next-frontend

TOKEN=$(node -e '
const { createClerkClient } = require("@clerk/backend");
const fs = require("fs");
const secretKey = fs.readFileSync(".env.local", "utf8").match(/^CLERK_SECRET_KEY=(.*)$/m)[1].trim();
const clerk = createClerkClient({ secretKey });
(async () => {
  const userId = (await clerk.users.getUserList({ emailAddress: ["test@test.com"] })).data[0].id;
  const t = await clerk.signInTokens.createSignInToken({ userId, expiresInSeconds: 3600 });
  process.stdout.write(t.token);
})();
')

open "http://localhost:3000/auth/signin?__clerk_ticket=$TOKEN"

This signs in as Test User and redirects to /v2.

Notes

  • Clerk is in development mode (test instance: noted-elephant-23).
  • skipPasswordChecks: true bypasses breach-detection (the first password Test1234! was rejected as compromised).
  • The sign-in token flow avoids the email code verification step entirely.
  • Token expires after 1 hour; re-run the command to get a fresh one.