Reorganize repo: backend/, deploy/, docs/ layout + AGENTS.md
Restructure the monorepo into clear top-level directories: - backend/: Go module root (cmd, internal, pkg, configs, migrations, docs/swagger, scripts, tests, go.mod, Makefile, .air.toml) - deploy/: Docker (Dockerfile, docker-compose*), quickstart, fluentd - docs/: project documentation + reports/ (moved from repo root) - AGENTS.md: new AI coding-agent guide at repo root Update all references to the new layout: - Dockerfile: COPY backend/go.mod, COPY backend/ (context = repo root) - docker-compose files: context ../.., dockerfile deploy/docker/Dockerfile, env_file ../../.env, volume mounts ../../backend:/app - deploy/quickstart/compose.yaml: dockerfile deploy/docker/Dockerfile - CI: working-directory: backend for go commands, file deploy/docker/Dockerfile, coverage path backend/coverage.out, health_check backend/scripts/ - backend/Makefile: docker target uses -f ../deploy/docker/Dockerfile ../ - README: architecture tree, quickstart, config paths updated Move root stray scripts (rename_models.*, run_m11_tests.sh, verify_build.sh, gorm_bool_main.go) to backend/scripts/legacy/. All moves via git mv to preserve history. Build, vet, SQLite tests, and docker compose config verified.
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# GoChat Makefile
|
||||
# Reference: Chatwoot Makefile pattern (setup, db, server, docker, run)
|
||||
|
||||
APP_NAME := gochat
|
||||
GO_ENV ?= development
|
||||
|
||||
# Go build flags
|
||||
LDFLAGS := -s -w
|
||||
BUILD_DIR := ./bin
|
||||
|
||||
# Targets
|
||||
.PHONY: all setup build run dev test lint clean docker db_create db_migrate db_seed db_reset migrate help
|
||||
|
||||
all: build
|
||||
|
||||
## setup: Install dependencies
|
||||
setup:
|
||||
go mod download
|
||||
go mod tidy
|
||||
|
||||
## build: Compile the binary
|
||||
build:
|
||||
go build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(APP_NAME) ./cmd/gochat/
|
||||
|
||||
## run: Run the compiled binary
|
||||
run: build
|
||||
./$(BUILD_DIR)/$(APP_NAME)
|
||||
|
||||
## dev: Run in development mode with hot reload (requires air)
|
||||
dev:
|
||||
air -c .air.toml
|
||||
|
||||
## test: Run tests
|
||||
test:
|
||||
go test -v -race ./...
|
||||
|
||||
## test-cover: Run tests with coverage
|
||||
test-cover:
|
||||
go test -v -race -coverprofile=coverage.out ./...
|
||||
go tool cover -html=coverage.out -o coverage.html
|
||||
|
||||
## lint: Run golangci-lint
|
||||
lint:
|
||||
golangci-lint run ./...
|
||||
|
||||
## clean: Remove build artifacts
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
rm -f coverage.out coverage.html
|
||||
|
||||
## docker: Build Docker image
|
||||
docker:
|
||||
docker build -t $(APP_NAME) -f ../deploy/docker/Dockerfile ../
|
||||
|
||||
## db_create: Create database (ref: Chatwoot make db_create)
|
||||
db_create:
|
||||
@echo "Creating database..."
|
||||
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh create
|
||||
|
||||
## db_migrate: Run migrations (ref: Chatwoot make db_migrate)
|
||||
db_migrate:
|
||||
@echo "Running migrations..."
|
||||
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh up
|
||||
|
||||
## db_seed: Seed data (ref: Chatwoot make db_seed)
|
||||
db_seed:
|
||||
@echo "Seeding database..."
|
||||
GOCHAT_ENV=$(GO_ENV) ./scripts/seed.sh
|
||||
|
||||
## db_reset: Reset database (ref: Chatwoot make db_reset)
|
||||
db_reset:
|
||||
@echo "Resetting database..."
|
||||
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh down
|
||||
GOCHAT_ENV=$(GO_ENV) ./scripts/migrate.sh up
|
||||
GOCHAT_ENV=$(GO_ENV) ./scripts/seed.sh
|
||||
|
||||
## migrate: Create a new migration file
|
||||
migrate:
|
||||
@read -p "Migration name: " name; migrate create -ext sql -dir migrations -seq $$name
|
||||
|
||||
## help: Show this help
|
||||
help:
|
||||
@echo "GoChat Makefile Commands:"
|
||||
@echo ""
|
||||
@grep -E '^## ' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ": "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' | sed 's/## //g'
|
||||
Reference in New Issue
Block a user