+4981217607887 hallo@panomity.de

Moodle plugin development: From learning design to code

by | Jul 11, 2026 | EdTech Development

For us, Moodle plugin development starts with the subject, not with a feature list. We ask what learners need to work on, which intermediate state must be saved, where feedback belongs and how progress should remain visible. Those instructional requirements then become the structure of a purpose-built Moodle activity module.

This is the approach we use on “Cosmo”, the school server at MOS Munich that Panomity hosts and supports with software developed in-house. Its Moodle 5.x instance, “mos Kurse”, runs 55 of our own plugins. They cover German lessons, Politics and Society, AI functions, organisation and administration rather than forcing every task into one general-purpose tool.

The runtime environment is part of that work. Moodle and the self-hosted AI services operate in Docker on one school server. Our article about EdTech hosting for a school server explains how the wider ecosystem fits together. You can learn more about Moodle at Moodle.org.

What does Moodle plugin development mean for learning design?

Moodle plugin development means turning a defined learning activity into software with an equally clear purpose. In our reference project, the learning task tells us whether learners need stations, drafts, feedback or another focused activity. The code supports that instructional design; it does not dictate a generic workflow first.

You can see this distinction in the two main groups in our portfolio. The plugins for German lessons are activity modules in the mod/ category. They give learners a subject-specific activity inside Moodle. The local/ category contains organisational and administrative tools that support courses and school operations.

Both categories belong in the same platform, but they solve different problems. Debatten-Dojo is framed as a debate activity. Raumbuchung deals with room booking. Treating either one as an anonymous all-purpose component would hide the requirement that shaped it. Keeping the purpose explicit helps us connect instructional design, implementation and hosting.

How does a learning journey become a Moodle activity?

PuG-Lernreise turns a sequence for Politics and Society into the activity module mod_puglernreise. Learners move through stations, save drafts, receive feedback and track progress. These are connected stages of one learning journey, not unrelated tools placed side by side in a course.

The module is our practical deep dive into the route from instructional concept to code. A station provides a unit to work through. A draft preserves work in progress. Feedback responds to that work, and progress records how far the journey has advanced. The subject-specific process is therefore recognisable in the software structure.

  1. Stations: The journey is divided into units that learners work through.
  2. Drafts: Learners can save intermediate versions of their work.
  3. Feedback: Responses are attached to the working process, including functions supported by local AI.
  4. Progress: The module tracks movement through the learning journey.

The implementation has a precise software status. PuG-Lernreise is version 2026070511 and requires Moodle ≥ 2025100600. It runs in the Moodle 5.x environment used by our reference project. Stating both identifiers matters: the educational name describes the concept, while the version data locates the actual module in its technical environment.

What data model supports PuG-Lernreise?

PuG-Lernreise uses custom database tables for stations, solutions, drafts, feedback and progress. Their technical names are station, solution, draft, feedback and progress. The model therefore stores, in a structured form, the distinct elements that the activity needs to support its learning-journey workflow.

The model retains several clearly named parts of the journey. The module needs to retain a station, saved work in progress, feedback and the learner’s progress. Solutions also have their own table in the custom model. Each named area corresponds to information that belongs to the activity and its sequence.

The five tables keep the module’s states readable. draft represents saved work in progress, feedback holds the response, and progress records movement through the journey. You can trace the same sequence in the data model that learners encounter in the activity: stations, drafts, feedback and progress.

How can local AI give feedback without becoming an answer machine?

In PuG-Lernreise, AI acts as a feedback assistant that helps learners help themselves, not as an answer generator. The activity connects its feedback functions to GPUQ and Ollama locally. This places AI support inside the defined learning process while preserving the distinction between useful feedback and simply supplying a finished solution.

Ollama provides local language models for chat and text tasks on the school server. GPUQ is the GPU job queue we developed in-house. It shares one GPU fairly among AI services and plugins, places jobs in a queue and reports their status. PuG-Lernreise can therefore send feedback work through a controlled local route.

The Politics and Society family also includes the local PuG KI-Helfer, which uses GPUQ and Ollama, and PuG-Wirkungs-Dashboard. The processing location is central to the design: this AI stack is self-hosted on the school server. Student data does not leave that server, and no US cloud AI is required for the feedback functions.

Local infrastructure does not make the instructional decision for us. It provides the technical path through which a carefully scoped feedback function can run. The activity still defines the stages and the role of feedback. Ollama supplies local language-model processing, and GPUQ coordinates access to the shared GPU.

Which modules turn German lessons into focused activities?

The module family for German lessons consists of focused activities rather than generic add-ons. Its topics range from debate, quotation and grammar to narrative technique, drama, commentary and oral examination. Selected activities add a local AI connection or game format, while each module keeps its clearly named subject focus.

Activity moduleFunction or topic
Debatten-DojoSpoken debates using Ollama and Whisper
Zitier-Schmiede and Elegantes ZitierenQuotation and citation as the subject focus
Konjunktiv-RunnerGrammar game focused on the subjunctive
RedewerkstattSpeech as the subject focus
Erzähltechniken: Das MinigameA minigame about narrative techniques
Bühnenmeister, Charakterisierung Drama and Inhaltsangabemeister DramaDrama as the subject focus
Kommentar and KommentarMeisterCommentary as the subject focus
Mündliche PrüfungssimulationOral examination simulation using Ollama

