Skip to main content
Conventions exist so any contributor can read any file and know what is happening. The rules are few, and each links to the published standard it comes from.

Naming

Follow the existing names in each repo. They follow the conventions of their own ecosystems: Biznet GIO enforces its own name limits, and the examples must respect them. Keep these in mind when you rename things:
  • VM names (vm_name / vmName): 6 to 16 characters
  • Disk service names (service_name / serviceName): 6 to 16 characters
  • Object Storage labels (label / storageLabel): 6 to 16 characters
  • SSH and console usernames: 6 to 32 characters, letters, numbers, dash, dot only
The reference pages document the limits per resource: Terraform NEO Lite, Pulumi NEO Lite, and their neighbors. The limit ranges are why the examples use short names like example-app instead of long descriptive ones.

Bilingual comments

Every code file in the example repos starts with a banner comment and is commented in English and Bahasa Indonesia throughout. The format is fixed:
Then each section gets a divider with both languages:
The rules:
  • English first, Indonesian second, always.
  • Casual tone, like explaining to a friend. No formal documentation speak inside code comments.
  • Technical terms stay in English inside code formatting, both in comments and on the docs site.
  • New code you add must follow the same pattern. This is the single most important convention in these repos; it is the whole point of them being beginner friendly.
The docs site pages are not bilingual per file. Each page exists twice, once in English and once under id/, following AGENTS.md in the docs repo.

No em dashes or en dashes

This project never uses em dashes or en dashes, in docs pages, in code comments, in READMEs, or in commit messages. Hyphens only. The rule keeps every file ASCII-safe and every contributor’s editor consistent, and it applies to both languages. When a sentence needs a pause, rewrite it or use a comma or a hyphen.

Formatting, per language

Formatting follows each ecosystem’s canonical tool. The links go to the official documentation for each: Run the formatter before committing, in any language you touched. If a file’s formatting drifts from its neighbors, your PR review will ask you to fix it.

Version pinning

Every example pins the exact SDK and provider versions it was built against. Do not bump versions casually, and never leave a version unpinned in a new folder: The provider SDKs live in the Terraform Registry and the Pulumi Registry respectively, see Registries. Version bumps happen deliberately, in their own PR, mirrored across all folders at once so the repo never has a mix.

Cost safety

These repos create real, billable infrastructure, so they encode safety rules directly into the code:
  • pay_with_credit_card (Terraform) and payWithCreditCard (Pulumi) default to false everywhere. A false order still creates the real resource but leaves the invoice unpaid in the portal. Read Billing and orders for the full picture.
  • Destructive or one-shot options like power_state, rebuild_os, migrate_to_pro, and rebuild_trigger are present in the code but commented out. Each carries a comment saying what it does and that it wipes disks or spends money. Uncomment one at a time, never a batch.
  • baremetal/ and gpu/ READMEs carry an extra cost warning because they are the most expensive product lines. Keep those warnings if you touch those folders.
  • Secrets never enter git. Terraform uses the gitignored terraform.tfvars with a committed .example template; Pulumi uses pulumi config set --secret and Pulumi.<stack>.yaml files are gitignored.
Any new example you add must inherit all four rules. A PR that adds a billable default or commits a secret gets the review it deserves.

Docs site conventions

The docs repo has its own writing rules, all in AGENTS.md:
  • Every page has title and description frontmatter; descriptions are one sentence.
  • Headings are sentence case; prose is active voice, second person.
  • English and Indonesian pages must stay in sync with the same relative path.
  • Internal links in Indonesian pages start with /id/.
  • No em dashes or en dashes, same as the example repos.
When you change behavior in an example repo, check whether any docs page shows the old behavior. If it does, fix the docs in the same PR or a linked one, in both languages. The GPU keypair and account id typing fixes were exactly this kind of paired change.