Skip to content

docs: add Getting Started page for adding Vaadin to an existing application - #6477

Merged
peholmst merged 1 commit into
mainfrom
claude/amazing-bose-b40725
Oct 23, 2026
Merged

peholmst merged 1 commit into
mainfrom
claude/amazing-bose-b40725

Conversation

@peholmst

Copy link
Copy Markdown
Member

Why

Every path through Getting Started begins with a new project. Nothing covers adding Vaadin to an existing Spring Boot application that already has REST controllers, Spring Security, and JPA entities, so experienced developers conclude that Vaadin only suits greenfield projects. Most of the material already exists in the Flow reference and Building Apps, but Getting Started doesn't link to it.

What

A new page, Existing Applications (articles/getting-started/existing-application.adoc, order 25, between Starters and Tutorial). It follows the framing from #6475: the application with a Vaadin UI is a regular Java application, Vaadin is its UI layer, and Spring Boot is recommended but not required.

  • Spring Boot with Maven: the Vaadin BOM, vaadin-spring-boot-starter, optional vaadin-dev, and vaadin-maven-plugin with build-frontend. Then a first @Route view that gets an existing Spring service through constructor injection, and how to run the application.
  • REST controllers: with the default root mapping, Spring MVC controllers take precedence and Vaadin gets the remaining requests. Covers vaadin.url-mapping and vaadin.exclude-urls, and links REST API Alongside Vaadin.
  • Spring Security: put VaadinSecurityConfigurer in its own chain and give the existing API chain a securityMatcher and @Order. Covers the catch-all deny (with a link to the Actuator health check guide), the need for access annotations such as @PermitAll on views, and method security applying to calls from views.
  • JPA entities: detached entities and LazyInitializationException. open-in-view doesn't affect Vaadin requests, and before turning it off, check that no REST controller relies on it. Links Entities in Flow Views.
  • Quarkus, Jakarta EE, and Gradle: a short paragraph each, linking the Quarkus page (including its section on existing Quarkus applications), CDI, and the Gradle build files.

Links to the page:

  • getting-started/index.adoc: one sentence added inside the "Evaluating Vaadin for a project?" paragraph.
  • getting-started/starters/index.adoc: one sentence after the section outline.

Both links sit on lines that #6475 doesn't touch. git merge-tree against the #6475 head merges cleanly.

Verified

  • Starter contents (Maven Central POMs, 25.2.8 and 25.3.3): vaadin-spring-boot-starter brings vaadin-spring, vaadin-core-internal (the free components), and spring-boot-starter-webmvc. com.vaadin:vaadin adds the commercial components. The dependency set matches the skeleton-starter-flow-spring POM.
  • Build goal (vaadin-maven-plugin 25.3.3 plugin descriptor): build-frontend defaults to the prepare-package phase.
  • Request routing (vaadin-spring 25.3.4 source, VaadinServletConfiguration): with root mapping, Vaadin's handler mapping has order LOWEST_PRECEDENCE - 1, so controllers win. The defaults vaadin.url-mapping=/* and vaadin.exclude-urls are in VaadinConfigurationProperties.
  • View access control (SpringSecurityAutoConfiguration): the annotated view access checker is turned off unless VaadinSecurityConfigurer is used. The default anyRequest deny and the advice to use the configurer in only one chain come from the Vaadin Security Configurer reference.
  • API names (javadoc, 25.4): VaadinSecurityConfigurer.vaadin(), loginView, Grid(), addColumn(...).setHeader(...), and setItems(Collection).
  • Default theme: Aura loads automatically when there's no AppShellConfigurator (Themes page), so the existing application class needs no changes.
  • Route scanning: limited to the package of the @SpringBootApplication class (Routing with Spring).
  • Links: every xref and anchor on the new page resolves to an existing file and section.
  • Redirects: npm run check-redirects passes.
  • Vale: no errors or warnings on the new page. The only alerts are the two usual Vaadin.SourceCode suggestions for inline Java, which CLAUDE.md asks for in short how-to snippets. On getting-started/index.adoc, the exclamation-point warning and the Finally suggestion were already on main.

Not done: no local DSP build, so the page hasn't been checked rendered.

🤖 Generated with Claude Code

…cation

Every Getting Started path started from a new project, so experienced
developers concluded that Vaadin only suits greenfield projects. The new
page shows how to add a Vaadin UI to an existing Spring Boot application
built with Maven, and how it coexists with the REST controllers, Spring
Security configuration, and JPA entities the application already has.
Quarkus, Jakarta EE, and Gradle are covered briefly through links.

