79 lines
2.2 KiB
Markdown
79 lines
2.2 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
AnKao is a Go web application built using the standard library's `net/http` package. The project follows a clean architecture pattern with clear separation of concerns.
|
|
|
|
## Architecture
|
|
|
|
### Request Flow
|
|
1. HTTP requests arrive at the server running on port 8080
|
|
2. Requests pass through the `Logger` middleware (in `internal/middleware/`)
|
|
3. The router (`http.NewServeMux`) directs requests to appropriate handlers
|
|
4. Handlers (in `internal/handlers/`) process requests and return JSON responses
|
|
|
|
### Middleware Pattern
|
|
Middleware functions wrap the main handler using the standard middleware pattern:
|
|
```go
|
|
func Middleware(next http.Handler) http.Handler
|
|
```
|
|
Middleware is applied in [cmd/server/main.go:20](cmd/server/main.go#L20) before starting the server.
|
|
|
|
### Module Structure
|
|
- **cmd/server/** - Application entry point, server configuration and routing setup
|
|
- **internal/handlers/** - HTTP request handlers, all return JSON responses
|
|
- **internal/middleware/** - HTTP middleware chain (currently: logging)
|
|
- **internal/models/** - Data models (directory exists but not yet populated)
|
|
- **pkg/config/** - Configuration management (directory exists but not yet populated)
|
|
|
|
## Common Commands
|
|
|
|
### Development
|
|
```bash
|
|
# Run the server
|
|
go run cmd/server/main.go
|
|
|
|
# Install/update dependencies
|
|
go mod tidy
|
|
|
|
# Format code
|
|
go fmt ./...
|
|
|
|
# Vet code for common issues
|
|
go vet ./...
|
|
```
|
|
|
|
### Building
|
|
```bash
|
|
# Build binary to bin/server
|
|
go build -o bin/server cmd/server/main.go
|
|
|
|
# Run built binary (Windows)
|
|
.\bin\server.exe
|
|
|
|
# Run built binary (Unix)
|
|
./bin/server
|
|
```
|
|
|
|
### Testing
|
|
```bash
|
|
# Run all tests
|
|
go test ./...
|
|
|
|
# Run tests with coverage
|
|
go test -cover ./...
|
|
|
|
# Run tests in a specific package
|
|
go test ./internal/handlers/
|
|
```
|
|
|
|
## Key Implementation Details
|
|
|
|
- The server listens on port **:8080** (hardcoded in main.go:23)
|
|
- All responses are JSON with appropriate Content-Type headers
|
|
- Import paths use the module name `ankao` (defined in go.mod)
|
|
- When adding new handlers, register them in [cmd/server/main.go](cmd/server/main.go) using `mux.HandleFunc()`
|
|
- Middleware wraps the entire mux, so it applies to all routes
|