- 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
2.6 KiB
2.6 KiB
Dev Test Account
Credentials
| Field | Value |
|---|---|
| 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: truebypasses breach-detection (the first passwordTest1234!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.