LibreTT Player Registry
Portable player and club registry with public profiles, WordPress administration, replication, and one-way imports into LibreTT Desktop.
by Aleksa Dimitrijević · github.com/tradicije/librett-player-registry
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/tradicije/librett-player-registry/archive/refs/heads/main.zipA portable player and club registry with public profiles, WordPress administration, and one-way imports into LibreTT Desktop.
Status: early implementation. An unreleased WordPress development build provides migrations, primary registry identity setup and private player/club draft administration (create, search, edit, archive/restore). The draft extension has not been runtime verified. Memberships, public profiles/API, import/export and synchronization remain planned. See implemented scope and actual verification.
What we are building
One plugin named LibreTT Player Registry (librett-player-registry) can create a new empty registry or host a replica of an existing registry. It includes administration, public searchable profiles and an API; WordPress is the first adapter, rather than part of the domain model.
A federation or club in any country can create its own dataset. No Serbian player database is bundled with the plugin. One registry can move between domains or be mirrored by multiple sites without changing player identities.
Core decisions
- Custom tables for registry data; no dependency on player/club CPTs or postmeta.
- Independent domain/application layers and replaceable persistence/HTTP/media adapters.
- Stable registry identity and player/club UUIDs, with separate public profile slugs.
- A primary publishes accepted changes. Replicas serve validated copies and can submit proposals for review, rather than editing shared records directly.
- A separate offline recovery authority can authorize a replacement primary if the original host disappears. Authority conflicts and unavailable updates require explicit handling.
- Versioned JSON snapshots and change feeds share one model; neither is a raw WordPress database export.
- LibreTT Desktop imports records into its local database. Users can edit them locally; no desktop edits are uploaded to the online registry.
- Public datasets, media and private administrative data have different publication and backup requirements.
LibreTT Desktop integration — planned
A LibreTT Desktop user will be able to download a player database from this registry and keep it locally for offline use. The flow is one way: online registry → LibreTT Desktop. Subsequent profile edits in Desktop stay on the user's computer; refreshing registry data preserves explicit local overrides and historical tournament snapshots.
This import channel sends no local profile edits, private notes, attendance, payments or tournament data back to the registry. It protects the user's local data from being uploaded through this integration and protects the online database from changes made in Desktop. The registry integration is planned and has not been implemented yet.
Dataset license selection — planned
The administrator will choose the database license in the plugin settings in wp-admin: ODbL 1.0, CC0 1.0, CC BY 4.0, CC BY-SA 4.0, All rights reserved, or Custom. For Custom, the administrator can provide a license URL or upload a license document. No dataset license is selected automatically. This settings workflow is planned and is not implemented yet.
Dataset licensing is separate from the plugin's AGPL-3.0-or-later license, personal-data publication authorization and photo permissions.
Suggested first milestone
Create and manage an empty registry on one WordPress site, publish player/club profiles, and validate portable JSON export/import. Next add desktop integration, followed by verified replicas, proposals and recovery. The design accounts for later trust features; they are not present-day guarantees.
Documentation
Start with the documentation index.
- Development plan
- Architecture
- Data model and lifecycle
- Publication policy proposal
- Proposed protocol
- Snapshot contract — draft 1
- Desktop integration
- Trust and recovery
- Administrator workflows
- Architecture decision
- Contributing, security policy, agent instructions
Phase 0 documentation preparation is complete: readiness and entry gates, schema/examples, and reviewed compatibility/tool targets. The first implementation slice and its tests are now recorded separately.
Development
Composer dependencies and test configurations are committed. Follow development setup on a disposable WordPress site; fresh activation creates empty setup/private-draft tables and a separate administrator action creates the registry UUID. No production installer or release ZIP is published.
Author and license
Copyright (C) 2026 Aleksa Dimitrijević.
Code and project documentation are licensed under the GNU Affero General Public License, version 3 or any later version (AGPL-3.0-or-later); see LICENSE. Commercial redistribution is permitted subject to the license. No warranty is provided.
The software license does not automatically license player datasets, personal information, photographs or third-party material. Their permissions and publication terms must be specified separately. No registered trademark status is claimed.