Organize backend into product executable and shared Go modules

This commit is contained in:
Stephan D committed 2026-09-12 14:14:08 +02:00
1 parent 981e84a4b4
commit f0720ec66b
382 files changed
+1944 -6989

No files matched your search

+38
View File
@@ -0,0 +1,38 @@
# SXCHNGE product BFF
This Go module is the customer-facing executable. `main.go` composes the copied
runtime and local customer service. Customers, auth, sessions and verification
own their models and supporting code; generic infrastructure comes from the
sibling `shared` library module.
## Run
Requires Go 1.27 and an SXCHNGE-owned MongoDB replica set for transactions.
Copy `config.example.yml` to an untracked `config.yml` in this directory. Set:
- `SXCHNGE_MONGO_URI`: URI for SXCHNGE's database.
- `SXCHNGE_JWT_SECRET`: random signing key, at least 32 bytes for HS256.
- `SXCHNGE_DOMAIN`: local hostname, such as `localhost:8082`.
- `SXCHNGE_API_PROTOCOL`: `http` locally, `https` in deployment.
- `SXCHNGE_API_ENDPOINT`: `/api/v1`.
From the repository root, run `make run-backend`, or run `go run .` here.
Flags: `-config.file`, `-version`, `-debug`. Configure exact browser origins in
YAML; browser refresh cookies require HTTPS. An empty local database needs no
organization, role, policy or seed; the runtime creates its indexes.
The runtime mounts health, login, API login, refresh, rotation and logout routes.
Customer/application-client records must exist for login. The customer service
supports atomic account/activation creation and deletion with session revocation.
Signup/profile HTTP wiring and verification delivery/completion remain follow-up
work. The frontend still uses dummy services.
Sendico integration is not wired. Its organization context belongs only to the
future public HTTP adapter. There is no unused public API snapshot in this module;
copy only the wire definitions consumed by an implemented adapter.
## Validate
`go test -race ./...` and `go vet ./...` validate this module. Tests require Docker
for disposable Mongo replica sets. Root `make test` and `make lint-backend` also
validate `shared`. See [source provenance](../PROVENANCE.md).