Leicmin

Introduction

[!CAUTION] Leicmin isn't even remotely usable at this point. All we can say is that it probably compiles. It also means that the entire README.md file is basically what this is going to be, not what it is today.

A web service for aggregating site management, providing age and geographic controls, and acting as an identity provider for other services.

Lecmin is a web application that aggregates memberships from various patreonage services and provides a single place to authenticate patrons. It also manages age verification and geographic limitations of the members in situations where those are needed for compliance.

Useful Links

Project Identifier

Most documentation, blog posts, and links will have the project identifier included in them.

019d129e-8934-7aa9-b665-8518469763ea

Purpose

Aggregation

The primary function of Leicmin is to gather up patron and subscriber lists from services like Patreon, SubscribeStar, or Ko-Fi and combines them into combined lists. For patronage sites that allow for tiered rewards, it provides the ability to map those tiers into combined tiered groups.

In addition, it allows for manual management of supporters to be integrated into the combined lists. This allows for memberships based on non-subscriber or non-monetary relationships like volunteers or temporary access.

At the moment, only Patreon linking is implemented.

Identity Provider

Leicmin can use those aggregated lists to provide unified authentication, in effect acting as an identity provider. At the moment, it can:

  • Generate a .htpasswd file using passwords from the members without exposing bare passwords

In the future, it will:

  • Act as an OpenID Connection provider

Age Verification

In situations that require it, Lecimin can coordinate and manage age verification (AV) across the providers, either by using the AV information provided by the patronage sites or a pluggable set of AV services or technologies. If a standard is provided by the browser, this site will adapt to those and provide them.

If set up as a co-op, the cost and results of the AV services can be shared.

None of this is done yet.

Geographic Limitations

Some jurisidctions have enacted laws to limit access to sites of certain content, such as ones that require age verification or limiting access to user-created content. Along with those, they also have additional limitation such as requiring periodic verification of the age. Lecimin manages those, either by allow for geoblocking those regions or controlling the sessions to the limitations of those laws that apply to the user.

This isn't done yet.

Cooperatives

Requiring age verification or performing geographical lookups on visitors can quickly add up in cost. The intent of Leicmin is to allow for small communities to shared the costs and difficulties, or to allow for one member of the community to run an instance for the benefit of others.

Non-Features

While there are a number of intended features with Leicmin, there are also things that will be be implemented. This is to keep the functionality of the site specific, but also avoid some conflicts of interest with other providers.

Payments

Leicmin will not connect to payment services to manage subscribers directly. This is partially to avoid areas of conflict, there are plenty of places that handle subscriptions (such as Patreon and Ko-Fi) that this one doesn't have to.

Membership Functions

There is no code for handling mass mailings, sending messages, or otherwise controlling subscriptions beyond manually adding someone to a group.

Social

Leicmin is intended be a utility application. It does one thing and gets out of the way. That means we won't be introducing social features, connecting friends, or gamification to encourage use.

No Flagship Instance

There will not be a flagship instance for Leicmin. This is for single creators and small communities.

Development

The source code can be found at:

Technology Stack

Leicmin is built on the following:

  • Nix (Flakes, Direnv)
  • Rust (Axum, Clap)
  • Postgres

Metadata

Project

Categories: