Complete Odoo 19 backend with 25 custom addons: - encoach_core: user/entity/role management - encoach_api: REST API + JWT auth - encoach_ai: OpenAI integration, AI settings, generation - encoach_ai_course: AI-powered English & IELTS course generation - encoach_exam_template/session: exam creation, structures, sessions - encoach_scoring: AI auto-grading + manual approval - encoach_vector: pgvector RAG integration - encoach_adaptive: adaptive learning engine - encoach_placement: placement testing - encoach_taxonomy/resources: content taxonomy & resource management - Plus 14 more modules for courses, branding, portal, etc. Includes docs: user guide, generation report, developer workflow. Made-with: Cursor
156 lines
4.5 KiB
Plaintext
156 lines
4.5 KiB
Plaintext
|
||
|
||
|
||
# Developer Workflow Manual — EnCoach Backend & Frontend
|
||
|
||
## One-Time Setup (Do This Once)
|
||
|
||
**Step 1 — Clone the repositories**
|
||
```bash
|
||
git clone https://git.albousalh.com/devops/encoach_backend_new_v2.git
|
||
git clone https://git.albousalh.com/devops/encoach_frontend_new_v2.git
|
||
```
|
||
|
||
**Step 2 — Switch to the working branch**
|
||
```bash
|
||
cd encoach_backend_new_v2
|
||
git checkout full_stack_dev
|
||
|
||
cd ../encoach_frontend_new_v2
|
||
git checkout full_stack_dev
|
||
```
|
||
|
||
**Step 3 — Install the `tea` CLI (to open PRs from terminal)**
|
||
```bash
|
||
# macOS
|
||
brew install tea
|
||
|
||
# Or download directly:
|
||
# https://gitea.com/gitea/tea/releases
|
||
|
||
# Configure it (run once):
|
||
tea login add --name encoach --url https://git.albousalh.com --token YOUR_TOKEN
|
||
```
|
||
> To get your token: log in at `https://git.albousalh.com` → top-right avatar → Settings → Applications → Generate Token.
|
||
|
||
---
|
||
|
||
## Every Day — Starting Work
|
||
|
||
**Step 4 — Always pull the latest before coding**
|
||
```bash
|
||
git checkout full_stack_dev
|
||
git pull origin full_stack_dev
|
||
```
|
||
> This makes sure you have the latest code before making changes.
|
||
|
||
---
|
||
|
||
## Making Changes
|
||
|
||
**Step 5 — Make your code changes locally**
|
||
|
||
Work as normal in your editor. No restrictions on what you change.
|
||
|
||
**Step 6 — If you add a new Python package**, add it to `new_project/requirements.txt`:
|
||
```
|
||
openai>=1.50
|
||
your-new-package>=x.x
|
||
```
|
||
|
||
**Step 7 — If you add a new Odoo addon**, place it under `new_project/custom_addons/your_module/` and make sure:
|
||
- The `__manifest__.py` lists **all** modules you reference via `comodel_name=` in its `depends` list.
|
||
- Notify Talal — new addons need a one-time manual install on the server (see end of this doc).
|
||
|
||
---
|
||
|
||
## Pushing Your Work
|
||
|
||
**Step 8 — Stage and commit your changes**
|
||
```bash
|
||
git add .
|
||
git commit -m "Short description of what you changed"
|
||
```
|
||
|
||
**Step 9 — Push to your working branch**
|
||
```bash
|
||
git push origin full_stack_dev
|
||
```
|
||
|
||
**Step 10 — Open a Pull Request** (asks Talal for review/approval)
|
||
```bash
|
||
tea pr create \
|
||
--repo devops/encoach_backend_new_v2 \
|
||
--head full_stack_dev \
|
||
--base main \
|
||
--title "Brief title of your changes" \
|
||
--description "What you changed and why"
|
||
```
|
||
> For frontend, replace `encoach_backend_new_v2` with `encoach_frontend_new_v2`.
|
||
|
||
**Step 11 — Notify Talal** that a PR is waiting for his review.
|
||
|
||
---
|
||
|
||
## After Talal Approves & Merges
|
||
|
||
**Step 12 — Deployment is fully automatic.** You do not need to do anything on the server.
|
||
|
||
What happens behind the scenes:
|
||
1. Talal merges the PR on `https://git.albousalh.com`
|
||
2. The server detects the merge to `main`
|
||
3. The deploy script pulls the latest code
|
||
4. Docker rebuilds the image (if `Dockerfile` or `requirements.txt` changed — takes ~10–15 min; otherwise ~1 min)
|
||
5. The container restarts with the new code
|
||
|
||
**Step 13 — Verify it worked** by checking the live URL:
|
||
- Frontend: `http://5.189.151.117:3000`
|
||
- Backend API: `http://5.189.151.117:8069/api/login`
|
||
|
||
---
|
||
|
||
## Checking Logs If Something Goes Wrong
|
||
|
||
SSH into the server (ask Talal for credentials) and run:
|
||
```bash
|
||
# Backend logs
|
||
docker logs backend-v2-odoo --tail 50
|
||
|
||
# Frontend logs
|
||
docker logs encoach-frontend --tail 50
|
||
```
|
||
|
||
---
|
||
|
||
## Special Case: Adding a New Odoo Addon
|
||
|
||
New addons need a **one-time manual install** on the server (the database doesn't know about them yet). Tell Talal and he will run:
|
||
```bash
|
||
ssh root@5.189.151.117
|
||
docker stop backend-v2-odoo
|
||
docker run --rm \
|
||
--network backend-v2_default \
|
||
-v /opt/encoach/backend-v2/odoo-docker.conf:/etc/odoo/odoo.conf:ro \
|
||
-v /opt/encoach/backend-v2/new_project/custom_addons:/mnt/custom_addons:ro \
|
||
-v /opt/encoach/backend-v2/new_project/enterprise-19:/mnt/enterprise:ro \
|
||
-v /opt/encoach/backend-v2/new_project/openeducat_erp-19.0:/mnt/openeducat:ro \
|
||
-v odoo-web-data:/var/lib/odoo \
|
||
encoach-backend:latest \
|
||
odoo -c /etc/odoo/odoo.conf -d encoach_v2 -i your_new_module --stop-after-init
|
||
docker start backend-v2-odoo
|
||
```
|
||
> After the first install, all future deploys update it automatically.
|
||
|
||
---
|
||
|
||
## Quick Reference
|
||
|
||
| Action | Command |
|
||
|---|---|
|
||
| Pull latest | `git pull origin full_stack_dev` |
|
||
| Commit | `git add . && git commit -m "message"` |
|
||
| Push | `git push origin full_stack_dev` |
|
||
| Open PR (backend) | `tea pr create --repo devops/encoach_backend_new_v2 --head full_stack_dev --base main --title "..."` |
|
||
| Open PR (frontend) | `tea pr create --repo devops/encoach_frontend_new_v2 --head full_stack_dev --base main --title "..."` |
|
||
| View logs (backend) | `docker logs backend-v2-odoo --tail 50` |
|
||
| View logs (frontend) | `docker logs encoach-frontend --tail 50` | |