- Custom User model with email as unique identifier (AUTH_USER_MODEL)
- POST /api/auth/register/ with email validation, password min 8 chars, duplicate rejection
- POST /api/auth/login/ returning JWT (access + refresh) tokens
- Passwords hashed via Django's make_password
- React LoginPage and RegisterPage with form validation
- AuthContext with useReducer for auth state management
- Axios API client with JWT token injection
- TypeScript conversion of frontend scaffold