Add Node.js backend API with mock providers for all 15 vendors
Express app on port 3000 with /api/status and /api/health endpoints. Polls all providers every 2 minutes and caches results in memory. Each vendor is a self-contained ESM module with 10s timeout and graceful failure handling. Mock data matches existing frontend. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
export const name = "Apple";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "All services running normally.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "Classlink";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "All services running normally.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "DRC";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "outage",
|
||||
message: "INSIGHT portal is currently unavailable. DRC is aware of the issue.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "EdInsight";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "Data analytics platform operational.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "FinalSite";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "All services running normally.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "Follett";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "All services running normally.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "Fortinet";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "FortiGuard and FortiCloud services operational.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "Google Workspace";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "All services running normally.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import * as microsoft365 from "./microsoft365.js";
|
||||
import * as spamtitan from "./spamtitan.js";
|
||||
import * as powerschool from "./powerschool.js";
|
||||
import * as classlink from "./classlink.js";
|
||||
import * as apple from "./apple.js";
|
||||
import * as drc from "./drc.js";
|
||||
import * as finalsite from "./finalsite.js";
|
||||
import * as googleWorkspace from "./google-workspace.js";
|
||||
import * as follett from "./follett.js";
|
||||
import * as edinsight from "./edinsight.js";
|
||||
import * as raptor from "./raptor.js";
|
||||
import * as schoolmessenger from "./schoolmessenger.js";
|
||||
import * as fortinet from "./fortinet.js";
|
||||
import * as mcgrawHill from "./mcgraw-hill.js";
|
||||
import * as localInfrastructure from "./local-infrastructure.js";
|
||||
|
||||
export const providers = [
|
||||
microsoft365,
|
||||
spamtitan,
|
||||
powerschool,
|
||||
classlink,
|
||||
apple,
|
||||
drc,
|
||||
finalsite,
|
||||
googleWorkspace,
|
||||
follett,
|
||||
edinsight,
|
||||
raptor,
|
||||
schoolmessenger,
|
||||
fortinet,
|
||||
mcgrawHill,
|
||||
localInfrastructure,
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "Local Infrastructure";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "Firewall uptime 42d. WAN throughput nominal.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "McGraw Hill";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "All platform services operational.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "Microsoft 365";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "All services running normally.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "PowerSchool";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "degraded",
|
||||
message: "Slow response times reported. PowerSchool is investigating.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "Raptor";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "Visitor management online.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "SchoolMessenger";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "Messaging services operational.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
export const name = "SpamTitan";
|
||||
|
||||
export async function checkStatus() {
|
||||
return {
|
||||
name,
|
||||
status: "operational",
|
||||
message: "Email filtering operational.",
|
||||
lastUpdated: new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user