Rename project from inventree to vibetree

- go.mod module path (and every internal/vibetree import) inventree -> vibetree
- cmd/inventree/ -> cmd/vibetree/, deploy/inventree.service -> vibetree.service
- Default site name (seed data + the siteName template func's fallback)
  is now "vibetree", shown in the navbar, <title>, and login page
- Session cookie renamed inventree_session -> vibetree_session
- Default DB path data/inventree.db -> data/vibetree.db, CLI/log text,
  Dockerfile, docker-compose.yml, README, .gitignore/.dockerignore all
  updated to match

Existing installs: this changes the session cookie name (users will be
signed out once) and the default DB filename (point -db at your existing
file, or rename it, to keep your data).
This commit is contained in:
Owen
2026-08-17 17:14:52 -05:00
parent 14e2f3bb77
commit f3a959334f
47 changed files with 139 additions and 139 deletions
+8 -8
View File
@@ -1,5 +1,5 @@
// Package web implements the HTTP server: routing, session middleware,
// template rendering, and all page/API handlers for inventree.
// template rendering, and all page/API handlers for vibetree.
package web
import (
@@ -9,13 +9,13 @@ import (
"net/http"
"time"
"inventree/internal/assets"
"inventree/internal/auth"
"inventree/internal/folders"
"inventree/internal/itemtypes"
"inventree/internal/settings"
"inventree/internal/statuses"
"inventree/internal/users"
"vibetree/internal/assets"
"vibetree/internal/auth"
"vibetree/internal/folders"
"vibetree/internal/itemtypes"
"vibetree/internal/settings"
"vibetree/internal/statuses"
"vibetree/internal/users"
)
// App holds every dependency HTTP handlers need: data stores, templates, and
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"net/http"
"strconv"
"inventree/internal/models"
"vibetree/internal/models"
)
type assetRequest struct {
+1 -1
View File
@@ -3,7 +3,7 @@ package web
import (
"net/http"
"inventree/internal/auth"
"vibetree/internal/auth"
)
type loginPageData struct {
+2 -2
View File
@@ -5,12 +5,12 @@ import (
"net/http"
"time"
"inventree/internal/assets"
"vibetree/internal/assets"
)
func (a *App) handleExportCSV(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
filename := fmt.Sprintf("inventree-assets-%s.csv", time.Now().Format("2006-01-02"))
filename := fmt.Sprintf("vibetree-assets-%s.csv", time.Now().Format("2006-01-02"))
w.Header().Set("Content-Type", "text/csv; charset=utf-8")
w.Header().Set("Content-Disposition", "attachment; filename=\""+filename+"\"")
+2 -2
View File
@@ -4,8 +4,8 @@ import (
"errors"
"net/http"
"inventree/internal/folders"
"inventree/internal/models"
"vibetree/internal/folders"
"vibetree/internal/models"
)
// handleFolderOptions returns every folder as a flat, indented list for
+2 -2
View File
@@ -3,8 +3,8 @@ package web
import (
"net/http"
"inventree/internal/assets"
"inventree/internal/models"
"vibetree/internal/assets"
"vibetree/internal/models"
)
// InventoryPageData is the top-level data passed to templates/pages/inventory.html.
+1 -1
View File
@@ -5,7 +5,7 @@ import (
"strconv"
"strings"
"inventree/internal/models"
"vibetree/internal/models"
)
type itemTypesListData struct {
+2 -2
View File
@@ -7,8 +7,8 @@ import (
"strconv"
"strings"
"inventree/internal/assets"
"inventree/internal/models"
"vibetree/internal/assets"
"vibetree/internal/models"
)
// LabelTemplate describes a sheet of adhesive labels: cell size, grid, and
+1 -1
View File
@@ -3,7 +3,7 @@ package web
import (
"net/http"
"inventree/internal/models"
"vibetree/internal/models"
)
type SearchPanelData struct {
+2 -2
View File
@@ -4,7 +4,7 @@ import (
"net/http"
"strconv"
"inventree/internal/models"
"vibetree/internal/models"
)
type settingsPageData struct {
@@ -17,7 +17,7 @@ type settingsPageData struct {
func (a *App) handleSettingsPage(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
siteName, err := a.Settings.Get(ctx, "site_name", "inventree")
siteName, err := a.Settings.Get(ctx, "site_name", "vibetree")
if err != nil {
writeErr(w, http.StatusInternalServerError, err.Error())
return
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"net/http"
"net/url"
"inventree/internal/assets"
"inventree/internal/models"
"vibetree/internal/assets"
"vibetree/internal/models"
)
type settingsImportPageData struct {
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"net/http"
"strconv"
"inventree/internal/models"
"vibetree/internal/models"
)
// parseRole maps a form's role value to a models.Role, defaulting to
+2 -2
View File
@@ -3,8 +3,8 @@ package web
import (
"net/http"
"inventree/internal/auth"
"inventree/internal/models"
"vibetree/internal/auth"
"vibetree/internal/models"
)
// loadSession attaches the current user (if any) to the request context
+3 -3
View File
@@ -10,7 +10,7 @@ import (
"strings"
"time"
content "inventree/web"
content "vibetree/web"
)
// templateFuncs are available to every template (pages and fragments).
@@ -101,9 +101,9 @@ func loadTemplates(a *App) (*templateSet, error) {
// used by layout.html for the <title> and navbar brand text.
appFuncs := template.FuncMap{
"siteName": func() string {
name, err := a.Settings.Get(context.Background(), "site_name", "inventree")
name, err := a.Settings.Get(context.Background(), "site_name", "vibetree")
if err != nil || name == "" {
return "inventree"
return "vibetree"
}
return name
},
+2 -2
View File
@@ -3,10 +3,10 @@ package web
import (
"net/http"
content "inventree/web"
content "vibetree/web"
)
// Router builds the complete HTTP handler for inventree: static assets,
// Router builds the complete HTTP handler for vibetree: static assets,
// authentication, the AJAX-driven inventory tree, and the traditional
// full-page admin sections (item types, users, settings).
func (a *App) Router() http.Handler {
+2 -2
View File
@@ -4,8 +4,8 @@ import (
"context"
"fmt"
"inventree/internal/assets"
"inventree/internal/models"
"vibetree/internal/assets"
"vibetree/internal/models"
)
// treeAssetLimit bounds how many assets are rendered directly inside a
+4 -4
View File
@@ -11,9 +11,9 @@ import (
"strings"
"testing"
"inventree/internal/database"
"inventree/internal/models"
"inventree/internal/web"
"vibetree/internal/database"
"vibetree/internal/models"
"vibetree/internal/web"
)
func testApp(t *testing.T) *web.App {
@@ -49,7 +49,7 @@ func loginAs(t *testing.T, srv *httptest.Server, username, password string) *htt
t.Fatalf("expected redirect on login, got %d", res.StatusCode)
}
for _, c := range res.Cookies() {
if c.Name == "inventree_session" {
if c.Name == "vibetree_session" {
return c
}
}