Beyond the selection in the table, the family includes Epik and EpikMeister, Weiterführender Gedanke, Materialgestützte Erörterung, Innerer Monolog, Motivvergleich, Pinnwand and Sprachliche Mittel. We retain their original product names here. Together, the modules show how precisely we divide subject areas into dedicated Moodle activities.

Two modules connect directly to the local AI stack. Debatten-Dojo combines Ollama and Whisper for spoken debates. Mündliche Prüfungssimulation uses Ollama. In both cases, the technology sits within a clearly named activity for German lessons. Voice or AI is not a detached novelty; it serves the scope of that module.

What is the difference between mod and local in this portfolio?

In this portfolio, mod/ identifies subject-specific activity modules used by learners in Moodle. The local/ category contains organisational and administrative tools. The distinction is about purpose: one category represents a defined learning activity, while the other supports the operation of courses and the school environment.

The local tools include Aktivitäten-Kopierer, Betreuung–Kursfortschritt, Abgaben exportieren, Bewertungsansicht Zoom, Vereinfachte Kursnavigation, Unterrichtsplanung, Erinnerungen, Raumbuchung, Raum Check-in and Kursgenerator. The same category also contains Elternkompass, Bewertungs-Radiergummi, MOS Schülerfeedback, MOS Einheitsansicht, Qualitätskompass MOS, Student-AR-Ansicht, LernLiga and engelbrain, which integrates klausurenweb.de.

The split does not prevent the components from supporting the same Moodle environment. An activity can run in courses whose administration benefits from local tools. The responsibilities nevertheless remain clear: PuG-Lernreise represents a subject learning journey, whereas Raumbuchung handles room booking. That clarity guides the form we give to each requirement.

Where does gamification fit into custom Moodle plugins?

Gamification appears in three clearly scoped forms in the portfolio. LernLiga is a local gamification tool, Konjunktiv-Runner is a grammar game, and Erzähltechniken: Das Minigame applies a minigame format to narrative techniques. This places game-based formats both in a local tool and in activities for German lessons.

The examples cross the architectural categories. Konjunktiv-Runner and Erzähltechniken: Das Minigame are activities for German lessons under mod/. LernLiga belongs to the organisational and administrative tools under local/. Gamification is therefore not a component type of its own in this portfolio; it can serve different, clearly classified purposes.

When you plan a game-based function, scope comes before the label. Konjunktiv-Runner and the narrative minigame place play inside a defined subject activity under mod/. LernLiga sits under local/ as a wider tool. The word gamification alone does not decide the right form for a plugin.

What have we learned from connecting instructional design and code?

A custom activity remains coherent when the subject task, data model and operating environment follow the same line. PuG-Lernreise connects stations, drafts, feedback and progress to custom tables. Local AI supports the feedback route. Docker, GPUQ and Ollama keep that processing on the school server Panomity operates.

From an engineering perspective, we do not begin by choosing an effect. We decide whether the requirement calls for a learner-facing activity or a local operational tool. We then map its necessary states and services. For PuG-Lernreise, that leads to five custom database tables and a local AI connection aligned with the journey.

Our responsibility also continues after the plugin code is written. The Moodle 5.x instance, containers and AI services have to operate together. Panomity therefore combines development and EdTech hosting. In the reference environment, the application, local models, GPU queue and related student data stay on the school server.

Frequently asked questions about Moodle plugins

What is PuG-Lernreise?

PuG-Lernreise is Panomity’s Moodle activity module for Politics and Society. In mod_puglernreise, learners work through stations, save drafts, receive feedback and track progress. Custom database tables represent those elements. For its feedback functions, the module connects to local AI through GPUQ and Ollama.

Which Moodle version does PuG-Lernreise require?

PuG-Lernreise is version 2026070511 and requires Moodle ≥ 2025100600. In Panomity’s reference project, it runs on the Moodle 5.x instance “mos Kurse”. For planning, that gives you two concrete references: the module version and the required Moodle build. The live reference environment is also identified as Moodle 5.x.

Why are some plugins mod components and others local components?

The classification follows purpose in this portfolio. mod/ contains subject-specific activities such as PuG-Lernreise and the modules for German lessons. local/ contains organisational and administrative tools such as Raumbuchung, Kursgenerator and LernLiga. This keeps learner activities distinct from software that supports operation of the Moodle environment.

How does the local AI feedback work?

PuG-Lernreise connects its feedback functions locally to Ollama through GPUQ. Ollama provides language models for text tasks. GPUQ queues jobs for the single shared GPU and reports their status. The AI remains a feedback assistant that helps learners help themselves, rather than an answer generator.

Does student data leave the school server for AI feedback?

No. The Moodle and AI architecture described here is self-hosted on the school server. Ollama processes text tasks locally, and GPUQ coordinates GPU jobs there. Student data does not leave the school server, so PuG-Lernreise does not need a US cloud AI service for its feedback functions.

Conclusion: let the subject lead the build

PuG-Lernreise makes our method tangible: a subject-specific sequence becomes an activity module, a matching data model retains its states, and local AI supports feedback. The modules for German lessons apply the same principle to tightly scoped topics. Organisational support and gamification receive their own form where their purpose calls for it.

Are you planning a custom learning activity or a self-hosted Moodle and AI environment? Panomity develops and hosts EdTech as one connected service, from purpose-built plugins to the infrastructure that runs them.

Contact

Don’t wait and write us!

GO

Newsletter

Sign up for our newsletter to stay up to date

Newsletter

About Us

Panomity GmbH

Follow Us

Related articles

Comments

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *