# jokresner/nvim architecture

> Architecture diagram of the GitHub repository jokresner/nvim, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jokresner/nvim
- Repository: https://github.com/jokresner/nvim

## Overview

This repository is a modular Neovim configuration, optimized for QWERTZ keyboards and centered on an editing workflow with navigation, code assistance, and project tools. Users interact with Neovim through configured keymaps; documented workflows include file and symbol search, LSP actions, tests, debugging, Git, and Markdown. Plugin modules also cover language-specific support, UI, sessions, databases, and tooling. The README and tree support these capability groupings, but no source excerpts were available to verify module imports or internal call paths, so those links are omitted.

Main entry points: [`lua/config/keymaps.lua`](https://github.com/jokresner/nvim/blob/main/lua/config/keymaps.lua) (Keymaps), [`init.lua`](https://github.com/jokresner/nvim/blob/main/init.lua) (Configuration entry), [`lua/plugins/lsp.lua`](https://github.com/jokresner/nvim/blob/main/lua/plugins/lsp.lua) (LSP configuration), [`lua/plugins/navigation.lua`](https://github.com/jokresner/nvim/blob/main/lua/plugins/navigation.lua) (Files and search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Core configuration"]
  node_entry["Configuration entry<br/>[init.lua]"]
  node_options["Editor options<br/>[options.lua]"]
  node_keymaps["Keymaps<br/>[keymaps.lua]"]
  node_autocmds["Autocommands<br/>[autocmds.lua]"]
end

subgraph group_coding["Code assistance"]
  node_lsp_engine["LSP engine<br/>[lsp_engine.lua]"]
  node_lsp["LSP configuration<br/>[lsp.lua]"]
  node_completion["Completion<br/>[completion.lua]"]
  node_treesitter["Syntax parsing<br/>[treesitter.lua]"]
  node_lang_go["Go support<br/>[lang_go.lua]"]
  node_lang_rust["Rust support<br/>[lang_rust.lua]"]
  node_lang_php["PHP support<br/>[lang_php.lua]"]
  node_lang_typescript["TypeScript support"]
  node_lang_nix["Nix support<br/>[lang_nix.lua]"]
end

subgraph group_navigation["Navigation and UI"]
  node_navigation["Files and search<br/>[navigation.lua]"]
  node_editing["Editing tools<br/>[editing.lua]"]
  node_ui["UI components<br/>[ui.lua]"]
end

subgraph group_workflow["Project workflows"]
  node_git["Git tools<br/>[git.lua]"]
  node_testing["Testing<br/>[testing.lua]"]
  node_debugging["Debugging<br/>[debugging.lua]"]
  node_task_runner["Task runner<br/>[task_runner.lua]"]
  node_markdown["Markdown tools<br/>[markdown.lua]"]
  node_database["Database tools<br/>[database.lua]"]
  node_session["Session management<br/>[session.lua]"]
  node_todo["TODO tracking<br/>[todo.lua]"]
  node_tooling["Developer tooling<br/>[tooling.lua]"]
end

node_user(("Neovim user"))
node_nvim["Neovim"]

node_user -->|"uses"| node_nvim
node_nvim -->|"loads configuration"| node_entry
node_user -->|"invokes mappings"| node_keymaps
node_keymaps -->|"maps file search"| node_navigation
node_keymaps -->|"maps code actions"| node_lsp
node_keymaps -->|"maps test commands"| node_testing
node_keymaps -->|"maps debug commands"| node_debugging
node_keymaps -->|"maps Git commands"| node_git
node_keymaps -->|"maps TODO search"| node_todo

click node_entry "https://github.com/jokresner/nvim/blob/main/init.lua"
click node_options "https://github.com/jokresner/nvim/blob/main/lua/config/options.lua"
click node_keymaps "https://github.com/jokresner/nvim/blob/main/lua/config/keymaps.lua"
click node_autocmds "https://github.com/jokresner/nvim/blob/main/lua/config/autocmds.lua"
click node_lsp_engine "https://github.com/jokresner/nvim/blob/main/lua/core/lsp_engine.lua"
click node_lsp "https://github.com/jokresner/nvim/blob/main/lua/plugins/lsp.lua"
click node_completion "https://github.com/jokresner/nvim/blob/main/lua/plugins/completion.lua"
click node_treesitter "https://github.com/jokresner/nvim/blob/main/lua/plugins/treesitter.lua"
click node_lang_go "https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_go.lua"
click node_lang_rust "https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_rust.lua"
click node_lang_php "https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_php.lua"
click node_lang_typescript "https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_typescript.lua"
click node_lang_nix "https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_nix.lua"
click node_navigation "https://github.com/jokresner/nvim/blob/main/lua/plugins/navigation.lua"
click node_editing "https://github.com/jokresner/nvim/blob/main/lua/plugins/editing.lua"
click node_ui "https://github.com/jokresner/nvim/blob/main/lua/plugins/ui.lua"
click node_git "https://github.com/jokresner/nvim/blob/main/lua/plugins/git.lua"
click node_testing "https://github.com/jokresner/nvim/blob/main/lua/plugins/testing.lua"
click node_debugging "https://github.com/jokresner/nvim/blob/main/lua/plugins/debugging.lua"
click node_task_runner "https://github.com/jokresner/nvim/blob/main/lua/plugins/task_runner.lua"
click node_markdown "https://github.com/jokresner/nvim/blob/main/lua/plugins/markdown.lua"
click node_database "https://github.com/jokresner/nvim/blob/main/lua/plugins/database.lua"
click node_session "https://github.com/jokresner/nvim/blob/main/lua/plugins/session.lua"
click node_todo "https://github.com/jokresner/nvim/blob/main/lua/plugins/todo.lua"
click node_tooling "https://github.com/jokresner/nvim/blob/main/lua/plugins/tooling.lua"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_options,node_keymaps,node_autocmds,node_user toneBlue
class node_lsp_engine,node_lsp,node_completion,node_treesitter,node_lang_go,node_lang_rust,node_lang_php,node_lang_typescript,node_lang_nix toneAmber
class node_navigation,node_editing,node_ui toneMint
class node_git,node_testing,node_debugging,node_task_runner,node_markdown,node_database,node_session,node_todo,node_tooling toneRose
class node_nvim toneIndigo
```

## Components

### Core configuration

- [Configuration entry](https://github.com/jokresner/nvim/blob/main/init.lua): `init.lua`
- [Editor options](https://github.com/jokresner/nvim/blob/main/lua/config/options.lua): `lua/config/options.lua`
- [Keymaps](https://github.com/jokresner/nvim/blob/main/lua/config/keymaps.lua): `lua/config/keymaps.lua`
- [Autocommands](https://github.com/jokresner/nvim/blob/main/lua/config/autocmds.lua): `lua/config/autocmds.lua`

### Code assistance

- [LSP engine](https://github.com/jokresner/nvim/blob/main/lua/core/lsp_engine.lua): `lua/core/lsp_engine.lua`
- [LSP configuration](https://github.com/jokresner/nvim/blob/main/lua/plugins/lsp.lua): `lua/plugins/lsp.lua`
- [Completion](https://github.com/jokresner/nvim/blob/main/lua/plugins/completion.lua): `lua/plugins/completion.lua`
- [Syntax parsing](https://github.com/jokresner/nvim/blob/main/lua/plugins/treesitter.lua): `lua/plugins/treesitter.lua`
- [Go support](https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_go.lua): `lua/plugins/lang_go.lua`
- [Rust support](https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_rust.lua): `lua/plugins/lang_rust.lua`
- [PHP support](https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_php.lua): `lua/plugins/lang_php.lua`
- [TypeScript support](https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_typescript.lua): `lua/plugins/lang_typescript.lua`
- [Nix support](https://github.com/jokresner/nvim/blob/main/lua/plugins/lang_nix.lua): `lua/plugins/lang_nix.lua`

### Navigation and UI

- [Files and search](https://github.com/jokresner/nvim/blob/main/lua/plugins/navigation.lua): `lua/plugins/navigation.lua`
- [Editing tools](https://github.com/jokresner/nvim/blob/main/lua/plugins/editing.lua): `lua/plugins/editing.lua`
- [UI components](https://github.com/jokresner/nvim/blob/main/lua/plugins/ui.lua): `lua/plugins/ui.lua`

### Project workflows

- [Git tools](https://github.com/jokresner/nvim/blob/main/lua/plugins/git.lua): `lua/plugins/git.lua`
- [Testing](https://github.com/jokresner/nvim/blob/main/lua/plugins/testing.lua): `lua/plugins/testing.lua`
- [Debugging](https://github.com/jokresner/nvim/blob/main/lua/plugins/debugging.lua): `lua/plugins/debugging.lua`
- [Task runner](https://github.com/jokresner/nvim/blob/main/lua/plugins/task_runner.lua): `lua/plugins/task_runner.lua`
- [Markdown tools](https://github.com/jokresner/nvim/blob/main/lua/plugins/markdown.lua): `lua/plugins/markdown.lua`
- [Database tools](https://github.com/jokresner/nvim/blob/main/lua/plugins/database.lua): `lua/plugins/database.lua`
- [Session management](https://github.com/jokresner/nvim/blob/main/lua/plugins/session.lua): `lua/plugins/session.lua`
- [TODO tracking](https://github.com/jokresner/nvim/blob/main/lua/plugins/todo.lua): `lua/plugins/todo.lua`
- [Developer tooling](https://github.com/jokresner/nvim/blob/main/lua/plugins/tooling.lua): `lua/plugins/tooling.lua`

### Other components

- **Neovim user**
- **Neovim**

## Connections

- Neovim user → Neovim: uses
- Neovim → Configuration entry: loads configuration
- Neovim user → Keymaps: invokes mappings
- Keymaps → Files and search: maps file search
- Keymaps → LSP configuration: maps code actions
- Keymaps → Testing: maps test commands
- Keymaps → Debugging: maps debug commands
- Keymaps → Git tools: maps Git commands
- Keymaps → TODO tracking: maps TODO search
