Parameters and content types
Nona stores config as entries keyed per environment.
Each entry has:
- a key
- a value
- a content type
- a scope
This is the core building block behind both major Nona use cases:
- feature flags
- broader remote config
Supported content types
Section titled “Supported content types”textnumberbooleanjson
When to use each type
Section titled “When to use each type”boolean
Section titled “boolean”Use boolean for:
- feature flags
- kill switches
- on/off rollout gates
Use text for:
- labels and copy
- simple string values
- identifiers that do not need to be parsed as numbers or JSON
number
Section titled “number”Use number for:
- limits
- thresholds
- percentages
- retry counts
Use json when multiple related values belong together, for example:
- structured module settings
- grouped UI options
- objects a client can deserialize directly
Practical examples
Section titled “Practical examples”| Key | Example value | Good content type |
|---|---|---|
Features:Checkout |
true |
boolean |
App:BannerText |
Hello |
text |
Checkout:MaxItems |
50 |
number |
Checkout:Settings |
{"color":"green","enabled":true} |
json |
How to create one
Section titled “How to create one”In admin:
- open
Projects - open the project
- select the environment
- click
Add Parameter - enter the key and value
- pick the content type that matches the value shape
- pick the scope
- click
Create
With the CLI:
nona entries set \ --project storefront \ --environment production \ --key Checkout:MaxItems \ --value 50 \ --scope server \ --content-type numberChoosing between separate keys and JSON
Section titled “Choosing between separate keys and JSON”Use separate keys when:
- values change independently
- you want smaller, clearer reads
- a single setting is operationally important on its own
Use JSON when:
- the values belong together
- the client naturally consumes them as one object
- keeping the structure together makes the configuration easier to reason about
Scope still matters
Section titled “Scope still matters”Content type and scope are different decisions.
For example:
- a
booleanflag can beclient,server, orall - a
jsonsettings object can also beclient,server, orall
Choose the content type based on the value shape, then choose scope based on who should read it.
Easy mistakes to avoid
Section titled “Easy mistakes to avoid”- using
textfor a real boolean flag - putting unrelated values into one large JSON object
- using
jsonjust to avoid creating separate keys - choosing
allscope when only the backend needs the value
What is the best first parameter type to create?
Section titled “What is the best first parameter type to create?”Usually a boolean flag or a simple text value.
Those are the easiest shapes to validate during the first integration.
When should I use json instead of separate keys?
Section titled “When should I use json instead of separate keys?”Use json when the values naturally belong together and the client consumes them as one structured object.
Does content type control who can read the value?
Section titled “Does content type control who can read the value?”No.
Content type describes the value shape. Scope controls who can read it.
What is the most common datatype mistake?
Section titled “What is the most common datatype mistake?”Storing a real feature flag as text instead of boolean.
That makes the application logic less clear and weakens the feature-flag model.