# cedros-admin-server
Independent server shell for Cedros admin composition.
This crate is intentionally thin today:
- it does not depend on `cedros-data`
- it does not re-own `cedros-login` or `cedros-pay` business logic
- it establishes the standalone and embedded package boundary for Cedros Admin
- it can proxy or mount product-owned admin APIs under stable composition prefixes
## Embedded mode
Mount the shared router inside an existing Axum application:
```rust
use axum::Router;
use cedros_admin::{router_with_products, Config, ProductRouters};
let config = Config::default();
let admin_router = router_with_products(
&config,
ProductRouters {
login: Some(Router::new()),
pay: Some(Router::new()),
},
);
```
## Standalone mode
Run the binary directly:
```bash
cargo run -- --bind-addr 127.0.0.1:8080
```
Standalone composition uses these env vars:
- `CEDROS_ADMIN_LOGIN_UPSTREAM_URL`
- `CEDROS_ADMIN_PAY_UPSTREAM_URL`
When configured, the server proxies product-owned admin APIs under:
- `/login/*`
- `/pay/*`
That keeps `cedros-login` and `cedros-pay` as the owners of their own admin pages and APIs while giving Cedros Admin a real standalone composition server.