Overview
A pnpm monorepo housing all internal ICT tools for Macquarie College. Each app serves a distinct operational need — from generating printable posters to AI-assisted tech support — while sharing a common design system and utility packages.
Shared Packages
The monorepo includes 13 shared packages, grouped by concern:
UI & Design System
- mc-ui — Shared component library providing form fields (text, select, date pickers), layout primitives, data display components, and feedback elements used across all apps
- mc-canvas-editor — Canvas and Puck editor integration layer that wraps the Puck visual editor with app-specific configuration and block registration
Auth & Access Control
- mc-rbac — Role-based access control with framework-specific adapters for NextAuth, Astro, and Payload CMS. Each adapter exposes middleware, session converters, and permission checkers so apps can enforce the same role hierarchy regardless of framework
- mc-google-auth — Google OAuth integration providing login flows and session management for staff-facing apps
Content & Storage
- mc-print — Print block definitions, printable instance logic, and Puck data utilities shared by Printables Studio and any future print-enabled app
- mc-email — Transactional email templates built on Resend, used by Misadventure Portal for request notifications
- mc-storage — File storage abstraction for uploads (Vercel Blob, local filesystem) with a consistent API across apps
- mc-docs — Internal documentation content (100+ articles) consumed by both the Docs app and the RAG Chat retrieval pipeline
- mc-jamf — Jamf MDM integration for querying device inventory and management status
Developer Tooling
- mc-config — Shared ESLint, TypeScript, and build configuration presets
- mc-types — Cross-package TypeScript type definitions for domain entities and API contracts
- mc-utils — Common utility functions (date formatting, string helpers, validation)
- mc-interactive-components — Reusable step and wizard components consumed by Interactive Guides
Cross-Cutting Patterns
- Domain-Driven Design — Visit Tracking and Device Loans use explicit domain layers (
/domain,/infrastructure,/application) with entities, value objects, and services separated from framework code - RBAC Adapter Pattern —
mc-rbacdefines roles and permissions once, then adapts them to NextAuth session callbacks, Astro middleware, and Payload access control functions - Mutation Testing — Stryker configs in Visit Tracking, Device Loans, Student Forms, and mc-print enforce mutation score thresholds (up to 100% on critical domain logic)
- E2E Testing — Playwright suites across apps with demo recording infrastructure that generates the video walkthroughs shown on sub-project pages
- Lighthouse CI — Performance and accessibility checks integrated into CI for Visit Tracking and other apps
Architecture
MacquarieCollege/
├── apps/
│ ├── printables/ # Puck-based document studio
│ ├── student-forms/ # Form builder + submission portal
│ ├── rag-chat/ # AI tech support chat
│ ├── ict-portal/ # Payload CMS admin hub
│ ├── interactive-guides/ # Step-by-step setup wizards
│ ├── visit-tracking/ # ICT support visit logs
│ ├── device-loans/ # Laptop loan management
│ └── misadventure/ # Extension request portal
├── packages/
│ ├── mc-ui/ # Shared component library
│ ├── mc-rbac/ # Role-based access control
│ ├── mc-google-auth/ # Google OAuth
│ ├── mc-print/ # Print/PDF utilities
│ └── ... # 9 more shared packages
└── pnpm-workspace.yaml