- C# 61.3%
- TypeScript 11.9%
- C++ 11.3%
- PowerShell 7.1%
- SCSS 4.4%
- Other 4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .voidbot | ||
| docs | ||
| recovered | ||
| scripts | ||
| site | ||
| tenants | ||
| work | ||
| www | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| LICENSE | ||
| README.md | ||
Erycina
Erycina is a creator-owned private-media publication platform. velvet is its
first tenant and https://velvet.erycina.org/ is that tenant's public static
projection.
The current body contains the Erycina daemon, a media ingest actuator, a
payment-driver boundary, and the Terminus relationship organ. Tenant
configuration, media, and public
projections are runtime data and live outside the tracked tree; see
tenants/README.md.
The platform was recovered on 2026-08-30 after a drive loss. The SHA-256
manifests proving that recovery are kept under recovered/; the bulk release
bodies were pruned from the working tree and remain in Git history. See
docs/recovery-evidence.md.
Authority
- Erycina owns tenants, offers, orders, processor selection, checkout initiation, provider notification verification, normalized payment facts, media policy, and delivery.
- Erycina owns identity, grants, revocation, and capability evaluation. Auth is in-house because the record that a named person is entitled to explicit material is too sensitive to hand to another system.
- Bifrost is the GameCult patron portal and may consume normalized Erycina payment facts. It is not required by other Erycina creators.
- Velvet is tenant data and branding. It is not a platform subsystem.
Focused checks
dotnet test work/ErycinaDaemon.Tests/ErycinaDaemon.Tests.csproj
Run the local daemon with:
dotnet run --project work/ErycinaDaemon --urls http://127.0.0.1:8787
The active Velvet manifest is
tenants/velvet/media.manifest.json; generated public output is under
tenants/velvet/public/. Originals and protected derivatives must never enter
that tree.
Payment drivers
The IPaymentDriver adapter scaffold covers CCBill, Segpay, Verotel, and Stripe.
CCBill, Segpay, and Verotel accept explicit offers. Stripe rejects them before
checkout and exists only for creators selling material permitted by Stripe.
Credentials in work/ErycinaDaemon/appsettings.json are empty placeholders.
Production readiness requires immutable order/fact persistence, trusted ingress,
merchant onboarding, secret injection, registered notification endpoints, and
provider-specific integration tests.
Website
The public project site at erycina.org is built from this repository: content
in www/, presentation in site/, and the shared GameCult-Quartz engine
resolved at build time.
node scripts/build-site.mjs # build to quartz-site/public
node scripts/build-site.mjs dev # build and serve with live reload
docs/website.md owns the site map and its build seams; site/BRAND.md owns the
visual language. The site's job is to say what operating an Erycina instance
actually means, which is why www/self-hosting/ is in the primary navigation
rather than filed under legal boilerplate.
Hosting
The canonical remote is self-hosted Forgejo at git.erycina.org, not GitHub.
That is deliberate: a project telling creators to own their infrastructure
should not keep its own source on someone else's platform. A read-only GitHub
mirror may follow for discoverability; it would not become the canonical copy.
The repository is public and anonymously clonable. Tenant data lives in a
separate private repository (see tenants/README.md), and the tracked tree
carries no credentials.
License and name
The software is MIT licensed. See LICENSE. Fork it, host it, sell hosting for
it, and build on it without asking.
The name is not covered by that grant. "Erycina" is reserved for the project and its intended nonprofit steward, Erycina.org. A fork is welcome to exist; it is not welcome to present itself as Erycina. Under a permissive license the name is the only remaining protection creators have against a hostile or careless fork trading on trust they extended to this one.
Copyright is held by "Erycina Contributors" rather than by a company, so that it can pass to Erycina.org once that entity exists without needing reassignment from every contributor.