// Package domain contains business logic entities and interfaces. package domain import ( "time" "github.com/google/uuid" ) // User represents a registered user in the system. type User struct { ID uuid.UUID `json:"id"` Email string `json:"email"` PasswordHash string `json:"-"` // Never expose in JSON IsAdmin bool `json:"is_admin"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // UserRepository defines the interface for user data access. type UserRepository interface { Create(user *User) error GetByEmail(email string) (*User, error) GetByID(id uuid.UUID) (*User, error) Exists(email string) (bool, error) }