anchor.diff:  == Modules
   Spring Initializr has the following modules:
   
  -* `initializr-generator`: core project generation library
  -* `initializr-metadata`: metadata infrastructure for various aspects of the project
  -* `initializr-generator-spring`: optional module defining the conventions for a Spring
  -Boot project. Can be replaced by your own conventions if necessary.
  -* `initializr-web`: REST endpoints and web interface
   * `initializr-actuator`: optional module to provide additional information and statistics
  -on project generation
  -* `initializr-docs`: documentation
  +on project generation.
  +* `initializr-bom`: provides a Bill of Materials for easier dependency management in your
  +project.
  +* `initializr-docs`: documentation.
  +* `initializr-generator`: core project generation library.
  +* `initializr-generator-spring`: optional module defining the conventions for a typical
  +Spring Boot project. Can be reused or replaced by your own conventions.
  +* `initializr-metadata`: metadata infrastructure for various aspects of the project.
  +* `initializr-service-sample`: showcases a basic custom instance.
  +* `initializr-version-resolver`: optional module to extract version numbers for an
  +arbitrary BOM.
  +* `initializr-web`: web endpoints for third party clients.
   
   == Supported interfaces
  -
   Spring Initializr can be used as follows:
   
  -* With your browser (i.e. link:https://start.spring.io[])
  -* In your IDE if you are using STS, IntelliJ IDEA Ultimate or NetBeans (with
  -https://github.com/AlexFalappa/nb-springboot[this plugin])
   * On the command-line with {boot-doc}/#cli-init[the Spring Boot CLI] or simply with
  -`cURL` or `HTTPie`
  +`cURL` or `HTTPie`.
  +* In your IDE if you are using STS, IntelliJ IDEA Ultimate, NetBeans (with
  +https://github.com/AlexFalappa/nb-springboot[this plugin]) or VSCode (with
  +https://github.com/microsoft/vscode-spring-initializr[the `vscode-spring-initializr`
  +plugin]).
  +* With a custom Web UI (check ours at link:https://start.spring.io[]).
   
  -[TIP]
  -====
  -You can "curl" an instance to get a usage page with examples (try
  -`curl https://start.spring.io`)
  -====
  +There are other command-line integrations out there and you can also build your own!
   
   == Generating a project
  -If you click on "Generate Project" on the web ui of our instance, it will download a
  -project archive with a Maven-based project and the necessary infrastructure to start
  +As Spring Initializr doesn't come with a Web UI, you can use any of the out-of-the-box
  +integration to generate a project. For instance, the following `curl` command downloads
  +a project archive with a Maven-based project and the necessary infrastructure to start
   a basic Spring Boot app.
  -
  -You could achieve the same result with a simple `curl` command
   
   [source,bash]
   ----
   $ curl https://start.spring.io/starter.zip -o demo.zip
   ----
   
  -The web ui exposes a bunch of options that you can configure. These are mapped to the
  -following request attributes:
  +The project to generate can be customized of course with a number of options:
   
   * Basic information for the generated project: `groupId`, `artifactId`, `version`,
   `name`, `description` and `packageName`
  
positive.code: You could use this infrastructure to create your own client since the project is
  generated via a plain HTTP call.
  
  [[customize-form]]
  == Customize form inputs
  
  You can share or bookmark URLs that will automatically customize form inputs. For
  instance, the following URL from the default instance uses `groovy` by default and
  set the name to `Groovy Sample`:
  
  [source,bash]
  ----
  https://start.spring.io/#!language=groovy&name=Groovy%20Sample
  ----
  
  The following hashbang parameters are supported: `type`, `groupId`, `artifactId`,
  `name`, `description`, `packageName`, `packaging`, `javaVersion` and `language`.
  Review the section above for a description of each of them.
  
  [[metadata]]
  == Service metadata
  
  The service metadata is used by the web UI and is exposed to ease the creation of
  third-party clients. You can grab the metadata by _curling_ the root
  
  [source,bash]
  ----
  
negative.code: ----
  
  NOTE: As stated above, if you use `curl` without an accept header, you'll retrieve a
  human readable text version of the metadata.
  
  `HTTPie` is also supported:
  
  [source,bash]
  ----
  