The previous local-only edit appended a working sk-proj-* key in plain text. Replaced with a placeholder referencing the Odoo `encoach_ai.openai_api_key` config parameter (the actual storage). The visible key should be rotated. Made-with: Cursor
10 KiB
10 KiB
EnCoach - Complete Credentials Inventory
Extracted From: Cloud Run service environment variables (plaintext) Date: March 8, 2026
IMPORTANT: All credentials below were found stored as plaintext environment variables in Cloud Run service configurations. They are NOT in Secret Manager, NOT in .env files, and NOT in the code repos. They were set directly during deployment.
1. AI Service Keys
| Variable | Value | Service | Used By |
|---|---|---|---|
OPENAI_API_KEY |
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 |
OpenAI (GPT-4o, GPT-3.5) | ielts-be (prod + staging) |
AWS_ACCESS_KEY_ID |
AKIAXXT434IN3J7YQQ66 |
AWS Polly (TTS) | ielts-be (prod + staging) |
AWS_SECRET_ACCESS_KEY |
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 |
AWS Polly (TTS) | ielts-be (prod + staging) |
ELAI_TOKEN |
KtzxETdcZesZtwl7JKiYQapRvp0b4zMG |
ELAI (avatar videos) | ielts-be (prod + staging) |
GPT_ZERO_API_KEY |
0195b9bb24c5439899f71230809c74af |
GPTZero (AI detection) | ielts-be (prod + staging) |
HEY_GEN_TOKEN |
MjY4MDE0MjdjZmNhNDFmYTlhZGRkNmI3MGFlMzYwZDItMTY5NTExNzY3MA== |
HeyGen (legacy) | ielts-be (prod + staging) |
ELEVENLABS_API_KEY |
sk_01190f3d023f6abe585d2bae06557cf4e4b9e1cf257d4732 |
ElevenLabs (TTS) | ielts-be (staging only) |
ELEVENLABS_MODEL |
eleven_multilingual_v2 |
ElevenLabs model | ielts-be (staging only) |
TTS_PROVIDER |
elevenlabs |
TTS provider selector | ielts-be (staging only) |
2. Database Credentials
| Variable | Value | Service | Used By |
|---|---|---|---|
MONGODB_URI |
mongodb+srv://user:JKpFBymv0WLv3STj@encoach.3ydyg.mongodb.net/?retryWrites=true&w=majority&appName=EnCoach |
MongoDB Atlas | All services |
MONGODB_DB (prod) |
production |
MongoDB database name | ielts-be, ielts-ui (prod) |
MONGODB_DB (staging) |
staging |
MongoDB database name | ielts-be, ielts-ui (staging) |
DATABASE_HOST |
34.77.91.43 |
MySQL (CMS) | encoach-cms |
DATABASE_NAME |
encoach |
MySQL database | encoach-cms |
DATABASE_USERNAME |
root |
MySQL user | encoach-cms |
DATABASE_PASSWORD |
VN*n1yVLxswU |
MySQL password | encoach-cms |
DATABASE_URL |
jdbc:mysql://34.77.91.43:3306/ |
MySQL connection | encoach-cms |
3. Authentication & Security Keys
| Variable | Value | Service | Used By |
|---|---|---|---|
JWT_SECRET_KEY |
6e9c124ba92e8814719dcb0f21200c8aa4d0f119a994ac5e06eb90a366c83ab2 |
Backend JWT | ielts-be |
JWT_TEST_TOKEN |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0In0.Emrs2D3BmMP4b3zMjw0fJTPeyMwWEBDbxx2vvaWguO0 |
Backend test JWT | ielts-be |
BACKEND_JWT |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0In0.Emrs2D3BmMP4b3zMjw0fJTPeyMwWEBDbxx2vvaWguO0 |
Frontend→Backend JWT | ielts-ui |
SECRET_COOKIE_PASSWORD |
S2NrN2aBBYCpFpULvK2vDPFwsPbixAH6 |
iron-session cookie | ielts-ui |
ADMIN_JWT_SECRET |
aM9l2NPCbOlIBBfGfWAJAw== |
Strapi admin JWT | encoach-cms |
JWT_SECRET |
hexTrI8hLY8k5syUSucXcg== |
Strapi public JWT | encoach-cms |
APP_KEYS |
qLCKRYNICu/zsCYF566pEQ==,SbgGbzHLzVih3yY/bCvG9w==,xJ27/S+YudYyftTuqPRG8g==,dMDRY3LHbBOLavygMJIeNg== |
Strapi app keys | encoach-cms |
API_TOKEN_SALT |
OWtKC1U80X18NIFBUpJV0A== |
Strapi API token salt | encoach-cms |
TRANSFER_TOKEN_SALT |
qTWhsKJZK/Z2X0hDPtvCPA== |
Strapi transfer token | encoach-cms |
4. Firebase Credentials
Production
| Variable | Value | Used By |
|---|---|---|
FIREBASE_PUBLIC_API_KEY |
AIzaSyCdD3xqz5-25ZuRU_Tm2W7tBY9FtWCIfRU |
ielts-ui (prod) |
FIREBASE_AUTH_DOMAIN |
storied-phalanx-349916.firebaseapp.com |
ielts-ui (prod) |
FIREBASE_STORAGE_BUCKET |
storied-phalanx-349916.appspot.com |
ielts-ui, ielts-be (prod) |
FIREBASE_PROJECT_ID |
storied-phalanx-349916 |
ielts-ui, ielts-be (prod) |
FIREBASE_MESSAGING_SENDER_ID |
785091389226 |
ielts-ui (prod) |
FIREBASE_APP_ID |
1:785091389226:web:77cab7f4990c76aa0d2053 |
ielts-ui (prod) |
FIREBASE_CLIENT_EMAIL |
tiago.ribeiro@ecrop.dev |
ielts-ui (prod) |
FIREBASE_CREDENTIALS |
/app/firebase-configs/storied-phalanx-349916.json |
ielts-be (prod) |
FIREBASE_SCRYPT_B64_SIGNER_KEY |
vbO3Xii2lajSeSkCstq3s/dCwpXP7J2YN9rP/KRreU2vGOT1fg+wzSuy1kIhBECqJHG82tmwAilSxLFFtNKVMA== |
ielts-ui, ielts-be (prod) |
FIREBASE_SCRYPT_B64_SALT_SEPARATOR |
Bw== |
ielts-ui, ielts-be (prod) |
FIREBASE_SCRYPT_ROUNDS |
8 |
ielts-ui, ielts-be (prod) |
FIREBASE_SCRYPT_MEM_COST |
14 |
ielts-ui, ielts-be (prod) |
Staging
| Variable | Value | Used By |
|---|---|---|
FIREBASE_PUBLIC_API_KEY |
AIzaSyB1HDuvYOX18ZxpSgi2PmmVOaUu49CNYws |
ielts-ui (staging) |
FIREBASE_AUTH_DOMAIN |
encoach-staging.firebaseapp.com |
ielts-ui (staging) |
FIREBASE_STORAGE_BUCKET |
encoach-staging.appspot.com |
ielts-ui, ielts-be (staging) |
FIREBASE_PROJECT_ID |
encoach-staging |
ielts-ui, ielts-be (staging) |
FIREBASE_MESSAGING_SENDER_ID |
1078696515702 |
ielts-ui (staging) |
FIREBASE_APP_ID |
1:1078696515702:web:b8a5518dac09cf6e366757 |
ielts-ui (staging) |
FIREBASE_CREDENTIALS |
/app/firebase-configs/encoach-staging.json |
ielts-be (staging) |
FIREBASE_SCRYPT_B64_SIGNER_KEY |
qjo/b5U5oNxA8o+PHFMZx/ZfG8ZQ7688zYmwMOcfZvVjOM6aHe4Jf270xgyrVArqLIQwFi7VkFnbysBjueMbVw== |
ielts-ui, ielts-be (staging) |
5. Payment Gateway Credentials
Paymob (Production)
| Variable | Value | Used By |
|---|---|---|
PAYMOB_API_KEY |
ZXlKaGJHY2lPaUpJVXpVeE1pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmpiR0Z6Y3lJNklrMWxjbU5vWVc1MElpd2ljSEp2Wm1sc1pWOXdheUk2T1RFM0xDSnVZVzFsSWpvaWFXNXBkR2xoYkNKOS5HMnJTZXJ2WHR1UUEyNWVQN0tvTDBHaHJaUmM3VWx5RHhmV0huRDRPbkZpVExyV0xicnUzeVZSYXk2ZENqTnpXS1duWmJoZ2RYcUgwSGxnWkNUTi1aQQ== |
ielts-ui (prod) |
PAYMOB_PUBLIC_KEY |
omn_pk_live_BkKVov5VSuLtTIqgcfya39ucEDcnX35l |
ielts-ui (prod) |
PAYMOB_SECRET_KEY |
omn_sk_live_a669c50ebabb3d5c88135eee070a507258a7d10522214de89c123a4a5b25fd22 |
ielts-ui (prod) |
PAYMOB_INTEGRATION_ID |
1620 |
ielts-ui (prod) |
Paymob (Staging / Test)
| Variable | Value | Used By |
|---|---|---|
PAYMOB_PUBLIC_KEY |
omn_pk_test_Oh9XcYe589i5FqXHLZ7yZGUkF2M8Vf55 |
ielts-ui (staging) |
PAYMOB_SECRET_KEY |
omn_sk_test_ee1e6e3f149b481f9b943334c680b7c3fa27e8f1800e111aae45cc829c92f8e5 |
ielts-ui (staging) |
PAYMOB_INTEGRATION_ID |
1540 |
ielts-ui (staging) |
Stripe (Landing Page)
| Variable | Value | Used By |
|---|---|---|
STRIPE_KEY |
pk_test_51NzD5xFI67mXFum2XDMXiLu89SbCAMY5O0RnKjlU6XqyfboRVvFHI3f5OJHaxsrjjB7WqDYqN7Y3eF8mq3sF354F00l30L5GuJ |
encoach-landing-page |
STRIPE_SECRET |
sk_test_51NzD5xFI67mXFum2Lzi2JtR8Th9zuA3CnoKKkAaOBiHmiHDQdGt7Pruj1Z89e4nF5eVNStL866twJLoVBUgfiaxZ00yqst8gkh |
encoach-landing-page |
STRIPE_PRICING_TABLE |
prctbl_1O0hFcFI67mXFum2kEqiD57r |
encoach-landing-page |
6. Email / SMTP Credentials
| Variable | Value | Used By |
|---|---|---|
MAIL_USER |
noreply@encoach.com |
ielts-ui |
MAIL_PASS |
sovlwwwqvnenladl |
ielts-ui |
SMTP_HOST |
smtp.gmail.com |
ielts-ui |
7. CMS / Strapi Integration
| Variable | Value | Used By |
|---|---|---|
STRAPI_URL |
https://encoach-cms-zrwipjl2nq-ew.a.run.app |
encoach-landing-page |
STRAPI_TOKEN |
1adf65151d6c8bf7491f4162d504dc9063ae750399fe8d4c841af20d2b3f8a3fbc6206ecb63bb9e9cbb9a00baac73a8547772ab0f16f0f7d04f4201f04ef72f9a2cb37fbadf5c347d8243a6733ac21589364e76b2fb5309386cb5aec52244f633b26d04faad5aca355df728200c86089d65e4162658a5b37ec1a6730d36fa383 |
encoach-landing-page |
GCS_BUCKET_NAME |
encoach-cms-media |
encoach-cms |
GCS_SERVICE_ACCOUNT |
(base64-encoded GCP service account JSON with private key) | encoach-cms |
8. Internal Service URLs
| Variable | Value | Used By |
|---|---|---|
BACKEND_URL (prod) |
https://ielts-be-zrwipjl2nq-ew.a.run.app/api |
ielts-ui (prod) |
BACKEND_URL (staging) |
https://ielts-be-zrwipjl2nq-zf.a.run.app/api |
ielts-ui (staging) |
WEBSITE_URL |
https://encoach.com |
ielts-ui |
NEXT_PUBLIC_APP_URL |
https://platform.encoach.com |
encoach-landing-page |
WEBHOOK_URL |
https://encoach.com/api/stripe |
encoach-landing-page |
DATABASE_URL |
jdbc:mysql://34.77.91.43:3306/ |
encoach-cms |
9. Application Config (Non-Secret)
| Variable | Value | Used By |
|---|---|---|
ENVIRONMENT (prod) |
platform |
ielts-ui (prod) |
ENVIRONMENT (staging) |
staging |
ielts-ui (staging) |
PDF_VERSION (prod) |
1.1.0 |
ielts-ui (prod) |
PDF_VERSION (staging) |
1.0.7 |
ielts-ui (staging) |
EXCEL_VERSION |
0.0.1 |
ielts-ui |
HOST |
0.0.0.0 |
encoach-cms |
Where Each Service Gets Its Keys
| Cloud Run Service | Region | Environment | Key Categories |
|---|---|---|---|
| ielts-be | europe-west1 | Production | AI keys, AWS, DB, Firebase, JWT |
| ielts-be | me-west1 | Staging | AI keys, AWS, DB, Firebase, JWT, ElevenLabs |
| ielts-ui | europe-west1 | Production | DB, Firebase, Paymob (live), SMTP, JWT |
| ielts-ui | us-central1 | Staging | DB, Firebase (staging), Paymob (test), SMTP, JWT |
| encoach-frontend-staging | me-central1 | Staging | DB, Firebase (staging), Paymob (test), SMTP, JWT |
| encoach-cms | europe-west1 | Production | MySQL, Strapi JWT, GCS service account |
| encoach-landing-page | europe-west1 | Production | Stripe (test), Strapi token |
Notes
- Production and staging share the same OpenAI, AWS, ELAI, and GPTZero keys — there is no separation of API keys between environments.
- Production and staging share the same MongoDB Atlas cluster (
encoach.3ydyg.mongodb.net) — only the database name differs (productionvsstaging). - The Stripe keys on the landing page are test keys (
pk_test_,sk_test_) even in the production deployment. - The
BACKEND_JWTandJWT_TEST_TOKENare identical — the same test JWT is used for frontend-to-backend auth and for testing. - The
GCS_SERVICE_ACCOUNTin encoach-cms contains a full GCP service account private key encoded in base64. - The
FIREBASE_CLIENT_EMAILreferencestiago.ribeiro@ecrop.dev— a developer's email from the previous development team.
openai_key: <REDACTED — stored in Odoo ir.config_parameter key encoach_ai.openai_api_key. Rotate at https://platform.openai.com/account/api-keys if exposed.>