- TypeScript 60.7%
- CSS 15.4%
- JavaScript 13.9%
- HTML 9.1%
- Dockerfile 0.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
build and publish / check-build-publish (push) Successful in 17s
|
||
| .agents/skills/design-taste-frontend | ||
| .forgejo/workflows | ||
| deploy/chart | ||
| public | ||
| src | ||
| test | ||
| .dockerignore | ||
| .gitignore | ||
| AGENTS.md | ||
| bun.lock | ||
| Dockerfile | ||
| MEMORY.md | ||
| package.json | ||
| README.md | ||
| skills-lock.json | ||
| tsconfig.json | ||
arcelia status
A small Bun and Elysia status page for Arcelia's public website, Forgejo, and Minecraft server. It reports current availability only; results are kept in memory and are not stored as history.
local setup
Requirements:
- Bun
- a reachable Minecraft Java server with GameSpy Query enabled
Install dependencies:
bun install --frozen-lockfile
The checked-in config targets Arcelia's live public services. Start the development server:
bun run dev
Open http://localhost:3000. Run all checks with:
bun run check
Tests mock network transports and do not contact production services.
configuration
src/config.ts contains the listen settings, intervals, and one typed services array. Add another object to that array to monitor another service; the monitor and page render it automatically.
HTTP service:
{
type: "http",
id: "website",
name: "main website",
url: "https://arcelia.space",
}
Minecraft service:
{
type: "minecraft",
id: "minecraft",
name: "Minecraft",
host: "arcelia.space",
javaPort: 42069,
queryPort: 42070,
}
IDs must be unique. HTTP URLs must represent the public user path. Minecraft ports are TCP for server-list ping and UDP for Query.
Minecraft Query
The server must enable Query in server.properties and expose its UDP port publicly:
enable-query=true
query.port=42070
query.port may match the Java port, but it does not have to. Keep the service object's queryPort in sync and allow UDP traffic to it. javaPort is the TCP port used for server-list ping.
Minecraft is:
operationalwhen server-list ping succeeds, even if Query stats are unavailabledegradedwhen ping fails but Query still respondsoutagewhen both fail
endpoints
GET /api/statusreturns the latest in-memory status snapshot.GET /healthzreports whether this application is running. Monitored service outages do not make it unhealthy.
The first probe cycle completes before the HTTP server begins listening. Later cycles run at the configured fixed interval and never overlap.