Files
netneutrality/docs
anthorob 05b4a2ab85 Refactor persistable-task system with self-registering tasks
Replaced metadata-driven reflection with self-describing `PersistableTask` types and a new `PersistableTaskRegistry`. Removed `persistable-tasks.json` and `TaskRegistry`, migrating to type-safe DI instantiation and explicit `restore()` methods. Fixed task restoration issues, ensuring `EmojiReactionRoleTask` and its `emojiMapping` now persist and restore correctly. Introduced `typeId()` for stable task identification, updated payload serialization for symmetry, and applied database migration to map FQCNs to logical IDs. Added unit tests for robust type discovery, payload symmetry, and registry behavior, ensuring no breaking changes.
2026-09-25 07:35:45 -04:00
..
2026-09-10 08:32:16 -04:00

Net Neutrality — Technical Documentation

This directory contains detailed technical documentation for the Net Neutrality Discord bot (me.bobert:netneutrality, version 3.0.0).

It is intended for developers working on the codebase. It documents every major system and subsystem, how they fit together, and the end-to-end flows that tie them.

Table of contents

Document Subsystem
architecture.md High-level architecture, startup/shutdown lifecycle, tech stack
events.md Event handling & routing (EventsHandler)
contexts.md Contexts — the abstraction over Discord events
commands.md Commands — message & slash commands, dispatch, options
tasks.md Tasks — button/emoji/modal/step/built-in/persistable/scheduled tasks
persistence.md Database — Hibernate/JPA, Flyway, entities, repositories, services
music.md Music — Lavalink node & client, queue, event dispatch
web-api.md HTTP Web API — internal control & introspection server
threading.md Threading & scheduling infrastructure
utilities-and-bootstrap.md Utilities, configuration, logging, exceptions

How to read this documentation

Start with architecture.md for the big picture and the startup sequence. Then read events.md and contexts.md, because almost everything else is triggered through a Context produced by the EventsHandler. From there, the two primary execution paths are commands.md and tasks.md.

Conventions

  • Class names are given fully qualified on first mention, then by simple name.
  • Database entity classes are prefixed with O (e.g. OGuild), and are documented in persistence.md.
  • Environment variables / configuration keys use the NETNEUTRALITY_* and MYSQL_* prefixes and are documented in utilities-and-bootstrap.md.