code cleanup
This commit is contained in:
121
CLAUDE.md
Normal file
121
CLAUDE.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Development Commands
|
||||
|
||||
### Building and Running
|
||||
```bash
|
||||
# Build the main application
|
||||
go build -o api.exe cmd/api/main.go
|
||||
|
||||
# Build with hot reload (requires air)
|
||||
go install github.com/cosmtrek/air@latest
|
||||
air
|
||||
|
||||
# Run the built binary
|
||||
./api.exe
|
||||
|
||||
# Build migration utility
|
||||
go build -o acc-server-migration.exe cmd/migrate/main.go
|
||||
```
|
||||
|
||||
### Testing
|
||||
```bash
|
||||
# Run all tests
|
||||
go test ./...
|
||||
|
||||
# Run tests with verbose output
|
||||
go test -v ./...
|
||||
|
||||
# Run specific test package
|
||||
go test ./tests/unit/service/
|
||||
go test ./tests/unit/controller/
|
||||
go test ./tests/unit/repository/
|
||||
```
|
||||
|
||||
### Documentation
|
||||
```bash
|
||||
# Generate Swagger documentation (if swag is installed)
|
||||
swag init -g cmd/api/main.go
|
||||
```
|
||||
|
||||
### Setup and Configuration
|
||||
```bash
|
||||
# Generate security configuration (Windows PowerShell)
|
||||
.\scripts\generate-secrets.ps1
|
||||
|
||||
# Deploy (requires configuration)
|
||||
.\scripts\deploy.ps1
|
||||
```
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
This is a Go-based web application for managing Assetto Corsa Competizione (ACC) dedicated servers on Windows. The architecture follows a layered approach:
|
||||
|
||||
### Core Layers
|
||||
- **cmd/**: Application entry points (main.go for API server, migrate/main.go for migrations)
|
||||
- **local/**: Core application code organized by architectural layer
|
||||
- **api/**: HTTP route definitions and API setup
|
||||
- **controller/**: HTTP request handlers (config, membership, server, service_control, steam_2fa, system)
|
||||
- **service/**: Business logic layer (server management, Steam integration, Windows services)
|
||||
- **repository/**: Data access layer with GORM ORM
|
||||
- **model/**: Data models and structures
|
||||
- **middleware/**: HTTP middleware (auth, security, logging)
|
||||
- **utl/**: Utilities organized by function (cache, command execution, JWT, logging, etc.)
|
||||
|
||||
### Key Components
|
||||
|
||||
#### Dependency Injection
|
||||
Uses `go.uber.org/dig` for dependency injection. Main dependencies are set up in `cmd/api/main.go`.
|
||||
|
||||
#### Database
|
||||
- SQLite with GORM ORM
|
||||
- Database migrations in `local/migrations/`
|
||||
- Models support UUID primary keys
|
||||
|
||||
#### Authentication & Security
|
||||
- JWT-based authentication with two token types (regular and "open")
|
||||
- Comprehensive security middleware stack including rate limiting, input sanitization, CORS
|
||||
- Encrypted credential storage for Steam integration
|
||||
|
||||
#### Server Management
|
||||
- Windows service integration via NSSM
|
||||
- Steam integration for server installation/updates via SteamCMD
|
||||
- Interactive command execution for Steam 2FA
|
||||
- Firewall management
|
||||
- Configuration file generation and management
|
||||
|
||||
#### Logging
|
||||
- Custom logging system with multiple levels (debug, info, warn, error)
|
||||
- Request logging middleware
|
||||
- Structured logging with categories
|
||||
|
||||
### Testing Structure
|
||||
- Unit tests in `tests/unit/` organized by layer (controller, service, repository)
|
||||
- Test helpers and mocks in `tests/` directory
|
||||
- Uses standard Go testing with mocks for external dependencies
|
||||
|
||||
### External Dependencies
|
||||
- **Fiber v2**: Web framework
|
||||
- **GORM**: ORM for database operations
|
||||
- **SteamCMD**: External tool for Steam server management (configured via STEAMCMD_PATH env var)
|
||||
- **NSSM**: Windows service management (configured via NSSM_PATH env var)
|
||||
|
||||
### Configuration
|
||||
- Environment variables for external tool paths and configuration
|
||||
- JWT secrets generated via setup scripts
|
||||
- CORS configuration with configurable allowed origins
|
||||
- Default port 3000 (configurable via PORT env var)
|
||||
|
||||
## Important Notes
|
||||
|
||||
### Windows-Specific Features
|
||||
This application is designed specifically for Windows and includes:
|
||||
- Windows service management integration
|
||||
- PowerShell script execution
|
||||
- Windows-specific path handling
|
||||
- Firewall rule management
|
||||
|
||||
### Steam Integration
|
||||
The Steam 2FA implementation (`local/controller/steam_2fa.go`, `local/model/steam_2fa.go`) provides interactive Steam authentication for automated server management.
|
||||
Reference in New Issue
Block a user