kebab-case support in app generation
- Dominant language
- Groovy
- Stars
- 2.9k
- Forks
- 975
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 92
Description
### Description
Currently, several Grails configuration properties use camelCase naming conventions such as:
```yaml
maxFileSize
driverClassName
useFilter
storeDir
```
while the broader Spring ecosystem consistently adopts kebab-case naming, for example:
```yaml
max-file-size
driver-class-name
use-filter
store-dir
```
Since Grails is built on top of Spring Boot, it would improve consistency and developer experience if Grails configuration properties fully embraced the Spring-style kebab-case convention across the framework and official documentation.
### Why this matters
Using a uniform naming convention would provide several benefits:
* Better alignment with Spring Boot standards
* Improved readability of configuration files
* Easier onboarding for Spring developers using Grails
* Reduced cognitive friction when mixing Grails and Spring configuration
* Cleaner IDE metadata and autocomplete consistency
### Suggested behavior
Ideally, Grails should:
1. Officially support kebab-case aliases for all framework configuration properties
2. Prefer kebab-case in documentation and generated examples
3. Keep backward compatibility with existing camelCase properties
For example:
```yaml
server:
servlet:
session:
store-dir: appname
grails:
controllers:
upload:
max-file-size: 20MB
```
instead of:
```yaml
server:
servlet:
session:
storeDir: appname
grails:
controllers:
upload:
maxFileSize: 20MB
```
### Additional note
Spring Boot already supports relaxed binding internally, so in many cases both formats may already work. However, Grails examples, plugins, generated configs, and official conventions still largely use camelCase. Standardizing on kebab-case would modernize the configuration style and align Grails more closely with the Spring ecosystem.
Contributor guide
Research direction
Start by locating Grails configuration properties, generated configuration examples, and the official documentation that currently uses camelCase, then check where Spring Boot relaxed binding already provides compatibility. Done means defining a feasible scope for kebab-case aliases, preserving existing camelCase behavior, and updating the affected examples and documentation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- groovy, spring-boot
- Domain
- backend, developer-experience, documentation
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100