Link the page from the Getting Started front page and the Starters index.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Preview Deployment

This PR has been deployed for preview.

URL: https://docs-preview-pr-6477.fly.dev

Changed pages

Added content is highlighted in green; removed content is marked in red on each page.

Built from 7fa2cd1

@peholmst peholmst added the target/v25.3 Automatically cherry-pick to the v25.3 branch label Oct 23, 2026
@peholmst
peholmst merged commit 746b146 into main Oct 23, 2026
11 checks passed
@peholmst
peholmst deleted the claude/amazing-bose-b40725 branch October 23, 2026 12:37
peholmst added a commit that referenced this pull request Oct 23, 2026
…cation (#6477) (CP: v25.3) (#6481)

Co-authored-by: Petter Holmström <petter@vaadin.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
peholmst added a commit that referenced this pull request Oct 23, 2026
…6482)

## What

Restructures the Getting Started front page
(`articles/getting-started/index.adoc`) so that it serves two readers:
someone learning Vaadin, and someone evaluating it for a project.
Before, the page sent everyone to a single Quick Start button and put
the evaluation reading list in one long paragraph. It had no entry for
existing applications, migration, or working with a REST API.

This builds on #6475 (Java framing) and #6477 (the Existing Applications
page). The opening paragraphs from #6475 are unchanged.

## The page now

- **Title:** "Getting Started with Vaadin" instead of "Welcome to the
Getting Started Guide!". `page-title`, `meta-description`, and
`description` are unchanged.
- **Learn Vaadin:** an ordered path. Quick Start, then the Tutorial (a
Spring Boot application with a Vaadin UI), then Next Steps. The pointers
to Development Environment and Starters stay here.
- **Evaluate Vaadin:** an ordered reading list with a time estimate of
about half an hour. When to Use Vaadin, How Vaadin Works at Runtime,
Licensing, Support & Maintenance, and Supported Technologies. It ends
with a pointer to the Architecture deep dives.
- **Start from Existing Code:** a short description list for readers who
already have code:
- **A Java application:** Add a Vaadin UI to an Existing Application
(#6477)
- **A REST API or a separate backend:** REST API Alongside Vaadin, and
Call a Remote Service
- **A Swing application:** SwingBridge, Swing Kit, and the Modernization
Toolkit
- **An older Vaadin version:** the Upgrading Guide, Version Comparison,
Multiplatform Runtime (Vaadin 7 and 8), and the Modernization Toolkit

## New links

The page didn't link to these before:

- `articles/getting-started/next-steps.adoc`
- `articles/building-apps/architecture/index.adoc`
- `articles/building-apps/integration/rest-api.adoc`
- `articles/building-apps/integration/call-remote-services.adoc`
- `articles/tools/modernization-toolkit/swing-bridge/index.adoc`
- `articles/tools/swing/index.adoc`
- `articles/tools/modernization-toolkit/index.adoc`
- `articles/upgrading/index.adoc`
- `articles/upgrading/version-comparison.adoc`
- `articles/tools/mpr/index.adoc`

All the other links were already there. No pages move, so no redirects
are needed.

## Notes for reviewers

- **Quick Start:** on /docs/latest, the Quick Start currently redirects
to vaadin.com/quickstart, which is part of a marketing experiment. I
checked again today, and the redirect is still there. The Quick Start
item promises only "a running application that you've changed yourself,
in minutes", which is true for both versions. It doesn't name a
duration, a view, or a production build.
- **No buttons or cards:** a docs card makes its whole area one link, so
a path with several steps can't be a card. The paths are plain ordered
lists, which keeps the page short. The Quick Start button is gone, so
that neither path stands out more than the other. The docs front page
still links straight to the Quick Start.
- **Licensing:** the migration tools aren't labeled as commercial,
following the practice of leaving product-to-tier mapping to
vaadin.com/pricing. Their own pages carry the commercial banner.
- **JSF:** no page covers migration from JSF, so the page doesn't
mention it.
- **Vale:** no alerts. On main, the page has one warning (the
exclamation point in the title) and one suggestion. `Vaadin.Versions` is
turned off around the existing-code list, because Multiplatform Runtime
applies only to Vaadin 7 and 8. The Feature Pack and Upgrading pages use
the same pattern.
- I rendered the page body with Asciidoctor to check the lists. I didn't
run the full DS Publisher build.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cherry-picked-v25.3 target/v25.3 Automatically cherry-pick to the v25.3 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants