# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Commands - `mix compile` - Compile source files - `mix test` - Run all tests - `mix test test/path/to/test.exs` - Run a specific test file - `mix test test/path/to/test.exs:LINE` - Run a specific test at a line number - `mix deps.get` - Install dependencies - `mix clean` - Clean build artifacts ## Architecture This is an Elixir library that provides email allowlist functionality for restricting account creation. The library consists of two main modules: 1. **BasicSignupAllowlist** (lib/basic_signup_allowlist.ex) - Public API module that reads the `SIGNUP_ALLOWLIST_EMAILS` environment variable and delegates to the functional core 2. **FunCore.BasicSignupAllowlist** (lib/fun_core/basic_signup_allowlist.ex) - Pure functional core that handles the allowlist logic without side effects The architecture follows a functional core/imperative shell pattern where: - The functional core contains pure functions for email normalization and allowlist checking - The outer module handles environment variable reading and provides the public interface ## Environment Variables - `SIGNUP_ALLOWLIST_EMAILS` - Comma-separated list of allowed email addresses, or "*" to allow all emails ## Project Configuration - Elixir version: ~> 1.18 (managed via mise) - No external dependencies currently - Test framework: ExUnit with async: false for integration tests that modify environment variables