Service Scaffolding

Scaffold new gRPC services with a single command.

riven service create

Scaffold a new gRPC service with proto definitions, Dockerfile, Helm chart, and implementation stubs. The service name should be kebab-case.

bash
riven service create <name> [options]

Options

OptionDefaultDescription
--lang <lang>nodeLanguage: node or python
--output <dir>./<name>Output directory
--no-crudSkip CRUD scaffold (generates a minimal service)
--node-version <ver>22Node.js version for Dockerfile

Examples

bash
# Node.js service with full CRUD scaffold
riven service create user-service
 
# Python service
riven service create ml-inference --lang python
 
# Minimal service (no CRUD boilerplate)
riven service create notification-service --no-crud
 
# Custom output directory and Node version
riven service create billing-api --output ./services/billing --node-version 22

Generated Structure

Node.js Service

The scaffolded Node.js service includes everything needed to build, test, and deploy:

text
my-service/
├── proto/
│   └── my_service.proto      # Service definition
├── src/
│   ├── __generated__/        # Generated stubs (after codegen)
│   ├── services/             # Implementation handlers
│   └── index.ts              # Server entrypoint
├── helm/                     # Helm chart for K8s deployment
├── Dockerfile
├── package.json
└── tsconfig.json

Python Service

text
my-service/
├── proto/
│   └── my_service.proto      # Service definition
├── src/
│   └── my_service/
│       ├── __generated__/    # Generated stubs (after codegen)
│       ├── services/         # Implementation handlers
│       └── main.py           # Server entrypoint
├── helm/                     # Helm chart for K8s deployment
├── Dockerfile
└── pyproject.toml

Post-Scaffold Workflow

After scaffolding a new service, follow these steps to get it running:

bash
# 1. Navigate to the service directory
cd my-service
 
# 2. Install dependencies
yarn install          # Node.js
# uv sync             # Python
 
# 3. Generate proto stubs
riven proto generate
 
# 4. Implement your service handlers in src/services/
 
# 5. Build and test locally
yarn build && yarn test   # Node.js
# uv run pytest           # Python
 
# 6. Build and push Docker image
riven publish my-service --registry <ecr-url>
 
# 7. Deploy to the platform
riven dev-center service deploy my-service --tag <version>

After scaffolding, run riven proto generate to generate the TypeScript or Python stubs from your proto definitions, then implement the service handlers in src/services/.