33 lines
1.5 KiB
Markdown
33 lines
1.5 KiB
Markdown
# 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 |