Add Email Validation Support (EmailStr + email-validator)
🎯 Objective
Restore proper email validation in auth models by reintroducing EmailStr with correct email-validator dependency configuration.
📋 Background
During initial scaffold setup (Issue #1), we temporarily replaced EmailStr with str in auth models to unblock Docker builds due to missing email-validator dependency. This sub-issue restores proper email validation.
🔧 Technical Requirements
Dependencies
Code Changes
# In corner_pocket_backend/api/v1/auth.py
# Change from:
class RegisterIn(BaseModel):
email: str # Current temporary fix
# Back to:
from pydantic import EmailStr
class RegisterIn(BaseModel):
email: EmailStr # Proper validation
Docker Verification
✅ Acceptance Criteria
-
Email Validation Works
# Valid email - should succeed
curl -X POST http://localhost:8000/api/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"test@example.com","handle":"test","display_name":"Test","password":"pw"}'
# Invalid email - should return 422 validation error
curl -X POST http://localhost:8000/api/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"invalid-email","handle":"test","display_name":"Test","password":"pw"}'
-
Build & Deploy
- Docker builds without cache successfully
- No import errors on container startup
- All existing smoke tests still pass
-
Dependencies
poetry install works locally
poetry run python -c "from pydantic import EmailStr; print('OK')" succeeds
- Docker image size doesn't increase significantly
🔄 Implementation Options
Option A: Direct dependency
[tool.poetry.dependencies]
email-validator = "^2.3.0"
Option B: Pydantic extra (recommended)
[tool.poetry.dependencies]
pydantic = { version = "^2.11", extras = ["email"] }
Option C: Force install in Dockerfile
RUN poetry install --no-root --only main \
&& poetry run pip install email-validator
📝 Files to Update
pyproject.toml - Add dependency
corner_pocket_backend/api/v1/auth.py - Restore EmailStr imports/usage
- Verify no other files use email fields
⚠️ Risks
- Dependency resolution conflicts (low risk)
- Docker layer caching may need
--no-cache rebuild
- Regression in auth endpoints (mitigated by testing)
🧪 Testing
Add Email Validation Support (EmailStr + email-validator)
🎯 Objective
Restore proper email validation in auth models by reintroducing
EmailStrwith correctemail-validatordependency configuration.📋 Background
During initial scaffold setup (Issue #1), we temporarily replaced
EmailStrwithstrin auth models to unblock Docker builds due to missingemail-validatordependency. This sub-issue restores proper email validation.🔧 Technical Requirements
Dependencies
email-validatortopyproject.tomldependenciespydantic = { version = "^2.11", extras = ["email"] }Code Changes
Docker Verification
poetry run pip listshows email-validator installed✅ Acceptance Criteria
Email Validation Works
Build & Deploy
Dependencies
poetry installworks locallypoetry run python -c "from pydantic import EmailStr; print('OK')"succeeds🔄 Implementation Options
Option A: Direct dependency
Option B: Pydantic extra (recommended)
Option C: Force install in Dockerfile
RUN poetry install --no-root --only main \ && poetry run pip install email-validator📝 Files to Update
pyproject.toml- Add dependencycorner_pocket_backend/api/v1/auth.py- Restore EmailStr imports/usage--no-cacherebuild🧪 Testing