tiagovla/projet.nvim

github github
project
stars 2
issues 0
subscribers 1
forks 0
CREATED

UPDATED


banner

It’s a project manager without the complexity β€” so we dropped the β€œc”.

Projet is a minimalist tool for managing your Neovim projects, with just enough French to feel fancy.

πŸ’‘ What is it?

Your project manager is simply a list stored in a buffer. Each line contains a project tag (a short name) followed by the path to the project directory, separated by a space:

super-secret ~/dev/super-secret
coolbeans ~/dev/coolbeans
dotfiles ~/.dotfiles
blog ~/projects/my-tech-blog
projet.nvim ~/.config/nvim/lua/projet
telescope-fork /home/user/opensource/telescope.nvim
cv /home/user/Documents/resume-latex
data-crunch /home/user/work/data-cruncher
school-backend /home/user/repos/school-api

That's it!


✨ Features

  • πŸͺŸ Floating buffer interface to manage and switch between projects
  • πŸ” Telescope integration: :Telescope projet
  • πŸ› οΈ Customizable key mappings and behavior
  • πŸ“ Choose your own action when selecting a project
  • 🧩 Can be used standalone, with Telescope, or integrated into any other picker or UI

πŸš€ Installation

Using lazy.nvim:

{
  "tiagovla/projet.nvim",
  dependencies = { "nvim-lua/plenary.nvim" },
  config = function()
    require("projet").setup()
  end,
}

πŸ”§ Configuration

Here are the default configuration options:

require("projet").setup({
  database_path = vim.fs.joinpath(vim.fn.stdpath("data"), "project.json"),
  mappings = {
    { "n", "q", require("projet.editor").close },
    { "n", "<ESC><ESC>", require("projet.editor").close },
    {
      "n",
      "<CR>",
      function()
        require("projet.editor").select(function(project)
          vim.cmd("bcd " .. vim.fn.fnameescape(vim.fn.expand(project.path))) -- you might want to use a picker
        end)
      end,
    },
  },
})

You can override this by passing a custom config to setup().


πŸ“š Usage

Open the floating editor

require("projet").toggle_editor()

Or bind it to a key in your config:

vim.keymap.set("n", "<leader>p", require("projet").toggle_editor)

Telescope Integration

Launch the Telescope picker with:

:Telescope projet

(Ensure you have Telescope installed and configured.)


πŸ“¦ Data Format

Projects are saved as a simple JSON array at the configured database_path.
Example:

[
  { "name": "MyApp", "path": "/home/user/dev/myapp" },
  { "name": "Dotfiles", "path": "/home/user/.dotfiles" }
]

πŸ“ License

MIT β€” feel free to use, modify, and share.