A package to interact with Compass, a school management system in Australia.
npm i compass-education
A basic example to fetch all classes for the day.
const Compass = require("compass-education");
const Client = new Compass.Client("https://xx.compass.education");
(async () => {
await Client.login("Username", "Password");
const classes = await Client.getClasses();
// example output below
})();
Example output of classes
[
{
title: 'XSCIH',
rollMarked: true,
start: '2022-05-17T22:45:00Z',
finish: '2022-05-18T00:00:00Z',
activityId: 80166,
instanceId: 'x', // censored
longTitle: '10:45: 1 - XSCIH - B33 - X',
longTitleWithoutTime: '1 - XSCIH - B33 - X',
classroom: 'B33',
teacher: 'X' // censored
},
{
title: 'XPEHH',
rollMarked: true,
start: '2022-05-18T00:05:00Z',
finish: '2022-05-18T01:20:00Z',
activityId: 80146,
instanceId: '80146180520220005',
longTitle: '12:05: 2 - XPEHH - S1F - TRI',
longTitleWithoutTime: '2 - XPEHH - S1F - TRI',
classroom: 'S1F',
teacher: 'X'
},
... 2 more
]
I needed a way to get my classes programmatically, and thats how this project was born.
I have worked with other API wrappers of Compass ages ago, but they were mainly based on Puppeteer. This caused a lack of features and also was a bit slow. Using services (basically Compass endpoints), it made this project faster and packed more features than other projects.
Here you can check out tascord's original library "compass-edu" based on Puppeteer.
Note: This library does not work for every school. If it doesn't, feel free to tweak the code a little or submit an issue, and maybe we can find some way to deal with it.
Since this library is not tested, and does not work for different schools, contributions are very much welcome. Anything from issues, pull requests will always help me out.
Also, I am not a NodeJS professional - feel free to roast my code.
This library uses the GPL-3.0 license.