Frontend - i18n: install tailwindcss-rtl, Cairo font, RTL-aware direction in index.css. - Language toggle: localize aria-label / menu label, persist choice, update document dir synchronously. - Sidebar: add `side` prop so the drawer pins to the right in RTL; wire up AdminLmsLayout, RoleLayout (student/teacher) and AppSidebar to pass side = i18n.dir() === 'rtl' ? 'right' : 'left'. - AdminLmsLayout: convert every nav item from hard-coded title to titleKey, translate group labels (incl. the collapsible Training), breadcrumbs, user menu (Profile / Settings / Logout), help button and toggle aria labels; replace physical mr-/right- utilities with logical me-/end-. - AI components (AiTipBanner, AiInsightsPanel, AiAlertBanner, AiSearchBar, AiAssistantDrawer): apply dir="auto" at the container level, localize titles, loading / error / empty states. - Dashboards (admin / student / teacher): wrap numeric values in <bdi>, localize dates via ar-EG, fix flex direction for KPI and assignment cards. - UI primitives (breadcrumb, calendar, carousel, dropdown-menu, menubar, context-menu, pagination, sidebar): flip chevrons in RTL via a scoped CSS rule, swap pl-/pr-/ml-/mr- for ps-/pe-/ms-/me-. - Add logical-direction helpers and bidirectional isolation classes. Locales - Expand en.ts and ar.ts with full `nav`, `sidebarGroup`, `breadcrumb`, `userMenu`, `chrome`, `ai`, and dashboard key sets; keep key parity. API client - `api-client.ts` reads the active language from localStorage/i18n and sends `Accept-Language` on every request so the backend can localize AI output. Backend (encoach_ai) - openai_service: add _LANGUAGE_NAMES, normalize_language, language-aware system prompt injection for every OpenAI call. - coach_service + controllers (coach_controller, ai_controller): thread the requested language from headers / user locale down to OpenAIService. - ai_feedback: fix latent registry error by pointing course_id at op.course instead of the non-existent encoach.course. Other - .gitignore: ignore runtime odoo logs and local caches. Made-with: Cursor
111 lines
1.4 KiB
Plaintext
111 lines
1.4 KiB
Plaintext
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
*.egg-info/
|
|
*.egg
|
|
dist/
|
|
build/
|
|
eggs/
|
|
*.whl
|
|
|
|
# Virtual environments & conda
|
|
venv/
|
|
.venv/
|
|
env/
|
|
miniconda3/
|
|
.conda-envs/
|
|
.conda-pkgs/
|
|
|
|
# PostgreSQL data
|
|
pgdata/
|
|
pgdata_bak_*/
|
|
|
|
# Frontend build cache
|
|
frontend/.vite/
|
|
frontend/dist/
|
|
frontend/node_modules/
|
|
|
|
# IDE
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Environment / secrets — never commit
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
*.pem
|
|
*.key
|
|
|
|
# Frontend (pushed separately)
|
|
new_project/encoach_frontend_new_v1/
|
|
|
|
# Large archives / zips
|
|
*.zip
|
|
*.tar.gz
|
|
*.tar.bz2
|
|
|
|
# Logs
|
|
*.log
|
|
odoo.log
|
|
|
|
# Docker
|
|
*.tar
|
|
|
|
# Node modules
|
|
node_modules/
|
|
frontend/node_modules/
|
|
|
|
# Local dev artifacts
|
|
miniconda3/
|
|
pgdata/
|
|
.conda-envs/
|
|
.conda-pkgs/
|
|
|
|
# Odoo core source (cloned separately)
|
|
odoo/
|
|
|
|
# Local Odoo config and data
|
|
odoo.conf
|
|
/data/
|
|
|
|
# Session files
|
|
sessions/
|
|
|
|
# Filestore
|
|
filestore/
|
|
|
|
# Enterprise / extra addons (not part of this repo)
|
|
addons_enterprise/
|
|
addons_extra/
|
|
new_project/enterprise-17/
|
|
|
|
# Third-party modules (downloaded separately)
|
|
new_project/openeducat_erp-19.0/
|
|
backend/openeducat_erp-19.0/
|
|
new_project/openeducat_erp-19.0.zip
|
|
new_project/openeducate_enterprise-17.zip
|
|
new_project/encoach_frontend_new_v1-main.zip
|
|
|
|
# Local tools
|
|
new_project/.tools/
|
|
|
|
# Coverage / test output
|
|
.coverage
|
|
htmlcov/
|
|
.tox/
|
|
|
|
# Poetry
|
|
poetry.lock
|
|
|
|
# Odoo DB backups (local only, not source-controlled)
|
|
backups/
|