Full backend implementation with custom Odoo modules: - encoach_api: Core API, user management, JWT auth - encoach_exam: Exam generation (reading, writing, listening, speaking) - encoach_evaluate: AI-powered evaluation (writing, speaking) - encoach_training: Training tips and walkthrough - encoach_storage: File storage management - encoach_payment: Stripe, PayPal, Paymob integration - encoach_mail: Email notifications Made-with: Cursor
5.5 KiB
EnCoach AI & Service Keys Configuration
All API keys are stored as Odoo System Parameters (ir.config_parameter).
How to Set Keys
Via Odoo UI
- Login as
admin/adminat http://127.0.0.1:8069/web - Navigate to Settings > Technical > Parameters > System Parameters
- Search for
encoach.to filter all EnCoach keys - Click a parameter and paste your key into the Value field
- Save — changes take effect immediately (no restart needed)
Via Terminal
cd /Users/yamenahmad/projects2026/odoo/odoo19/odoo
../.conda-envs/odoo19/bin/python odoo-bin shell -c ../odoo.conf -d encoach <<'EOF'
params = env['ir.config_parameter'].sudo()
params.set_param('encoach.openai_api_key', 'sk-your-key-here')
params.set_param('encoach.aws_access_key_id', 'AKIA...')
params.set_param('encoach.aws_secret_access_key', 'your-aws-secret')
params.set_param('encoach.elai_token', 'your-elai-token')
params.set_param('encoach.gptzero_api_key', 'your-gptzero-key')
params.set_param('encoach.jwt_secret', 'a-strong-random-secret-256-bits')
env.cr.commit()
print("All keys set.")
EOF
Key Reference
Core
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.jwt_secret |
JWT signing secret for API authentication | Yes | Generate a random 256-bit string |
encoach.jwt_expiry_hours |
JWT token expiry in hours (default: 72) | No | Set any integer |
OpenAI (GPT-4o, Whisper)
Used by: Exam generation, writing/speaking evaluation, grading, training tips.
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.openai_api_key |
OpenAI API key | Yes | https://platform.openai.com/api-keys |
Models used:
gpt-4o— Exam generation, evaluation, grading, trainingwhisper-1— Audio transcription (speaking evaluation)
AWS (Polly TTS)
Used by: Listening exam audio generation, instruction audio.
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.aws_access_key_id |
AWS IAM Access Key ID | Yes | https://console.aws.amazon.com/iam/ |
encoach.aws_secret_access_key |
AWS IAM Secret Access Key | Yes | Same as above |
AWS services used:
- Amazon Polly — Text-to-speech for listening exam audio
- Region: Configured in
polly_service.py(default:us-east-1)
Required IAM permissions:
{
"Effect": "Allow",
"Action": ["polly:SynthesizeSpeech"],
"Resource": "*"
}
ELAI.io (Avatar Videos)
Used by: Speaking exam video generation with AI avatars.
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.elai_token |
ELAI API token | For speaking videos | https://elai.io/api |
GPTZero (Plagiarism Detection)
Used by: AI-generated content detection in writing submissions.
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.gptzero_api_key |
GPTZero API key | Optional | https://gptzero.me/api |
Stripe (Payments)
Used by: Subscription checkout.
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.stripe_secret_key |
Stripe secret key (sk_test_... or sk_live_...) |
For Stripe payments | https://dashboard.stripe.com/apikeys |
encoach.stripe_webhook_secret |
Stripe webhook signing secret (whsec_...) |
For webhooks | https://dashboard.stripe.com/webhooks |
PayPal (Payments)
Used by: Subscription checkout.
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.paypal_client_id |
PayPal REST API Client ID | For PayPal payments | https://developer.paypal.com/dashboard/applications |
encoach.paypal_client_secret |
PayPal REST API Client Secret | For PayPal payments | Same as above |
Paymob (Payments)
Used by: Subscription checkout (Middle East region).
| Parameter | Description | Required | Where to Get |
|---|---|---|---|
encoach.paymob_api_key |
Paymob API key | For Paymob payments | https://accept.paymob.com/portal2/en/settings |
Which Keys Are Needed for What
| Feature | Keys Required |
|---|---|
| User registration & login | jwt_secret |
| Generate reading/listening/writing/speaking exams | openai_api_key |
| Grade writing answers | openai_api_key |
| Grade speaking answers | openai_api_key |
| Generate listening audio (MP3) | aws_access_key_id + aws_secret_access_key |
| Transcribe audio (Whisper) | openai_api_key |
| Generate speaking avatar video | elai_token |
| Detect AI-generated content | gptzero_api_key |
| Personalised training tips | openai_api_key |
| Stripe payments | stripe_secret_key + stripe_webhook_secret |
| PayPal payments | paypal_client_id + paypal_client_secret |
| Paymob payments | paymob_api_key |
Minimum Setup (to test AI features)
For basic AI testing, you only need one key:
cd /Users/yamenahmad/projects2026/odoo/odoo19/odoo
../.conda-envs/odoo19/bin/python odoo-bin shell -c ../odoo.conf -d encoach <<'EOF'
env['ir.config_parameter'].sudo().set_param('encoach.openai_api_key', 'sk-your-openai-key')
env.cr.commit()
print("OpenAI key set.")
EOF
This enables: exam generation, writing evaluation, speaking evaluation (text grading), short-answer grading, and training tips.
Add AWS keys later for listening audio, ELAI for avatar videos, and payment keys when ready for subscriptions.