FireDevOps FireMUD & Ops Projects

📦 FireMUD System Architecture: gRPC API Style & Versioning Guidelines

These guidelines define how FireMUD microservices design and document their gRPC APIs. Following a consistent structure makes it easier for teams to evolve services over time and share tooling.

✅ Service and RPC Naming

✅ Versioning Strategy

📁 Proto File Layout

All protobuf definitions live in a top‑level protos/ directory outside service source trees. Files are organized by service folder and versioned subdirectory:

protos/
  player/
    v1/
      player_service.proto
      player_types.proto
  entity/
    v1/
      entity_service.proto
      entity_types.proto
  shared/
    errors.proto
    common_types.proto

Each service folder typically includes:

Shared message types (for example EntitySummary or ErrorDetail) live under protos/shared/.

🛠️ Tooling

🔄 Schema Evolution Rules

⚠️ Error Handling (Optional)

🧪 Example Code Generation (Java)

Using buf.gen.yaml:

version: v1
plugins:
  - name: java
    out: gen/java
    opt: lite
  - name: grpc-java
    out: gen/java

Then compile generated sources via Gradle:

sourceSets["main"].java.srcDirs("gen/java")

Adopting these conventions helps keep FireMUD services consistent and makes it easier for new contributors to work with the APIs.