[project]
name = "microservices-example"
version = "1.0.0"
description = "Microservices with Run 2.0 - no Docker required"
[dependencies]
"wasi:http" = "0.2.0"
"wasi:io" = "0.2.0"
"wasi:filesystem" = "0.2.0"
"wasi:random" = "0.2.0"
"wasi:clocks" = "0.2.0"
[components.api-gateway]
source = "services/api-gateway/src/lib.rs"
language = "rust"
wit = "wit/api.wit"
capabilities = [
"net:listen:8080",
"stdout",
"stderr",
"clock"
]
[components.auth-service]
source = "services/auth/src/lib.rs"
language = "rust"
wit = "wit/api.wit"
capabilities = [
"random",
"clock",
"stdout"
]
[components.user-service]
source = "services/users/src/lib.rs"
language = "rust"
wit = "wit/api.wit"
capabilities = [
"fs:read:/data/users",
"fs:write:/data/users",
"stdout"
]
dependencies = ["auth-service"]
[components.order-service]
source = "services/orders/src/lib.rs"
language = "rust"
wit = "wit/api.wit"
enabled = false
capabilities = [
"fs:read:/data/orders",
"fs:write:/data/orders",
"stdout"
]
dependencies = ["auth-service", "user-service"]
[components.notification-service]
source = "services/notifications/src/lib.rs"
language = "rust"
wit = "wit/api.wit"
enabled = false
capabilities = [
"net:connect:smtp.example.com:587",
"stdout"
]
dependencies = ["user-service"]
[bridge.postgres]
image = "postgres:15"
env = { POSTGRES_PASSWORD = "dev-password" }
ports = { 5432 = 5432 }
[bridge.redis]
image = "redis:7"
ports = { 6379 = 6379 }
[dev]
hot_reload = true
port = 8080
verbose = false
watch = [
"services/**/*.rs",
"services/**/*.wit"
]
services = ["api-gateway", "auth-service", "user-service"]
[build]
output_dir = "dist"
target = "wasm32-wasip1"
opt_level = "release"