Java to Rust
splick-backend-rust is a Cargo workspace that mirrors the Java service names, ports, and PostgreSQL schemas. The goal is a strangler fig: Kong can point a route at the Rust process for one context when that port is ready, without changing the public contract or the stream names.
| Crate or service | Role |
|---|---|
splick-shared | Tracing, Prometheus, health at /actuator/health, Redis publisher, outbox writer and relay engine |
splick-security | JWT and internal API checks for Axum |
splick-inbox | Inbox persistence |
splick-i18n | Message rendering |
splick-s3 | R2 adapter |
splick-idempotency | Idempotency key store |
splick-clients | Internal HTTP clients |
services/* | Auth, social, expense, feed, media, notification, communication, messaging, outbox relay |
The Rust workspace README still describes only the relay as the first candidate. The tree now contains Axum services with handlers and workers, and there are no todo!() placeholders under services/. Treat the README as behind the code. Cut over one Kong route only after the Rust service passes the same contract tests and writes the same schema. Do not run the Java and Rust process for one context on the same schema at the same time: both would claim outbox rows or serve conflicting writes.
Messaging and the relay both default to port 8088 inside Rust config. Override with env when both run on one host. The Java compose file already publishes the relay on host 8089.