Christian Galo 0cd80f9125 Make catalog and entitlement specs ladder-aware
Move change files into openspec/changes/archive/2026-05-24. Update
member-entitlement-view and member-product-discovery specs to group
plans
by ladder, mark current rung per ladder, render products under each
ladder
they belong to, separate add-ons as stackable, specify move-control
enablement and disabled-with-reason behavior, and require the
entitlement
view to be read-only with no plan-change controls.
2026-05-24 20:28:17 -05:00
2026-03-31 01:48:08 -05:00
2026-02-02 22:19:16 -06:00
2026-05-23 21:51:16 -05:00
2026-05-24 19:59:45 -05:00
2026-05-24 19:59:45 -05:00
2026-05-23 21:51:16 -05:00

member-console

Member console application for users to create, acccess, and manage their accounts associated with the Wiki Cafe MSC (multi-stakeholder co-operative).

Database Management

See docs/database-management.md for migrations, per-module schema ownership, and sqlc code generation.

Building and publishing container image

Building and publishing the container image is done using Docker Buildx. This allows us to build multi-platform images for both ARM64 and AMD64 architectures.

docker buildx build \
  --platform linux/arm64,linux/amd64 \
  -t git.coopcloud.tech/wiki-cafe/member-console:latest \
  -t git.coopcloud.tech/wiki-cafe/member-console:$(date +%Y-%m-%d) \
  --push \
  .

Deploying image to production

Generating Secrets

To generate secure values for session-secret and csrf-secret, use the following commands:

For session-secret (a base64-encoded random string):

openssl rand -base64 32

Example output:

rJcniy2aWl3vwBcrMJfqsTL+Wys7EwDx/RC+DRrKcYg=

For csrf-secret (a 32-character hexadecimal string):

openssl rand -hex 16

Example output:

e157b42a5b608882179cb4ac69c12f84

Ensure these secrets are securely stored and persisted for application use.

Development

Building

Compile to ./member-console

make build

Testing

Run the unit tests — database- and Stripe-backed tests skip themselves without a DB:

go test ./...

For the full suite, point TEST_DATABASE_URL at a migrated Postgres (the test stack works). See docs/testing.md for the kinds of tests, what each covers, and how to run them.

Linting

Ensure no handler bypasses SafeTemplates by writing directly to ResponseWriter

make lint-templates

lint-templates scans internal/server/ for .ExecuteTemplate(w, in any file. All template rendering must go through h.Templates.Render() — see internal/server/render.go for why.

Database

Regenerate sqlc query code after schema changes

make sqlc-generate

Development status

See status/ for the development roadmap, milestones, and notes.

Description
Member console application for users to create, acccess, and manage their accounts associated with the Wiki Cafe MSC.
Readme AGPL-3.0 22 MiB
Languages
Go 79.3%
HTML 14.8%
Shell 3.4%
JavaScript 1%
PLpgSQL 0.9%
Other 0.4%