Christian Galo fce1e7711e Promote integrations to M9, metering to M10
Update milestones and status docs: move extension/integration work to M9
and reassign network/storage metering and related billing work to M10.
Clarify downgrade semantics (clamp vs force_reduce), add
storage-metering
deferred/blocked notes, and mark the upgrade flow as done.
2026-05-31 03:21:12 -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-30 23:18:46 -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 23 MiB
Languages
Go 80.2%
HTML 14.3%
Shell 3.1%
JavaScript 1%
PLpgSQL 0.8%
Other 0.4%