README.md
July 12, 2026 Β· View on GitHub
spring-initializr.nvim
The easiest way to generate Spring Boot projects
A Neovim plugin that lets you build and download fully configured Spring Boot projects inside the editor.
Note
The UI has been significantly improved since this initial demo video. See the Preview section below for current screenshots.
Preview
π Project Structure
spring-initializr.nvim/
βββ LICENSE
βββ lua/
β βββ spring-initializr/
β βββ algo/
β βββ commands/
β βββ config/
β βββ constants/
β βββ core/
β βββ metadata/
β βββ styles/
β βββ telescope/
β βββ ui/
β βββ events/
β βββ dao/
β βββ trace/
β βββ utils/
β βββ init.lua
βββ scripts/
βββ tests/
Important
Requires Neovim 0.9+
Dependencies:
nui.nvimplenary.nvimtelescope.nvim
:star: Installation
Tip
If you want to add instructions for your plugin manager of preference please raise a [ISSUE_REQUEST].
Vim Plug
Plug 'nvim-lua/plenary.nvim'
Plug 'MunifTanjim/nui.nvim'
Plug 'nvim-telescope/telescope.nvim'
Plug 'jkeresman01/spring-initializr.nvim'
Packer
use {
'jkeresman01/spring-initializr.nvim',
requires = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'nvim-telescope/telescope.nvim'
}
}
Lazy.nvim
{
'jkeresman01/spring-initializr.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'nvim-telescope/telescope.nvim',
},
config = function()
require('spring-initializr').setup()
end
}
pckr.nvim
require('pckr').add({
{
'jkeresman01/spring-initializr.nvim',
requires = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'nvim-telescope/telescope.nvim',
},
config = function()
require('spring-initializr').setup()
end,
};
})
paq-nvim
local paq = require('paq')
paq({
'jkeresman01/spring-initializr.nvim',
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'nvim-telescope/telescope.nvim',
})
require('spring-initializr').setup()
Commands
These are the user commands you can call from the cmdline:
:SpringInitializr
The :SpringInitializr command will open a UI window pointing to all the useful operations
this plugin can provide.
Tip
See commands.lua for more info.
:SpringGenerateProject
The :SpringGenerateProject command will scaffold a new Spring Boot Project with selections from the UI to your current working directory.
Tip
See commands.lua for more info.
:SpringInitializrConfig
The :SpringInitializrConfig command displays the current plugin configuration in a floating window, showing all settings with their current and default values.
Tip
See commands.lua for more info.
:SpringInitializrLog
The :SpringInitializrLog command opens the plugin log file in a buffer, making it easy to view logs for debugging and troubleshooting without leaving Neovim.
:SpringInitializrLog " Open in current window
:SpringInitializrLog split " Open in horizontal split
:SpringInitializrLog vsplit " Open in vertical split
:SpringInitializrLog clear " Clear log file
Tip
See commands.lua for more info.
Important
This is the list of planned commands that will be available soon:
:SpringInitalizrHistory:SpringPreviewProject
Setup :gear:
To enable the plugin you must call setup():
require('spring-initializr').setup()
Minimal setup and keybindings:
require("spring-initializr").setup()
vim.keymap.set("n", "<leader>si", "<CMD>SpringInitializr<CR>")
vim.keymap.set("n", "<leader>sg", "<CMD>SpringGenerateProject<CR>")
Configuration options
Optional configuration options:
- config_format: "properties" or "yaml"
- use_nerd_fonts: boolean (default: true)
- persist_state: boolean (default: false)
local ConfigFormat = require("spring-initializr.constants.config_format")
require("spring-initializr").setup({
config_format = ConfigFormat.YAML
})
Keybindings
Global
| Keybinding | Action |
|---|---|
<leader>si | Open Spring Initializr TUI |
<leader>sg | Generate project to current directory |
Navigation
| Keybinding | Action |
|---|---|
<Tab> | Navigate forward between fields |
<S-Tab> | Navigate backward between fields |
j / <Down> | Move down in radio options or cards |
k / <Up> | Move up in radio options or cards |
Actions
| Keybinding | Action |
|---|---|
<CR> | Confirm field selection or submit |
<Ctrl-r> | Reset the form (selections & deps) |
<Ctrl-b> | Open dependency picker |
<Ctrl-d> | Reset selected dependencies |
dd | Remove selected dependency |
q | Close Spring Initializr TUI |
Contributing
Important
Contributions are very welcome
You can help by:
- Picking up an existing issue.
- Issues marked with the label
good first issueare ideal if you're new to contributing.
- Issues marked with the label
- Opening a new bug report or feature request with clear details.
- Submitting a focused pull request that improves code, docs, or UX.
How to get started
- Fork the repo and clone your fork.
- Create a topic branch:
git checkout -b feature/<short-name>orfix/<short-name>. - Develop and test locally in Neovim:
- Ensure dependencies are installed:
plenary.nvim,nui.nvim,telescope.nvim. - Load the plugin and verify
:SpringInitializrand:SpringGenerateProject.
- Ensure dependencies are installed:
- Commit with clear messages and reference any related issues:
git commit -m "Add toggle for X (#123)" - Push and open a pull request against
main.
Filing issues
- Use the provided issue templates for bugs and features.
- For bugs, include Steps to Reproduce, Actual vs Expected Behavior, Environment, and logs if available.
- For features, describe the motivation, proposed solution, and alternatives considered.
If you are unsure where to start, open an issue to discuss an idea before coding.
π§± Supporters Wall
Kevin Lopez
First Donation π - Thanks Kevin we appreciate it a lot
βHey bro thanks a lot for your spring plugin on nvim, I loved it - that was exactly what I was looking for. The best for your project, I'll come back later :D Greetings from Mexico!β
- Kevin Lopez
π Similar project
Here is the list of similar projects that might fit your use case better, show them some love:
License
Copyright (C) 2025 Josip Keresman
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This project is licensed under the terms of the GNU General Public License v3.0.