- Package Conventions
- Package Catalog
- Architectural Philosophy
- Protocol Implementation Details
- Architectural Philosophy
packages/
├── axum-health-check-api-server
├── axum-http-tracker-server
├── axum-rest-tracker-api-server
├── axum-server
├── clock
├── configuration
├── http-protocol
├── http-tracker-core
├── located-error
├── primitives
├── rest-tracker-api-client
├── rest-tracker-api-core
├── server-lib
├── test-helpers
├── torrent-repository
├── tracker-client
├── tracker-core
├── udp-protocol
├── udp-tracker-core
└── udp-tracker-server
console/
└── tracker-client # Client for interacting with trackers
contrib/
└── bencode # Community-contributed Bencode utilities
Prefix | Responsibility | Dependencies |
---|---|---|
axum-* |
HTTP server components using Axum | Axum framework |
*-server |
Server implementations | Corresponding *-core |
*-core |
Domain logic & business rules | Protocol implementations |
*-protocol |
BitTorrent protocol implementations | BitTorrent protocol |
udp-* |
UDP Protocol-specific implementations | Tracker core |
http-* |
HTTP Protocol-specific implementations | Tracker core |
Key Architectural Principles:
- Separation of Concerns: Servers contain only network I/O logic.
- Protocol Compliance:
*-protocol
packages strictly implement BEP specifications. - Extensibility: Core logic is framework-agnostic for easy protocol additions.
Package | Description | Key Responsibilities |
---|---|---|
axum-* | ||
axum-server |
Base Axum HTTP server infrastructure | HTTP server lifecycle management |
axum-http-tracker-server |
BitTorrent HTTP tracker (BEP 3/23) | Handle announce/scrape requests |
axum-rest-tracker-api-server |
Management REST API | Tracker configuration & monitoring |
axum-health-check-api-server |
Health monitoring endpoint | System health reporting |
Core Components | ||
http-tracker-core |
HTTP-specific implementation | Request validation, Response formatting |
udp-tracker-core |
UDP-specific implementation | Connectionless request handling |
tracker-core |
Central tracker logic | Peer management |
Protocols | ||
http-protocol |
HTTP tracker protocol (BEP 3/23) | Announce/scrape request parsing |
udp-protocol |
UDP tracker protocol (BEP 15) | UDP message framing/parsing |
Domain | ||
torrent-repository |
Torrent metadata storage | InfoHash management, Peer coordination |
configuration |
Runtime configuration | Config file parsing, Environment variables |
primitives |
Domain-specific types | InfoHash, PeerId, Byte handling |
Utilities | ||
clock |
Time abstraction | Mockable time source for testing |
located-error |
Diagnostic errors | Error tracing with source locations |
test-helpers |
Testing utilities | Mock servers, Test data generation |
Client Tools | ||
tracker-client |
CLI client | Tracker interaction/testing |
rest-tracker-api-client |
API client library | REST API integration |
http-protocol
implements:- URL parameter parsing
- Response bencoding
- Error code mapping
- Compact peer formatting
udp-protocol
handles:- Connection ID management
- Message framing (32-bit big-endian)
- Transaction ID tracking
- Error response codes
- Testability: Core packages have minimal dependencies for easy unit testing
- Observability: Health checks and metrics built into server packages
- Modularity: Protocol implementations decoupled from transport layers
- Extensibility: New protocols can be added without modifying core logic
Diagram shows clean separation between network I/O (servers), protocol handling, and core tracker logic