Homework Central

Lead · Jun – Sep 2026

A community platform for people to collaborate on each other’s education, built to replace a 16,000-member Discord. I owned the architecture: API, frontend, permissions, moderation, and the one-command local stack.

16,000
Discord members the platform replaced
56
Merged pull requests
35,600+
Trainable weights in the moderation network
18
Commits on main since the July rebase

Production application architecture

A C#/.NET, React, and PostgreSQL platform that replaced a 16,000-member Discord — bitmask authorization, an ML-assisted moderation pipeline, and dozens of merged pull requests since June 2026.

Why it exists

Homework Central grew out of a 16,000-member study community that had outgrown manual moderation. With no staff reliably online, rule violations went untracked, tutoring requests and staff applications sat unresolved, and students often couldn't get the academic help they needed. The platform exists to automate what manual moderation couldn't keep up with — moderation queues, tutoring matches, and staff applications — so the community keeps running between the hours a volunteer staff can cover.

Running it

The stack runs end to end: the ASP.NET Core API on .NET 10 against PostgreSQL, the React frontend on top of it, and SignalR between them. Below is the General public room after signing in through /devlogin as one of the seeded personas: a plain chat message, a second message with real Markdown and LaTeX rendered by KaTeX, and a reply from a second, distinct account with an @mention in it.

Homework Central's General public room signed in as the persona MarieCurie: a good-morning message, then a message rendering a LaTeX display equation and an inline fraction, bold text, a two-item checklist and inline code together, and below it a reply from a different account, DevAdmin, with a highlighted @MarieCurie mention.
Captured 16 Sep 2026 from a local run at commit d3e7878. Every message shown was written for this capture, not organic chat content: MarieCurie posted the first two, and DevAdmin posted the third. The accounts are the repository’s own development seed data, not real members. Each developer persona provisions its own tenant database, which is the isolation this page describes.

That @mention is a real, resolved one, not just styled text. It went through the API, matched a recipient, and created a notification MarieCurie can read in her own inbox below. Getting there surfaced a real edge of the isolation above: two ordinary personas can only notify each other inside the same tenant database, and each persona here is the sole user of its own. Only DevAdmin (the developer-tools admin account, a real login rather than a persona, which the notify policy lets reach every tenant) could actually ping her.

Homework Central's inbox signed in as MarieCurie: one entry under General from DevAdmin, with the message text and an @MarieCurie mention highlighted, timestamped in UTC.
Same run, commit d3e7878, 16 Sep 2026. This is the notification the message above created, read from MarieCurie’s own inbox.
Read the technical write-up

What it is

The public README describes a React + Vite frontend, an ASP.NET Core API on .NET 10, and PostgreSQL, started by scripts/run-dev with Docker for Postgres and FCaptcha. That is the skeleton. The git record shows a Discord-shaped product grown in public: login, roles, rooms, mentions, tickets, media, a tutor path, and a neural monitor that trains on moderation concepts.

I spent four years tutoring in the same community. The migration was not a greenfield social app; it was a permissioned workplace for homework help, with staff tools that Discord never gave us.

Architecture that the history forced

Bitmask authorization. PR #4 (28 Jun 2026) implemented the MVP after a conventional RBAC login (#3). Roles and room rights are packed into masks so a check is a bitwise test, not a join-heavy policy walk. Later PRs (#25–#26) had to fix custom role masks, category merge, and infrastructure permissions. That is evidence the model was in live use, not a sketch.

Tenant isolation for developers. #7 added /devlogin; #9 gave each developer a tenant database. That is how a 16k-member production shape can be hacked on locally without sharing one dirty Postgres volume.

Rooms as resources. #12 introduced a visibility primitive and chat-room access. Custom channels, public-to-private updates (#27), and the later water-theme chrome (#40–#47) sit on that primitive rather than a hard-coded channel list.

Moderation as a pipeline. #50 (16 Jul) brought tickets, media, votes, Trial Tutor, and assessments. The next week reverted TorchSharp, restored dual CPU ChatMonitor models, and added a tutor subject processor (aliases, case-fold, spell-check) shared with ticket preface checks. Training then moved to fewer LLM round-trips, a 2D neural mesh with a Kubernetes split, and a live audit/weight UI (August).

Where it stood

Main’s first 15 commits stopped at the 15 Jul UI rebase, but the PR train continued: neural-net work through August, DevOps documentation and training-pause in early September, and branches for memory optimization (Rust LRU with C# fallback) and a safer Postgres reset that must not wipe Ollama, uploads, or MinIO. The migration completed in September 2026. Below is that neural-net branch actually running: a two-stage cascade (a small context router feeding a much larger evidence-and-category model) that scores chat messages for moderation and tutoring, visualized as the architecture really is, node for node and edge for edge.

Homework Central's admin-only Neural Network page: a moderation cascade map showing stage 1, a small concept-context router network diagram, feeding stage 2, a larger evidence-and-category network, with runtime HashedMlpV8, 21,887 parameters, 12 support and 101 softmax classes, above a 3D mesh visualization of the stage-2 network's 429 nodes and 21,544 edges, labeled input through output along its layers.
Captured 23 Jul 2026 at commit 59e153d on the unmerged cursor/training-speed-c7b9 branch, signed in as DevAdmin, the only account with the ManageServerInfrastructure permission this page requires. This shows the real, initialized architecture, not a trained result: generating training examples calls a local Ollama model this environment doesn’t have, so no training pass was run here. The database is seeded but otherwise empty: 12 approved examples, 0 pending feedback, which is what a fresh install of this branch actually looks like.

Homework-Central on GitHub — the full commit and pull request history.