# Story 1.5: HTTP Server Foundation with Middleware Stack

## Metadata
- **Story ID**: 1.5
- **Title**: HTTP Server Foundation with Middleware Stack
- **Epic**: 1 - Core Kernel & Infrastructure
- **Status**: Pending
- **Priority**: High
- **Estimated Time**: 6-8 hours
- **Dependencies**: 1.1, 1.3, 1.4

## Goal
Create a production-ready HTTP server with comprehensive middleware for security, observability, and error handling.

## Description
This story implements a complete HTTP server using Gin with a comprehensive middleware stack including request ID generation, structured logging, panic recovery, metrics collection, CORS, and graceful shutdown.

## Deliverables

### 1. HTTP Server (`internal/server/server.go`)
- Gin router initialization
- Server configuration (port, host, timeouts)
- Graceful shutdown handling

### 2. Comprehensive Middleware Stack
- **Request ID Generator**: Unique ID per request
- **Structured Logging**: Log all requests with context
- **Panic Recovery**: Recover panics → error bus
- **Prometheus Metrics**: Collect request metrics
- **CORS Support**: Configurable CORS headers
- **Request Timeout**: Handle request timeouts
- **Response Compression**: Gzip compression for responses

### 3. Core Route Registration
- `GET /healthz` - Liveness probe
- `GET /ready` - Readiness probe
- `GET /metrics` - Prometheus metrics

### 4. FX Lifecycle Integration
- HTTP server starts on `OnStart` hook
- Graceful shutdown on `OnStop` hook (drains connections)
- Port configuration from config system

### 5. Integration
- Integration with main application entry point
- Integration with all middleware systems

## Implementation Steps

1. **Install Dependencies**
   ```bash
   go get github.com/gin-gonic/gin
   ```

2. **Create HTTP Server**
   - Create `internal/server/server.go`
   - Initialize Gin router
   - Configure server settings

3. **Implement Middleware**
   - Request ID middleware
   - Logging middleware
   - Panic recovery middleware
   - Metrics middleware
   - CORS middleware
   - Timeout middleware
   - Compression middleware

4. **Register Core Routes**
   - Health endpoints
   - Metrics endpoint

5. **Integrate with FX**
   - Add lifecycle hooks
   - Handle graceful shutdown

6. **Test Server**
   - Verify server starts
   - Test all endpoints
   - Test graceful shutdown

## Acceptance Criteria
- [ ] HTTP server starts successfully
- [ ] All middleware executes in correct order
- [ ] Request IDs are generated and logged
- [ ] Metrics are collected for all requests
- [ ] Panics are recovered and handled
- [ ] Graceful shutdown works correctly
- [ ] Server is configurable via config system
- [ ] CORS is configurable per environment
- [ ] All core endpoints work correctly

## Related ADRs
- [ADR-0006: HTTP Framework](../../adr/0006-http-framework.md)

## Implementation Notes
- Use Gin for HTTP routing
- Middleware order is important
- Support graceful shutdown with connection draining
- CORS should be configurable per environment
- Consider adding rate limiting in future (Epic 6)

## Testing
```bash
# Test server startup
go run cmd/platform/main.go

# Test endpoints
curl http://localhost:8080/healthz
curl http://localhost:8080/ready
curl http://localhost:8080/metrics

# Test graceful shutdown
# Send SIGTERM and verify graceful shutdown
```

## Files to Create/Modify
- `internal/server/server.go` - HTTP server
- `internal/server/middleware.go` - Middleware functions
- `internal/di/providers.go` - Add server provider
- `config/default.yaml` - Add server configuration

