Alysia economy service
  • Rust 49.2%
  • Shell 36.9%
  • Dockerfile 12.8%
  • Just 1.1%
Find a file
Valentin LAMBOLEY-DEPOIRE e493befc0c
All checks were successful
CI / ci-freshness: vendored files match TEMPLATE_REV (push) Successful in 1s
CI / ci: lint, test, build (push) Successful in 54s
fix: skip image push when REGISTRY_TOKEN is absent
The secret exists only on the monorepo; without the guard the push step
fails the pipeline on every main build. The build itself stays verified by
ci-build; adding the secret re-arms the push with no workflow change.
2026-10-08 16:11:12 +02:00
.github/workflows fix: skip image push when REGISTRY_TOKEN is absent 2026-10-08 16:11:12 +02:00
.sqlx feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
ci feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
crates/economy feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
.dockerignore feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
.gitignore feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
Cargo.lock feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
Cargo.toml feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
clippy.toml feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
deny.toml feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
Dockerfile feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
justfile feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
justfile.ci feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
README.md fix: skip image push when REGISTRY_TOKEN is absent 2026-10-08 16:11:12 +02:00
rust-toolchain.toml feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00
rustfmt.toml feat: extract economy service from the monorepo 2026-10-08 16:04:49 +02:00

alysia-economy

The economy service of the Alysia platform, extracted from the Alysia monorepo (services/economy/). Owns the accounts table and serves POST /v1/accounts/{uuid} (idempotent creation at balance 0), plus the common surface every Alysia service exposes (healthz, ping, gRPC Pinger + grpc.health.v1). The durable JetStream stream (ALYSIA_ECONOMY) is ensured at boot; the socle taxonomy has no event for an account creation (BalanceChanged covers credits and debits), so the route publishes nothing.

Layout

Path Role
crates/economy/ The service crate (lib + binary + integration tests)
crates/economy/migrations/ accounts schema, run at startup
.sqlx/ Committed offline query metadata, scoped to this service's 3 queries
Dockerfile Single-binary image (alysia/economy), built from this repo
justfile.ci + ci/ Vendored from alysia-ci-templates at TEMPLATE_REV (see .github/workflows/ci.yml) — never patch locally

Dependencies

alysia-* crates come from the versioned libs release train as exact-tag git dependencies — never a branch, never a vendored copy. All alysia-* deps move together on a single tag (lockstep releases, currently libs-v0.1.0):

alysia-service = { git = "https://git.zeto.fr/alysia/alysia-libs.git", tag = "libs-v0.1.0" }

Development

just ci-lint                              # fmt + clippy + machete + deny
just --set test_args "" ci-test           # full suite (needs a container runtime for the integration tests)
just --set image "alysia/economy" ci-build # local image build (tag `local`); CI pushes `alysia/economy:<sha>` on main

The integration tests need Postgres/NATS containers (testcontainers): DOCKER_HOST must point at a Docker-compatible socket.

Image push

ci-build produces alysia/economy:local. CI pushes git.zeto.fr/alysia/alysia-economy/economy:<sha> on main/tags — but only once a REGISTRY_TOKEN secret exists on this repo (it does not yet; the push step skips loudly until then). No image is ever pushed by hand.