Skip to content

jkeresman01/spring-initializr.nvim

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.

Lua Neovim 0.10

asciicast

Preview

image

πŸ”§ Features

  • Full Spring Initializr metadata support
  • TUI-based UI for selecting project options
  • Fuzzy dependency selection with telescope.nvim
  • Tab and key-based navigation

πŸ“ Project Structure

spring-initializr.nvim/
β”œβ”€β”€ LICENSE
β”œβ”€β”€ lua/
β”‚   └── spring-initializr/
β”‚       β”œβ”€β”€ algo/
β”‚       β”œβ”€β”€ commands/
β”‚       β”œβ”€β”€ config/
β”‚       β”œβ”€β”€ constants/
β”‚       β”œβ”€β”€ core/
β”‚       β”œβ”€β”€ metadata/
β”‚       β”œβ”€β”€ styles/
β”‚       β”œβ”€β”€ telescope/
β”‚       β”œβ”€β”€ ui/
β”‚       β”œβ”€β”€ dao/
β”‚       β”œβ”€β”€ utils/
β”‚       └── init.lua
β”œβ”€β”€ scripts/
└── tests/

⭐ Installation

Requires Neovim 0.9+
Dependencies:

  • nui.nvim
  • plenary.nvim
  • telescope.nvim

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
}

Commands πŸ”§

:SpringInitializr             -- Launch the UI to configure project
:SpringGenerateProject        -- Download and extract Spring Boot project to current directory

Setup βš™οΈ

Basic 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>")
Keybinding Action
<leader>si Open Spring Initializr TUI
<leader>q Close Spring Initializr TUI
<leader>sg Generate project to current directory
<Tab> Navigate forward between fields
<Ctrl-r> Reset the form (selections && deps)
<S-Tab> Navigate backward
j / k Move between radio options
<CR> Confirm field selection or submit
dd Remove selected dependency

Contributing

Contributions are very welcome. You can help by:

  • Picking up an existing issue.
    • Issues marked with the label good first issue are ideal if you're new to contributing.
  • 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

  1. Fork the repo and clone your fork.
  2. Create a topic branch: git checkout -b feature/<short-name> or fix/<short-name>.
  3. Develop and test locally in Neovim:
    • Ensure dependencies are installed: plenary.nvim, nui.nvim, telescope.nvim.
    • Load the plugin and verify :SpringInitializr and :SpringGenerateProject.
  4. Commit with clear messages and reference any related issues:
    git commit -m "Add toggle for X (#123)"
  5. 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

License

This project is licensed under the terms of the GNU General Public License v3.0.

Buy Me a Coffee