From ff52be8adf139b87b09581886b24911e12dbb399 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Tue, 24 Mar 2026 23:42:37 +0100 Subject: [PATCH] Rename project from imc-vibe to imc - Binary name: imc-vibe -> imc - Go module: github.com/imc-vibe/backend -> github.com/imc/backend - JWT issuer: imc-vibe -> imc - UI labels: IMC Vibe -> IMC - Update all imports and comments --- .gitignore | 2 +- Makefile | 2 +- README.md | 20 ++++++++++++++++---- backend/.air.toml | 4 ++-- backend/cmd/server/main.go | 18 +++++++++--------- backend/go.mod | 2 +- backend/internal/api/handlers/aliases.go | 2 +- backend/internal/api/handlers/auth.go | 4 ++-- backend/internal/api/handlers/domains.go | 2 +- backend/internal/api/handlers/logs.go | 2 +- backend/internal/api/handlers/middleware.go | 2 +- backend/internal/api/handlers/queue.go | 2 +- backend/internal/api/handlers/stats.go | 2 +- backend/internal/api/handlers/users.go | 4 ++-- backend/internal/api/router.go | 10 +++++----- backend/internal/db/db.go | 8 ++++---- frontend/package.json | 2 +- frontend/src/routes/+layout.svelte | 2 +- frontend/src/routes/auth/login/+page.svelte | 2 +- 19 files changed, 52 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index e66c983..67e5508 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ build/ backend/cmd/server/embed/ backend/tmp/ .env -backend/imc-vibe +backend/imc node_modules/ frontend/node_modules/ frontend/build/ diff --git a/Makefile b/Makefile index 5966fc4..3cfff47 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all dev dev-frontend dev-backend build build-frontend build-backend clean test lint # Variables -APP_NAME := imc-vibe +APP_NAME := imc FRONTEND_DIR := frontend BACKEND_DIR := backend BUILD_DIR := build diff --git a/README.md b/README.md index 8fbfc42..f281e6d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# IMC Vibe +# IMC A self-sufficient web application to manage an ISPmail (Postfix, Dovecot, Rspamd) mail server. @@ -36,7 +36,7 @@ make build ### 2. Create Admin User ```bash -./build/imc-vibe --reset-admin-password +./build/imc --reset-admin-password # This creates an admin user or resets the password # Output: Username: admin, Password: (randomly generated) ``` @@ -44,7 +44,7 @@ make build ### 3. Run ```bash -./build/imc-vibe --bind=0.0.0.0 --port=8080 +./build/imc --bind=0.0.0.0 --port=8080 ``` ### 4. Access @@ -97,7 +97,7 @@ Example service file at `/etc/systemd/system/imc-vibe.service`: ```ini [Unit] -Description=IMC Vibe Mail Admin +Description=IMC Mail Admin After=network.target mariadb.service postfix.service [Service] @@ -127,10 +127,22 @@ WantedBy=multi-user.target ## Development +Run development server that watches for file changes: + +```sh +make dev +``` + +Build the binary into the build/ directory: + ```bash # Build frontend and backend make build +``` +Build only frontend or backend: + +```sh # Run backend only (uses filesystem frontend) cd backend && go run ./cmd/server diff --git a/backend/.air.toml b/backend/.air.toml index 4e66da4..ae922e9 100644 --- a/backend/.air.toml +++ b/backend/.air.toml @@ -2,8 +2,8 @@ # Install air: go install github.com/air-verse/air@latest [build] - bin = "./tmp/imc-vibe" - cmd = "go build -o ./tmp/imc-vibe ./cmd/server" + bin = "./tmp/imc" + cmd = "go build -o ./tmp/imc ./cmd/server" stop_on_error = true [log] diff --git a/backend/cmd/server/main.go b/backend/cmd/server/main.go index f04a0d0..289819d 100644 --- a/backend/cmd/server/main.go +++ b/backend/cmd/server/main.go @@ -1,4 +1,4 @@ -// Package main is the entry point for the imc-vibe mail server admin application. +// Package main is the entry point for the IMC mail server admin application. // This single binary contains both the Go backend API and the embedded SvelteKit frontend. package main @@ -11,11 +11,11 @@ import ( "os" // OS-level operations like reading command-line args "strings" // string manipulation utilities - "github.com/gin-gonic/gin" // web framework - "github.com/imc-vibe/backend/internal/api" // HTTP API routing and handlers - "github.com/imc-vibe/backend/internal/auth" // password hashing - "github.com/imc-vibe/backend/internal/config" // configuration loading - "github.com/imc-vibe/backend/internal/db" // database connection and operations + "github.com/gin-gonic/gin" // web framework + "github.com/imc/backend/internal/api" // HTTP API routing and handlers + "github.com/imc/backend/internal/auth" // password hashing + "github.com/imc/backend/internal/config" // configuration loading + "github.com/imc/backend/internal/db" // database connection and operations ) // main is the entry point of the application. @@ -24,7 +24,7 @@ import ( func main() { // Parse command-line flags. // Flags are optional arguments passed after the program name. - // Example: ./imc-vibe --bind=0.0.0.0 --port=8080 + // Example: ./imc --bind=0.0.0.0 --port=8080 // --bind: The IP address the server should listen on. // 0.0.0.0 means listen on all network interfaces (accessible from other machines). @@ -69,14 +69,14 @@ func main() { // Connect to the database (MariaDB/MySQL). // The database stores both ISPmail data (virtual_users, virtual_domains, etc.) - // and imc-vibe's own data (imc_users, imc_users2domains, etc.). + // and IMC's own data (imc_users, imc_users2domains, etc.). database, err := db.Connect(cfg) if err != nil { log.Fatalf("Failed to connect to database: %v", err) // Fatal = print and exit } // Create database tables if they don't exist. - // This only creates imc-vibe's own tables, not the ISPmail tables. + // This only creates IMC's own tables, not the ISPmail tables. if err := database.InitSchema(); err != nil { log.Printf("Warning: Could not initialize schema: %v", err) // Non-fatal = continue } diff --git a/backend/go.mod b/backend/go.mod index 4c2ea4d..ab1e353 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -1,4 +1,4 @@ -module github.com/imc-vibe/backend +module github.com/imc/backend go 1.25.0 diff --git a/backend/internal/api/handlers/aliases.go b/backend/internal/api/handlers/aliases.go index 9776926..9b7b6f2 100644 --- a/backend/internal/api/handlers/aliases.go +++ b/backend/internal/api/handlers/aliases.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/db" + "github.com/imc/backend/internal/db" ) type AliasHandler struct { diff --git a/backend/internal/api/handlers/auth.go b/backend/internal/api/handlers/auth.go index 4f7b23d..04ac738 100644 --- a/backend/internal/api/handlers/auth.go +++ b/backend/internal/api/handlers/auth.go @@ -6,8 +6,8 @@ import ( "time" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/auth" - "github.com/imc-vibe/backend/internal/db" + "github.com/imc/backend/internal/auth" + "github.com/imc/backend/internal/db" ) const MaxLoginAttempts = 5 diff --git a/backend/internal/api/handlers/domains.go b/backend/internal/api/handlers/domains.go index 40ea8d7..2e2df86 100644 --- a/backend/internal/api/handlers/domains.go +++ b/backend/internal/api/handlers/domains.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/db" + "github.com/imc/backend/internal/db" ) type DomainHandler struct { diff --git a/backend/internal/api/handlers/logs.go b/backend/internal/api/handlers/logs.go index e4b2001..ae0e782 100644 --- a/backend/internal/api/handlers/logs.go +++ b/backend/internal/api/handlers/logs.go @@ -5,7 +5,7 @@ import ( "strconv" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/mail" + "github.com/imc/backend/internal/mail" ) type LogsHandler struct{} diff --git a/backend/internal/api/handlers/middleware.go b/backend/internal/api/handlers/middleware.go index 850804f..b306ac9 100644 --- a/backend/internal/api/handlers/middleware.go +++ b/backend/internal/api/handlers/middleware.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/auth" + "github.com/imc/backend/internal/auth" ) // AuthContextKey is the key used to store auth context in gin.Context. diff --git a/backend/internal/api/handlers/queue.go b/backend/internal/api/handlers/queue.go index 1392e80..a0a847c 100644 --- a/backend/internal/api/handlers/queue.go +++ b/backend/internal/api/handlers/queue.go @@ -5,7 +5,7 @@ import ( "net/http" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/mail" + "github.com/imc/backend/internal/mail" ) type QueueHandler struct{} diff --git a/backend/internal/api/handlers/stats.go b/backend/internal/api/handlers/stats.go index b4002d4..80f09af 100644 --- a/backend/internal/api/handlers/stats.go +++ b/backend/internal/api/handlers/stats.go @@ -2,7 +2,7 @@ package handlers import ( "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/db" + "github.com/imc/backend/internal/db" ) type StatsHandler struct { diff --git a/backend/internal/api/handlers/users.go b/backend/internal/api/handlers/users.go index 779e309..36333e5 100644 --- a/backend/internal/api/handlers/users.go +++ b/backend/internal/api/handlers/users.go @@ -8,8 +8,8 @@ import ( "strings" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/db" - "github.com/imc-vibe/backend/internal/mail" + "github.com/imc/backend/internal/db" + "github.com/imc/backend/internal/mail" ) type UserHandler struct { diff --git a/backend/internal/api/router.go b/backend/internal/api/router.go index 32d9c6d..a6952fd 100644 --- a/backend/internal/api/router.go +++ b/backend/internal/api/router.go @@ -4,10 +4,10 @@ import ( "net/http" "github.com/gin-gonic/gin" - "github.com/imc-vibe/backend/internal/api/handlers" - "github.com/imc-vibe/backend/internal/auth" - "github.com/imc-vibe/backend/internal/config" - "github.com/imc-vibe/backend/internal/db" + "github.com/imc/backend/internal/api/handlers" + "github.com/imc/backend/internal/auth" + "github.com/imc/backend/internal/config" + "github.com/imc/backend/internal/db" ) type Router struct { @@ -22,7 +22,7 @@ type Router struct { } func New(database *db.DB, cfg *config.Config) *Router { - jwtManager := auth.NewJWTManager(cfg.JWTSecret, "imc-vibe") + jwtManager := auth.NewJWTManager(cfg.JWTSecret, "imc") r := &Router{ authHandler: handlers.NewAuthHandler(database, jwtManager, cfg.TrustedProxies), diff --git a/backend/internal/db/db.go b/backend/internal/db/db.go index 335e593..9e48eb2 100644 --- a/backend/internal/db/db.go +++ b/backend/internal/db/db.go @@ -1,4 +1,4 @@ -// Package db provides database access for the imc-vibe application. +// Package db provides database access for the IMC application. // It uses GORM (Go ORM) for database operations. // // The database contains two sets of tables: @@ -14,7 +14,7 @@ import ( "gorm.io/gorm" // GORM ORM library "gorm.io/gorm/logger" // GORM logger configuration - "github.com/imc-vibe/backend/internal/config" // configuration + "github.com/imc/backend/internal/config" // configuration ) // DB wraps GORM's database connection with helper methods. @@ -70,7 +70,7 @@ type Alias struct { func (Alias) TableName() string { return "virtual_aliases" } // ============================================================================= -// imc-vibe Application Models (tables created by this app) +// IMC Application Models (tables created by this app) // ============================================================================= // ImcUser represents an admin user who can log into this application. @@ -190,7 +190,7 @@ func Connect(cfg *config.Config) (*DB, error) { return &DB{db}, nil } -// InitSchema creates imc-vibe's database tables if they don't exist. +// InitSchema creates IMC's database tables if they don't exist. // This only creates the imc_* tables, not the ISPmail virtual_* tables. // Called during application startup. func (d *DB) InitSchema() error { diff --git a/frontend/package.json b/frontend/package.json index bc74a39..eed1631 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "imc-vibe-frontend", + "name": "imc-frontend", "version": "0.0.1", "private": true, "type": "module", diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 5ef4644..52fb7c5 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -91,7 +91,7 @@
- IMC Vibe + IMC
{#if selectedDomain} diff --git a/frontend/src/routes/auth/login/+page.svelte b/frontend/src/routes/auth/login/+page.svelte index 7c7277f..4f58bc2 100644 --- a/frontend/src/routes/auth/login/+page.svelte +++ b/frontend/src/routes/auth/login/+page.svelte @@ -42,7 +42,7 @@
-

IMC Vibe

+

IMC

Mail Server Administration

{#if error}