Reference Guide
Completed
simulation
eLearning App
Educator's Field Guide
A practical reference for building, segmenting, and tracking courses in Odoo 18 Community Edition — tailored for K–5 classroom deployments.
Contents
App Overview & Module Map
The eLearning module in Odoo 18 CE (internally named Slides) is a full-featured learning management system built into the Odoo ecosystem. It uses a Course → Section → Slide hierarchy and publishes content through Odoo's built-in website engine — meaning learners access material through a public or access-controlled web portal with no separate LMS installation required.
Module
Module
Module
Module
Users
Odoo's website module must be installed as the eLearning front-end renders through it. The Forums and Blog modules are optional companions that enhance discussion and content publishing workflows — both are covered in Sections 7 and 8.
Core menu path for course managers:
eLearning › Courses › [Course Name] › Slides
Quick-Start Workflow
Follow these steps in order the first time you set up the eLearning module for a classroom.
Install required modules
In Settings → Activate Developer Mode, go to Apps, search for eLearning and install it. Odoo will automatically install Website as a dependency. Optionally also install Forum and Website Blog.
Configure the Website
Navigate to Website → Configuration → Settings. Set a site name, confirm your domain (or use the Cloudflare tunnel hostname), and choose whether user registration is open or invite-only. For K–5, use invite-only or portal access only.
Create your first Course
Go to eLearning → Courses → New. Give it a name (e.g., "2nd Grade — Math Foundations"), set a cover image, assign tags, and configure visibility and enrollment settings (see Section 3 for full field reference).
Add Sections & Slides
Inside the course, click Add a Section to create topic groupings (e.g., "Week 1 — Counting", "Week 2 — Shapes"). Within each section, click Add a Slide to upload or embed content (see Section 4 for all supported formats).
Enroll learners
Use Members on the course record to manually add portal users (students/parents), or set Enrollment to Free and share the course URL. For classroom groups, use the On Invite setting and send email invitations from the course.
Publish the course
Click the Go to Website button from the course record, then use the top blue Unpublished → Published toggle to make the course live. Test the URL in a private browser window to verify learner-visible content before sharing.
Monitor progress
Return to eLearning → Courses and click into any course. Use the Members smart button to view per-student completion. Navigate to eLearning → Reporting → Course Statistics for aggregate dashboards.
Creating a Course (Channel)
In Odoo 18 CE the eLearning "Course" is also sometimes called a Channel in the URL and internal API — the terms are interchangeable. Below is a full reference for every field you'll encounter when creating or editing a course.
cap-K-math-f25
to echo the Odoo instance handling that school program, making reporting and
multi-instance management cleaner.
Slide Types & Accepted File Formats
Each piece of content within a course is called a Slide. When adding a slide, you first choose its type, which determines which upload or embed options appear. Below are all seven slide types available in Odoo 18 CE, followed by a full file-format reference table.
Article
Rich HTML text editor. Supports images inline, formatted text, links, tables, and embedded media via URL. Ideal for lesson notes, instructions, or reading passages.
Presentation
Upload a slide deck or link to Google Slides / Office Online. Renders slide-by-slide in the browser. Best for direct classroom instruction content.
Video
Embed a YouTube or Vimeo URL, or upload a video file directly. YouTube embeds are the most bandwidth-efficient option for community deployments.
Infographic
Single image slide. Use for diagrams, visual vocabulary, classroom posters, maps, or illustrated timelines. Scales to fit the viewport.
Document
Upload a static document for download or inline preview via the browser's built-in PDF viewer. Use for worksheets, reading packets, or reference sheets.
Web Content
Embed any external URL in an iframe. Use for interactive simulations (PhET, Scratch, Khan Academy), Google Forms quizzes, or approved web tools.
Certification
Built-in quiz engine with multiple-choice and open-answer questions. Pass/fail threshold configurable. Awards a certificate on success.
Complete File Format Reference
| Format / Extension | Slide Type | Notes for K–5 Use |
|---|---|---|
| Presentation Document | Most versatile format. PDFs from Canva, Google Slides export, or LibreOffice all work. Renders inline without student software. Recommended default. | |
| .pptx / .ppt | Presentation | Upload directly; Odoo converts for display. Animations may not render. Export to PDF first if transitions are important. |
| .odp | Presentation | LibreOffice Impress native format. Fully supported. Good choice for TurnKey Linux / open-source classroom builds. |
| .mp4 | Video | H.264 MP4 is the safest direct-upload choice. Keep files under 50 MB for smooth streaming on community networks. H.265/HEVC may not play in all browsers. |
| .webm | Video | Excellent for self-hosted deployments. Smaller file size than MP4. Supported in all modern Chromium and Firefox browsers. |
| .ogv | Video | Open-format Ogg video. Well-supported in open-source browser environments. Less common but fully valid in Odoo. |
| YouTube URL | Video | Paste full YouTube watch URL. Odoo extracts the embed automatically. Most bandwidth-efficient option. Note: requires outbound internet access from the student device. |
| Vimeo URL | Video | Same as YouTube. Vimeo Pro allows domain-restricted embeds for privacy — useful if hosting proprietary classroom video content. |
| Google Slides URL | Presentation | Use the "Publish to web" embed link from Google Slides. Auto-updates when the source changes — great for teachers who regularly revise content. |
| .png / .jpg / .jpeg | Infographic | Use for visual vocabulary cards, diagrams, maps, or illustrated instructions. PNG preferred for graphics with text; JPEG for photos. |
| .gif | Infographic | Animated GIFs play automatically. Useful for simple science animations or process loops (water cycle, metamorphosis stages). |
| .svg | Infographic | Resolution-independent vector graphics. Ideal for math diagrams and labeled illustrations that need to scale on any screen size. |
| .docx / .doc | Document | Word-format worksheets. Displayed via browser's download/preview flow. Consider converting to PDF for more consistent rendering across student devices. |
| .odt | Document | LibreOffice Writer format. Accepted as a document slide. Consistent with open-source TurnKey LAMP / LEMP stack deployments. |
| .txt | Document | Plain-text reading passages or code snippets for upper-elementary STEM electives. Minimal formatting; consider an Article slide instead for richer text layouts. |
| HTTPS URL (iframe) | Web Content | PhET Interactive Simulations, Scratch projects, Google Forms, Quizlet flashcard sets, Desmos activities. The target site must allow iframe embedding (check X-Frame-Options header). |
tag in the source view, or use a YouTube/Vimeo
URL pointing to an audio-visualizer video. For IIAB/offline deployments, direct HTML
audio embeds in Article slides work without internet access.
Content Segmentation for K–5
Effective segmentation lets you manage one Odoo instance across multiple classrooms while keeping each grade's content isolated. There are three complementary strategies — use one or combine them based on your deployment scale.
Strategy A — One Course per Grade + Subject
The simplest and most recommended approach for most deployments. Create a separate course for each grade-subject combination. Tags group them in the catalog.
Kindergarten & 1st Grade
- Short slides (≤5 min each)
- Infographic + Video type priority
- Large text, simple navigation
- Parent-monitored enrollment
- No karma / leaderboard display
2nd & 3rd Grade
- Presentation + Article slides
- Web Content for interactive tools
- 2–4 sections per course
- Simple Certification quizzes (5 Qs)
- Karma optional — fun badges
4th Grade
- All slide types appropriate
- Forum for project Q&A
- Research-style Document slides
- Certification with longer quizzes
- Cross-course enrollment possible
5th Grade
- Student-led project submissions
- Blog for showcasing work
- Web Content: Scratch / code tools
- Full karma + certificate awards
- Peer review via Forum posts
Strategy B — Section-Based Segmentation within a Course
If you run a multi-grade program (like a K–2 reading circle), create one course and use
Sections to separate grade-level content within it. Name sections clearly:
Kindergarten · Phonics, 1st Grade · Sight Words, etc.
Students can skip ahead or review prior sections without separate enrollment.
Strategy C — Multi-Instance Segmentation (Docker Swarm)
For multi-school or program-isolated deployments (e.g., separate CalTekNet program sites), run
dedicated Odoo instances per school program — each with its own database. This is your existing
pattern (cap, cultural, africa stacks). Each program
manages its own eLearning catalog independently. Portainer CE handles stack-level deployment
and health monitoring across nodes.
Grade:K, Grade:1 … Grade:5 ·
Subject:Math, Subject:ELA, Subject:Science,
Subject:Social-Studies, Subject:Art, Subject:STEM ·
Term:Fall, Term:Spring · Level:Foundational,
Level:On-Grade, Level:Extension.
These tags display as filter chips on the public course catalog page.
Learning Groups & Enrollment
Odoo 18 CE does not have a native "Learning Group" object separate from Courses, but you can implement classroom groupings through a combination of Portal Users, Enrollment settings, and Tags.
Create Portal Users for students (or parents)
Go to Settings → Users & Companies → Users → New. Set the user type to Portal. For K–3, create accounts in a parent's name; for 4–5, student accounts are appropriate if supervised. Portal users can only see published website content they are enrolled in — they have no access to the Odoo backend.
Use Enrollment = "On Invite" for classroom control
Set each K–5 course to Enroll Policy: On Invite. Then, from the course's Members tab, use Add Members to add specific portal users. This prevents students from self-enrolling in courses above their grade.
Model a "class section" using a Course Group tag + Mailing List
Create a contact tag like Room-14-2025 and assign it to all students in
that classroom's portal accounts. When a new course launches, use Email Marketing
or Odoo's built-in Send Invitations action filtered by that tag to enroll the whole class
at once.
Differentiated groups within one course
Use Sections with a slide marked as Can be previewed vs Requires enrollment. Advanced students can be directed to specific sections via direct slide URLs shared in a Forum post or teacher email. All tracking still logs to the same course dashboard.
Forums App Integration
The Forum module adds a structured Q&A / discussion board that can be linked directly to a course. When linked, a Discuss or Forum tab appears on the public course page, allowing learners to post questions visible to classmates and teachers.
Forum App
Module: forum Menu: Website → ForumForums in Odoo use a karma gate system — users need minimum karma points to post, answer, upvote, or moderate. For K–5, reduce all karma thresholds to zero or very low values so students are never blocked from participating.
- Create one Forum per Course (or one shared "Classroom Forum" for multiple courses)
- Navigate to Website → Forum → New, name it, set mode to Questions
- In the Course record, set the Forum field to link it
- In Forum settings, reduce karma thresholds: Post = 0, Answer = 0, Upvote = 1
- Enable Moderation so all new posts require teacher approval before appearing
- Tag forum topics with subject areas for organized discussion threads
Appropriate grade use
- K–2: Teacher-only posting. Use Forum as an announcement board; students read, no posting required.
- 3rd–4th: Guided Q&A. Teacher posts question; students post one answer each (moderation on). Low karma gates.
- 5th: Full discussion. Students post questions, peer-answer, upvote. Introduce community norms. Enable karma display to encourage positive contribution.
Blog App Integration
The Website Blog module is an optional but powerful companion to eLearning for K–5 use cases. While the Forum enables discussion within a course, the Blog publishes long-form content alongside a course — weekly classroom news, project showcases, curriculum narratives, or teacher reflections. Blog posts appear on the public site and can be linked from within course slides using the Article editor's hyperlink tool.
Website Blog App
Module: website_blog Menu: Website → Blog- Create one Blog per classroom or program (e.g., "Room 14 News · 2025–26")
- Navigate to Website → Blog Posts → New to create a post
- Assign the post to the appropriate Blog and add cover image + tags
- Blog posts are separate from course slides — they live at
/blogon your site - Link blog posts from course Article slides using the rich-text hyperlink tool
- Only internal Odoo users (teachers) can create blog posts in CE — portal users read only
Blog vs Forum — when to use each
| Use Case | Forum | Blog |
|---|---|---|
| Weekly class news | — | ✓ Blog post |
| Student Q&A on a lesson | ✓ Forum thread | — |
| Project showcase / portfolio | — | ✓ Blog post per project |
| Peer review & feedback | ✓ Forum answers | — |
| Curriculum narrative / context | — | ✓ Blog series |
| Help / troubleshooting thread | ✓ Sticky question | — |
| Field trip / event recap | — | ✓ Blog post + photos |
Progress Tracking & Karma
Odoo 18 CE eLearning tracks learner activity at three levels: slide views, course completion, and certification results. Combined with the Karma system, teachers can monitor engagement, identify struggling students, and award recognition.
Karma System — K–5 Configuration
The karma system awards points for completing slides, passing quizzes, posting in forums, and having answers upvoted. Points accumulate on the user's portal profile and can trigger Ranks (badges). For K–5 contexts, configure karma conservatively:
Teacher Reporting Path
Per-student progress
eLearning › Courses › [Course] › Members smart button — lists all enrolled students with completion percentage and last activity date.
Aggregate course statistics
eLearning › Reporting › Courses — pivot or graph view of enrollments, completions, and karma earned per course.
Slide-level engagement
eLearning › Slides › [Slide] › Statistics tab — shows per-slide view count, completion count, and average time on slide (if video).
Docker Swarm Deployment Notes
The following notes apply to deploying Odoo 18 CE with eLearning on your existing 3-node Docker Swarm cluster (shec.us / 48gb.caltek.net / sada55) via Portainer CE, with Traefik v3.2 + Cloudflare tunnel routing.
filestore at /var/lib/odoo/filestore/. For a swarm deployment,
this directory must be mounted from a shared volume accessible to all nodes running the
odoo service — otherwise slide uploads visible on one node will 404 on another.
Use an NFS share or GlusterFS volume, or pin the Odoo service to a single node with
placement: constraints: [node.hostname == shec].
caltek-net-tunnel token handles
routing for *.caltek.net subdomains. For the K–5 eLearning portal, set a distinct
subdomain in Cloudflare Zero Trust (e.g., learn.caltek.net → Odoo service on port 8069)
and add an Access Policy requiring Google Workspace email authentication for parent/teacher accounts.
Portal students logging in via Odoo's own portal auth don't need a separate Cloudflare Access policy.
odoo:18.0 official Docker Hub image combined with the PostgreSQL 18 image
matches your current swarm stack configuration. DistroWatch maintains a current review of
TurnKey releases — monitor for kernel/security updates relevant to your swarm node OS base.
K–5 Best Practices Checklist
Use this checklist before launching any K–5 course to an enrolled classroom.
- Course visibility set to Course Members Only — not Public.
- Enrollment policy set to On Invite; no self-enrollment enabled for student-facing courses.
- All slides individually published and tested in a private browser window as a portal user.
- Video files are under 50 MB or embedded as YouTube/Vimeo URLs to minimize server storage load.
- All external URLs (iframes, YouTube, Google Slides) verified as working from a student-network IP.
- Forum moderation enabled — teacher-approval required before posts go live (for K–4).
- Karma karma thresholds for Forum posting set to 0 — no student blocked from participating.
- Certificate template reviewed — correct school/program name, no placeholder text remaining.
- Cover image uploaded and course description complete — parents see this before their student starts.
- Tags applied: Grade Level, Subject, and Term all set for catalog filtering.
- Portal user accounts created for enrolled students/parents; test login confirmed.
- Odoo filestore volume mounted on a persistent, shared path — verified with a test file upload.
- Cloudflare Access policy or equivalent restricts course portal URL to enrolled school network or authenticated users only.
- Completion criteria set (All Slides / N Slides / Certification) — student progress bar will display correctly.
eLearning App
Educator's Field Guide
A practical reference for building, segmenting, and tracking courses in Odoo 18 Community Edition — tailored for K–5 classroom deployments.
Contents
App Overview & Module Map
The eLearning module in Odoo 18 CE (internally named Slides) is a full-featured learning management system built into the Odoo ecosystem. It uses a Course → Section → Slide hierarchy and publishes content through Odoo's built-in website engine — meaning learners access material through a public or access-controlled web portal with no separate LMS installation required.
Module
Module
Module
Module
Users
Odoo's website module must be installed as the eLearning front-end renders through it. The Forums and Blog modules are optional companions that enhance discussion and content publishing workflows — both are covered in Sections 7 and 8.
Core menu path for course managers:
eLearning › Courses › [Course Name] › Slides
Quick-Start Workflow
Follow these steps in order the first time you set up the eLearning module for a classroom.
Install required modules
In Settings → Activate Developer Mode, go to Apps, search for eLearning and install it. Odoo will automatically install Website as a dependency. Optionally also install Forum and Website Blog.
Configure the Website
Navigate to Website → Configuration → Settings. Set a site name, confirm your domain (or use the Cloudflare tunnel hostname), and choose whether user registration is open or invite-only. For K–5, use invite-only or portal access only.
Create your first Course
Go to eLearning → Courses → New. Give it a name (e.g., "2nd Grade — Math Foundations"), set a cover image, assign tags, and configure visibility and enrollment settings (see Section 3 for full field reference).
Add Sections & Slides
Inside the course, click Add a Section to create topic groupings (e.g., "Week 1 — Counting", "Week 2 — Shapes"). Within each section, click Add a Slide to upload or embed content (see Section 4 for all supported formats).
Enroll learners
Use Members on the course record to manually add portal users (students/parents), or set Enrollment to Free and share the course URL. For classroom groups, use the On Invite setting and send email invitations from the course.
Publish the course
Click the Go to Website button from the course record, then use the top blue Unpublished → Published toggle to make the course live. Test the URL in a private browser window to verify learner-visible content before sharing.
Monitor progress
Return to eLearning → Courses and click into any course. Use the Members smart button to view per-student completion. Navigate to eLearning → Reporting → Course Statistics for aggregate dashboards.
Creating a Course (Channel)
In Odoo 18 CE the eLearning "Course" is also sometimes called a Channel in the URL and internal API — the terms are interchangeable. Below is a full reference for every field you'll encounter when creating or editing a course.
cap-K-math-f25
to echo the Odoo instance handling that school program, making reporting and
multi-instance management cleaner.
Slide Types & Accepted File Formats
Each piece of content within a course is called a Slide. When adding a slide, you first choose its type, which determines which upload or embed options appear. Below are all seven slide types available in Odoo 18 CE, followed by a full file-format reference table.
Article
Rich HTML text editor. Supports images inline, formatted text, links, tables, and embedded media via URL. Ideal for lesson notes, instructions, or reading passages.
Presentation
Upload a slide deck or link to Google Slides / Office Online. Renders slide-by-slide in the browser. Best for direct classroom instruction content.
Video
Embed a YouTube or Vimeo URL, or upload a video file directly. YouTube embeds are the most bandwidth-efficient option for community deployments.
Infographic
Single image slide. Use for diagrams, visual vocabulary, classroom posters, maps, or illustrated timelines. Scales to fit the viewport.
Document
Upload a static document for download or inline preview via the browser's built-in PDF viewer. Use for worksheets, reading packets, or reference sheets.
Web Content
Embed any external URL in an iframe. Use for interactive simulations (PhET, Scratch, Khan Academy), Google Forms quizzes, or approved web tools.
Certification
Built-in quiz engine with multiple-choice and open-answer questions. Pass/fail threshold configurable. Awards a certificate on success.
Complete File Format Reference
| Format / Extension | Slide Type | Notes for K–5 Use |
|---|---|---|
| Presentation Document | Most versatile format. PDFs from Canva, Google Slides export, or LibreOffice all work. Renders inline without student software. Recommended default. | |
| .pptx / .ppt | Presentation | Upload directly; Odoo converts for display. Animations may not render. Export to PDF first if transitions are important. |
| .odp | Presentation | LibreOffice Impress native format. Fully supported. Good choice for TurnKey Linux / open-source classroom builds. |
| .mp4 | Video | H.264 MP4 is the safest direct-upload choice. Keep files under 50 MB for smooth streaming on community networks. H.265/HEVC may not play in all browsers. |
| .webm | Video | Excellent for self-hosted deployments. Smaller file size than MP4. Supported in all modern Chromium and Firefox browsers. |
| .ogv | Video | Open-format Ogg video. Well-supported in open-source browser environments. Less common but fully valid in Odoo. |
| YouTube URL | Video | Paste full YouTube watch URL. Odoo extracts the embed automatically. Most bandwidth-efficient option. Note: requires outbound internet access from the student device. |
| Vimeo URL | Video | Same as YouTube. Vimeo Pro allows domain-restricted embeds for privacy — useful if hosting proprietary classroom video content. |
| Google Slides URL | Presentation | Use the "Publish to web" embed link from Google Slides. Auto-updates when the source changes — great for teachers who regularly revise content. |
| .png / .jpg / .jpeg | Infographic | Use for visual vocabulary cards, diagrams, maps, or illustrated instructions. PNG preferred for graphics with text; JPEG for photos. |
| .gif | Infographic | Animated GIFs play automatically. Useful for simple science animations or process loops (water cycle, metamorphosis stages). |
| .svg | Infographic | Resolution-independent vector graphics. Ideal for math diagrams and labeled illustrations that need to scale on any screen size. |
| .docx / .doc | Document | Word-format worksheets. Displayed via browser's download/preview flow. Consider converting to PDF for more consistent rendering across student devices. |
| .odt | Document | LibreOffice Writer format. Accepted as a document slide. Consistent with open-source TurnKey LAMP / LEMP stack deployments. |
| .txt | Document | Plain-text reading passages or code snippets for upper-elementary STEM electives. Minimal formatting; consider an Article slide instead for richer text layouts. |
| HTTPS URL (iframe) | Web Content | PhET Interactive Simulations, Scratch projects, Google Forms, Quizlet flashcard sets, Desmos activities. The target site must allow iframe embedding (check X-Frame-Options header). |
<audio> tag in the source view, or use a YouTube/Vimeo
URL pointing to an audio-visualizer video. For IIAB/offline deployments, direct HTML
audio embeds in Article slides work without internet access.
Content Segmentation for K–5
Effective segmentation lets you manage one Odoo instance across multiple classrooms while keeping each grade's content isolated. There are three complementary strategies — use one or combine them based on your deployment scale.
Strategy A — One Course per Grade + Subject
The simplest and most recommended approach for most deployments. Create a separate course for each grade-subject combination. Tags group them in the catalog.
Kindergarten & 1st Grade
- Short slides (≤5 min each)
- Infographic + Video type priority
- Large text, simple navigation
- Parent-monitored enrollment
- No karma / leaderboard display
2nd & 3rd Grade
- Presentation + Article slides
- Web Content for interactive tools
- 2–4 sections per course
- Simple Certification quizzes (5 Qs)
- Karma optional — fun badges
4th Grade
- All slide types appropriate
- Forum for project Q&A
- Research-style Document slides
- Certification with longer quizzes
- Cross-course enrollment possible
5th Grade
- Student-led project submissions
- Blog for showcasing work
- Web Content: Scratch / code tools
- Full karma + certificate awards
- Peer review via Forum posts
Strategy B — Section-Based Segmentation within a Course
If you run a multi-grade program (like a K–2 reading circle), create one course and use
Sections to separate grade-level content within it. Name sections clearly:
Kindergarten · Phonics, 1st Grade · Sight Words, etc.
Students can skip ahead or review prior sections without separate enrollment.
Strategy C — Multi-Instance Segmentation (Docker Swarm)
For multi-school or program-isolated deployments (e.g., separate CalTekNet program sites), run
dedicated Odoo instances per school program — each with its own database. This is your existing
pattern (cap, cultural, africa stacks). Each program
manages its own eLearning catalog independently. Portainer CE handles stack-level deployment
and health monitoring across nodes.
Grade:K, Grade:1 … Grade:5 ·
Subject:Math, Subject:ELA, Subject:Science,
Subject:Social-Studies, Subject:Art, Subject:STEM ·
Term:Fall, Term:Spring · Level:Foundational,
Level:On-Grade, Level:Extension.
These tags display as filter chips on the public course catalog page.
Learning Groups & Enrollment
Odoo 18 CE does not have a native "Learning Group" object separate from Courses, but you can implement classroom groupings through a combination of Portal Users, Enrollment settings, and Tags.
Create Portal Users for students (or parents)
Go to Settings → Users & Companies → Users → New. Set the user type to Portal. For K–3, create accounts in a parent's name; for 4–5, student accounts are appropriate if supervised. Portal users can only see published website content they are enrolled in — they have no access to the Odoo backend.
Use Enrollment = "On Invite" for classroom control
Set each K–5 course to Enroll Policy: On Invite. Then, from the course's Members tab, use Add Members to add specific portal users. This prevents students from self-enrolling in courses above their grade.
Model a "class section" using a Course Group tag + Mailing List
Create a contact tag like Room-14-2025 and assign it to all students in
that classroom's portal accounts. When a new course launches, use Email Marketing
or Odoo's built-in Send Invitations action filtered by that tag to enroll the whole class
at once.
Differentiated groups within one course
Use Sections with a slide marked as Can be previewed vs Requires enrollment. Advanced students can be directed to specific sections via direct slide URLs shared in a Forum post or teacher email. All tracking still logs to the same course dashboard.
Forums App Integration
The Forum module adds a structured Q&A / discussion board that can be linked directly to a course. When linked, a Discuss or Forum tab appears on the public course page, allowing learners to post questions visible to classmates and teachers.
Forum App
Module: forum Menu: Website → ForumForums in Odoo use a karma gate system — users need minimum karma points to post, answer, upvote, or moderate. For K–5, reduce all karma thresholds to zero or very low values so students are never blocked from participating.
- Create one Forum per Course (or one shared "Classroom Forum" for multiple courses)
- Navigate to Website → Forum → New, name it, set mode to Questions
- In the Course record, set the Forum field to link it
- In Forum settings, reduce karma thresholds: Post = 0, Answer = 0, Upvote = 1
- Enable Moderation so all new posts require teacher approval before appearing
- Tag forum topics with subject areas for organized discussion threads
Appropriate grade use
- K–2: Teacher-only posting. Use Forum as an announcement board; students read, no posting required.
- 3rd–4th: Guided Q&A. Teacher posts question; students post one answer each (moderation on). Low karma gates.
- 5th: Full discussion. Students post questions, peer-answer, upvote. Introduce community norms. Enable karma display to encourage positive contribution.
Blog App Integration
The Website Blog module is an optional but powerful companion to eLearning for K–5 use cases. While the Forum enables discussion within a course, the Blog publishes long-form content alongside a course — weekly classroom news, project showcases, curriculum narratives, or teacher reflections. Blog posts appear on the public site and can be linked from within course slides using the Article editor's hyperlink tool.
Website Blog App
Module: website_blog Menu: Website → Blog- Create one Blog per classroom or program (e.g., "Room 14 News · 2025–26")
- Navigate to Website → Blog Posts → New to create a post
- Assign the post to the appropriate Blog and add cover image + tags
- Blog posts are separate from course slides — they live at
/blogon your site - Link blog posts from course Article slides using the rich-text hyperlink tool
- Only internal Odoo users (teachers) can create blog posts in CE — portal users read only
Blog vs Forum — when to use each
| Use Case | Forum | Blog |
|---|---|---|
| Weekly class news | — | ✓ Blog post |
| Student Q&A on a lesson | ✓ Forum thread | — |
| Project showcase / portfolio | — | ✓ Blog post per project |
| Peer review & feedback | ✓ Forum answers | — |
| Curriculum narrative / context | — | ✓ Blog series |
| Help / troubleshooting thread | ✓ Sticky question | — |
| Field trip / event recap | — | ✓ Blog post + photos |
Progress Tracking & Karma
Odoo 18 CE eLearning tracks learner activity at three levels: slide views, course completion, and certification results. Combined with the Karma system, teachers can monitor engagement, identify struggling students, and award recognition.
Karma System — K–5 Configuration
The karma system awards points for completing slides, passing quizzes, posting in forums, and having answers upvoted. Points accumulate on the user's portal profile and can trigger Ranks (badges). For K–5 contexts, configure karma conservatively:
Teacher Reporting Path
Per-student progress
eLearning › Courses › [Course] › Members smart button — lists all enrolled students with completion percentage and last activity date.
Aggregate course statistics
eLearning › Reporting › Courses — pivot or graph view of enrollments, completions, and karma earned per course.
Slide-level engagement
eLearning › Slides › [Slide] › Statistics tab — shows per-slide view count, completion count, and average time on slide (if video).
Docker Swarm Deployment Notes
The following notes apply to deploying Odoo 18 CE with eLearning on your existing 3-node Docker Swarm cluster (shec.us / 48gb.caltek.net / sada55) via Portainer CE, with Traefik v3.2 + Cloudflare tunnel routing.
filestore at /var/lib/odoo/filestore/. For a swarm deployment,
this directory must be mounted from a shared volume accessible to all nodes running the
odoo service — otherwise slide uploads visible on one node will 404 on another.
Use an NFS share or GlusterFS volume, or pin the Odoo service to a single node with
placement: constraints: [node.hostname == shec].
caltek-net-tunnel token handles
routing for *.caltek.net subdomains. For the K–5 eLearning portal, set a distinct
subdomain in Cloudflare Zero Trust (e.g., learn.caltek.net → Odoo service on port 8069)
and add an Access Policy requiring Google Workspace email authentication for parent/teacher accounts.
Portal students logging in via Odoo's own portal auth don't need a separate Cloudflare Access policy.
odoo:18.0 official Docker Hub image combined with the PostgreSQL 18 image
matches your current swarm stack configuration. DistroWatch maintains a current review of
TurnKey releases — monitor for kernel/security updates relevant to your swarm node OS base.
K–5 Best Practices Checklist
Use this checklist before launching any K–5 course to an enrolled classroom.
- Course visibility set to Course Members Only — not Public.
- Enrollment policy set to On Invite; no self-enrollment enabled for student-facing courses.
- All slides individually published and tested in a private browser window as a portal user.
- Video files are under 50 MB or embedded as YouTube/Vimeo URLs to minimize server storage load.
- All external URLs (iframes, YouTube, Google Slides) verified as working from a student-network IP.
- Forum moderation enabled — teacher-approval required before posts go live (for K–4).
- Karma karma thresholds for Forum posting set to 0 — no student blocked from participating.
- Certificate template reviewed — correct school/program name, no placeholder text remaining.
- Cover image uploaded and course description complete — parents see this before their student starts.
- Tags applied: Grade Level, Subject, and Term all set for catalog filtering.
- Portal user accounts created for enrolled students/parents; test login confirmed.
- Odoo filestore volume mounted on a persistent, shared path — verified with a test file upload.
- Cloudflare Access policy or equivalent restricts course portal URL to enrolled school network or authenticated users only.
- Completion criteria set (All Slides / N Slides / Certification) — student progress bar will display correctly.
There are no comments for now.