// project
eduSTAR STMC SDK

Overview
The eduSTAR SDK is a TypeScript-based client library and command-line tool designed to interact with the eduSTAR School Technology Management Centre API.
It provides a unified interface for managing school infrastructure, users, and services within the Victorian Department of Education network.
The project focuses on automating administrative workflows that are otherwise manual and fragmented across web interfaces.
Key Features
Dual Interface (SDK + CLI)
- Programmatic SDK for integration into scripts and applications
- Command-line interface (CLI) for direct administration tasks
- Shared underlying API layer
API Coverage
Supports operations across:
- User identity and authentication
- School data and infrastructure
- Student and staff management
- Group and directory operations
- Device and service management
Authentication
- NTLM authentication (VPN / external access)
- Form-based authentication (internal access)
- Automatic fallback handling
CLI Automation
- Structured commands (
user,school,student, etc.) - JSON output for scripting
- Supports interactive and scripted usage
Architecture
CLI (Commander.js)
↓
SDK Core (eduSTAR class)
↓
HTTP Layer (undici + NTLM)
Technical Highlights
TypeScript-First
- Strong typing
- Distributed type definitions
- IDE-friendly developer experience
Build System
- SDK compiled to /dist
- CLI compiled to /bin
- Separate TypeScript configs
Authentication Handling
- Custom handling for eduSTAR-specific requirements
- Session and cookie management
- Abstracted complexity
Networking
- Uses undici for HTTP performance
- Keep-alive connections
- Proxy support
Example Usage
SDK
import { eduSTAR } from "edustar-sdk";
const client = new eduSTAR({ verbose: true });
await client.login("username", "password");
const schools = await client.getSchools();
console.log(schools);
CLI
edustar whoami -u username
edustar school list all
edustar student list -s 1234
Problem Solved
- Reduces manual admin work
- Enables scripting and automation
- Standardises workflows across environments
Design Philosophy
- Minimal surface area
- Composable (SDK + CLI)
- Practical over abstract
- Transparent outputs (JSON)
Engineering Decisions
- Thin CLI wrapper mapped directly to SDK
- Dual authentication strategy for reliability
- Custom dependency handling for compatibility