Compare commits

...
Author SHA1 Message Date
Public Source Publisher a571693c0d Publish curated Ludarium source from e15d06f97e5204dd853ef3d25e326d8c6d49936f
Public source validation / source (push) Successful in 2m8s
2026-10-01 16:41:04 +00:00
Public Source Publisher 93c840d38b Publish curated Ludarium source from 781315f3f71031995159287f425aeac47a77515b
Public source validation / source (push) Successful in 3m8s
2026-09-30 00:23:05 +00:00
12 changed files with 605 additions and 563 deletions

No files matched your search

+1 -1
View File
@@ -11,7 +11,7 @@ jobs:
source: source:
name: source name: source
if: ${{ gitea.event_name != 'pull_request' || gitea.event.pull_request.head.repo.full_name == gitea.repository }} if: ${{ gitea.event_name != 'pull_request' || gitea.event.pull_request.head.repo.full_name == gitea.repository }}
runs-on: ubuntu-latest runs-on: linux-validation
timeout-minutes: 45 timeout-minutes: 45
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
File diff suppressed because it is too large. Load diff
+30
View File
@@ -1,5 +1,8 @@
# Ludarium # Ludarium
<p align="center"><strong>Your game archive, searchable and accountable.</strong></p>
<p align="center"><a href="#explore-the-interface">Interface</a> · <a href="#what-you-can-do">Features</a> · <a href="#quick-start">Quick start</a> · <a href="#architecture">Architecture</a></p>
**A local-first, self-hosted catalog for game archives.** Ludarium turns read-only folders of ROMs, **A local-first, self-hosted catalog for game archives.** Ludarium turns read-only folders of ROMs,
disc images and archived Windows installers into a searchable library with provenance, integrity disc images and archived Windows installers into a searchable library with provenance, integrity
evidence and an explicit review queue. It is built for Unraid, but the supplied Compose deployment evidence and an explicit review queue. It is built for Unraid, but the supplied Compose deployment
@@ -7,6 +10,14 @@ also works on a regular Docker host.
![Ludarium home screen with an empty, privacy-safe example archive](docs/screenshots/living-archive-audit/audit-home-desktop.png) ![Ludarium home screen with an empty, privacy-safe example archive](docs/screenshots/living-archive-audit/audit-home-desktop.png)
## Explore the interface
These captures show a deliberately empty, privacy-safe example archive. Your own files and metadata appear only after you add read-only library mounts and scan them.
| Searchable library | Review queue |
| --- | --- |
| ![Ludarium library without imported private files](docs/screenshots/living-archive-audit/audit-library-desktop.png) | ![Ludarium review queue](docs/screenshots/living-archive-audit/audit-attention-desktop.png) |
## What you can do ## What you can do
- discover and fingerprint files without renaming, moving or executing them; - discover and fingerprint files without renaming, moving or executing them;
@@ -65,6 +76,25 @@ for the content you index and for complying with the rules that apply to it.
no credentials are configured. no credentials are configured.
- Report vulnerabilities privately using [`SECURITY.md`](SECURITY.md). - Report vulnerabilities privately using [`SECURITY.md`](SECURITY.md).
## Architecture
```mermaid
flowchart LR
Libraries[Read-only archive mounts] --> Scanner[Inventory and fingerprints]
Scanner --> Review[Explicit review queue]
Review --> Catalog[(PostgreSQL catalog)]
Catalog --> Web[React library and collections]
Catalog --> Exports[Portable catalog exports]
```
The cataloging pipeline only reads mounted source libraries. PostgreSQL stores identities, provenance, collections and review state; cache, exports and optional player data use separate writable locations. This separation lets you re-scan or restore the catalog without changing original game files.
## When an archive appears empty
Check the container's read-only library mounts and file permissions, then inspect scan progress and the reported format confidence. A mounted directory can be accessible without containing a recognized game format. Review uncertain candidates before correcting metadata or resolving duplicate groups.
Preserve manual decisions and application state during upgrades. Keep a backup of the catalog in addition to the original archive: rescanning source files does not recreate your notes, collections and review decisions. Exporting a launcher catalog does not grant rights to redistribute its games or binaries.
## Development ## Development
The backend targets .NET 10, the UI uses React 19 and Vite, and controller helpers use Python's standard The backend targets .NET 10, the UI uses React 19 and Vite, and controller helpers use Python's standard
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
View File
File mode changed.
Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

+2
View File
@@ -43,6 +43,8 @@ deploy/verify-release-identity.sh
deploy/verify-source-manifest.sh deploy/verify-source-manifest.sh
docs/PUBLIC_SOURCE_BOUNDARY.md docs/PUBLIC_SOURCE_BOUNDARY.md
docs/screenshots/living-archive-audit/audit-home-desktop.png docs/screenshots/living-archive-audit/audit-home-desktop.png
docs/screenshots/living-archive-audit/audit-library-desktop.png
docs/screenshots/living-archive-audit/audit-attention-desktop.png
fixtures/** fixtures/**
global.json global.json
public-source.allowlist public-source.allowlist