Skip to content

unib14z3/MoodleJS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MoodleJS 📚⚙️

A modular JavaScript wrapper for Moodle Web Service APIs. Built for dashboards, assignment tracking, course resource access, and academic automation.


Features

Core:

  • User / login info
  • Assignments
  • Submission status
  • Course contents
  • Calendar events
  • Raw request access
  • Modular domain architecture

Installation

Local:

npm install ../moodleJS

GitHub:

npm install git+https://github.com/yourusername/moodlejs.git

Project Structure

moodleJS/
 ┣ client.js
 ┣ wrapper.js
 ┣ package.json
 ┗ domains/
    ┣ user.js
    ┣ assignments.js
    ┣ courses.js
    ┗ calendar.js

Quick Start

const MoodleJS = require("moodlejs");

const moodle = new MoodleJS(
    "https://yourmoodle.com",
    "YOUR_TOKEN"
);

(async () => {
    const user = await moodle.user.getUserInfo();
    console.log(user);
})();

Authentication

MoodleJS requires:

  • Moodle base URL
  • Web Service token
const moodle = new MoodleJS(
    "https://yourmoodle.com",
    "YOUR_TOKEN"
);

Domains


User Domain

Get logged-in user info:

const user = await moodle.user.getUserInfo();
console.log(user);

Get raw site info:

const siteInfo = await moodle.user.getSiteInfo();

Assignments Domain

Get all assignments:

const assignments = await moodle.assignments.getAssignments();

Get submission status:

const status = await moodle.assignments.getSubmissionStatus(assignId);

Courses Domain

Get course contents:

const contents = await moodle.courses.getContents(courseId);

Calendar Domain

Get upcoming events:

const events = await moodle.calendar.getUpcoming();

Raw Request Access

For unsupported functions:

const data = await moodle.request(
    "core_webservice_get_site_info"
);

Example: Assignment Tracker

const assignments = await moodle.assignments.getAssignments();

for (const course of assignments.courses) {
    for (const assignment of course.assignments) {
        console.log(
            assignment.name,
            assignment.duedate
        );
    }
}

Environment Variables (Recommended)

Install:

npm install dotenv

.env

MOODLE_URL=https://yourmoodle.com
MOODLE_TOKEN=your_token

Usage:

require("dotenv").config();

const MoodleJS = require("moodlejs");

const moodle = new MoodleJS(
    process.env.MOODLE_URL,
    process.env.MOODLE_TOKEN
);

Confirmed Useful Moodle Functions

  • core_webservice_get_site_info
  • mod_assign_get_assignments
  • mod_assign_get_submission_status
  • core_course_get_contents
  • core_calendar_get_calendar_upcoming_view

Architecture

wrapper.js

Base request engine

domains/

Feature-specific modules

client.js

Unified Moodle client


Security Notes

Never expose your token publicly.

Recommended:

  • .env
  • Private config files
  • Server-side storage

Roadmap

  • Grades domain
  • Files domain
  • Forums
  • Notifications
  • Overdue assignment tracker
  • Dashboard integrations

License

MIT


Author

Built by UNIB14Z3 ⚡


Philosophy

MoodleJS transforms Moodle’s raw WS functions:

mod_assign_get_submission_status

Into:

moodle.assignments.getSubmissionStatus()

Less boilerplate. More command center.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors