Visualisation of Moodle Logs with Help of Custom R Shiny App (MoodleMoot Estonia 2026)
Watch on YouTubeVideo summary
The speaker, a veterinarian with no prior experience in software development or online course creation, shares her journey of analyzing data from an educational project she helped design for high school students. Although the team successfully created a fully online veterinary medicine course using H5P tools over seven weeks without collecting extensive personal data beyond names and emails, they faced significant challenges after its completion. With 160 participants having finished the program, including final quizzes and optional institute visits, the speaker needed to evaluate whether the course was effective but lacked technical expertise in log analysis or procrastination management strategies typically used by developers.
To address these evaluation needs, she initially attempted standard Moodle reporting features which provided raw logs containing over 400,000 lines of data that were difficult for her non-technical background to interpret meaningfully. Recognizing the limitations of built-in tools and realizing she needed deeper insights into participant engagement patterns rather than just basic completion statistics, she decided to build a custom solution despite having never developed an application before. She turned to artificial intelligence assistance using white coding techniques where prompts were crafted to generate R code that could automatically process the massive log files without requiring manual file uploads or complex configuration steps.
The resulting Shiny app successfully transformed raw data into actionable visualizations including participant counts, click tracking graphs, engagement metrics, attrition rates, and funnel analyses that revealed patterns invisible in standard reports. The application allowed for interactive exploration of specific elements such as deadline adherence, anonymized user identities, final test performance summaries with correlation tables displayed on logarithmic scales, density plots showing time usage distributions across students, and weekly accumulation charts tracking clicks per H5P task over the course duration which could be generated within just a few days.
The speaker concludes that when facing analytical problems where traditional methods fall short or expert help is unavailable, creating custom applications with tools like R Shiny can provide powerful solutions even for those without extensive programming backgrounds. Her experience demonstrates how leveraging AI assistance and white coding workflows enables individuals to bypass technical barriers and extract meaningful insights from complex datasets while acknowledging that the entire project would not have been possible without contributions from many students who led the course development efforts under her supervision.
Read the full video transcript
So, welcome everybody. U as I said, my
name is Tminina and I'm the very last
obstacle between you and your cold
beverage today tonight. And uh uh just
to give you a background, uh
I started using uh mood since 2015. So
definitely uh I am not an expert or an
uh even a developer and my background is
actually in veterinary medicine. So
please keep me keep that in mind. I'm a
vet not a developer.
Now now you might ask like so why am I
here right? Actually so uh there was a
thing which we created. So we had this
uh online course uh and um
uh I played a key role there and it was
a fully online course. But the problem
was that I have never developed a fully
online course
and this course was just to give you
like a hint like what what what is it
what is it to study veterary medicine
and uh the target the audience was high
school students but we didn't collect
like any personal data only okay yeah
name and email uh but uh where you came
from or what you did we didn't care just
register
and have fun.
And uh we had 160 participants
and the core structure just to give you
a background here. So it was like semi
self-paced. So again like you did what
you'd liked but it was designed to be
approximately two hours of work per week
and we used
uh H5P.
Uh so and it was de so there was seven
activities
and each activity
had a different topic. So like one topic
per week. So seven weeks
and there was a forum where the veterary
students answered the questions for the
participants and there was a one last
final quiz uh which you had to solve in
order to prove the completion of the
course.
And in the end there was a cherry on the
cake. Uh you uh if you completed the
course you were invited to visit the
institute and have a tool
not the problem right like I said that
never designed an online course. So
uh the first question would be like did
did it actually work right and the
second course how to check it like again
I had no experience
and the logical answer is of course logs
right
so I don't know how what you do for
procrastination if you have like a 100
million things to do and uh the
deadlines are on your neck like a ton of
bricks.
You click through the model and you
check what the developers have done and
uh and uh today my suspicions were
confirmed that the model was developed
by many many people and uh and the we're
going to go see it.
So if you look in the course,
click there
reports and voila, there are the logs.
Never used them. And I especially like
this button here. Get these logs. Right?
Whoever came up with this is uh was
genius, right? And I want these logs. I
really want these logs.
Not only
do I want these logs, I want more. I
want get something out of these logs,
but there was a problem.
There's a there was a person on my way
called Jason,
right? And remember, I'm a vet. I don't
know who Jason is. So, I just downloaded
the
What could go wrong, right?
There is
400,000 lines. Okay, that's a quite a
lot for me.
And the question is like okay 400,000
lines
what does what does the model even log?
What what what should I do? Right? And
uh the next logical step would be of
course would be that okay why not use
the model built-in dogs tools.
Well the actually again like I said I
wanted more. So again the tools which
are at the moment built into the model
are not what I actually actually wanted.
So actually
the next logical step is build your own
app right
and the problem is again like I have
never built an app
right so how difficult could it be
well there's this famous saying right we
do this not because it's easy but we
thought it could be easy
All right. And now,
so the next step was Google
anti-gravity, right? Anybody used
anti-gravity.
Okay. So, and white coding.
Let's go.
Right. So, I tried to find the full
prompt which I used for the first time.
I didn't find it. So, but it most likely
it was something like this. So help me
create a shiny app,
right? Make it nice,
right? Very uh if you have learned
prompt engineering, you have to be
specific, right?
Right. So I was again like I was a
little bit unsure about the JSON. So
again like just visualize J for me just
do it.
uh and very important you have to give
background right so it's I said okay AI
it's a online course
and
uh because I don't know how to analyze
online course so give me suggestions and
look at the lo and let's look at the
logs
as simple as that right well
not it wasn't so straightforward
uh but let's look at the anti-gravity So
I'm going to this might look a little
bit like intimidating in the beginning.
No worries. I'm going to walk you
through. So most important part here
agent,
right? And then here is the code,
right? Don't don't look at the code, see
through the code.
And here we check with the agent,
right?
So for this like okay here's an example
uh that was not too convenient. So I
said okay make it more convenient. I
don't want to upload files there just
take the files and make it happen. So
I'm going to
send uh you send the prompt to agent
then says oh there's an R code here
generates. Okay. Now the agent is not
very polite. Always says okay seems like
you gave me the wrong file. No matter I
will manage
and it checks the files which are
actually there.
So here is the end result. And now again
the very important part about white
coding is that when you start white
coding is that the green parts are the
words which come come into the code and
the red parts are the ones which go out
of the code. Right?
And the most important part about wipe
coding is here. You're going to see you
can see the arrow. Wait for it.
accept all.
All right, my work is done here.
Now, uh the second best thing to go is
the R studio. So, let's go to our studio
now. And uh there's a very important
button there,
run app,
right? You have to click it.
And voila, we have the app. So we can
see the particip number of participants,
the clicks, all kinds of graphs here,
engagement,
attrition, funnel. I would have never
come up with this,
but that's there's more. So like we can
click things. So deadlines,
anonymous names, we can anonymize.
uh we can look at the for example the
final test. So here is the summary of
the final test stuff.
How much time did they spend like and
here is a correlation table and of
course we want to see it in log scale
right because log scale it would be very
important. We want to click and see
things.
Uh there's also like correlation between
the clicks and the score.
And my special favorite density plot,
right? How much time uh did the student
uh student student participants uh use?
But that's not all, right? We want more.
We want to see we want to visualize,
right? So this is like uh the uh the
week by week. So it was 7 weeks plus the
introduction videos and this is on a
time scale and how the clicks uh
accumulated
uh per task per H5P task.
Again really nice to see and only takes
a couple of days.
So
does it move?
So, what is the take-h home message?
If you have a problem
and no one else can help
and if you can find it,
maybe you can solve it with a custom
shiny app.
Okay. And the last one. So again uh
would find this work would have not been
possible without the tremendous help of
many many people who contributed to this
course and I'm just here's our team and
it was mostly le led by students I just
uh provided some help there
thank you
thank you Dharma for presentation
Do we have a question?
Oh, okay.
Okay, more questions.
Okay. Oh, I see. Yeah, thanks. Very uh
very interesting and nice talk. Uh I was
just curious why did you choose to do it
with R and Shiny?
>> What's the most logical answer?
Why? Well,
I didn't know I didn't know any better.
I have heard about shiny, so whatever.
Let's try it. How hard can it be?
Fair