| Day | Task | Start | Complete | Reference |
|---|---|---|---|---|
| Mon | Setup Amazon Cognito: - Create User Pool with email/password - Configure password policy - Enable Google OAuth provider - Create App Client - Configure hosted UI - Test signup/login flow | 23/03/2026 | 23/03/2026 | Cognito User Pools |
| Tue | Implement Domain Layer: - entities/user.py - User entity with validation- entities/flashcard.py - Flashcard entity- entities/session.py - Session entity- entities/scenario.py - Scenario entity- Value objects (Email, UserId, etc.) - Domain exceptions | 24/03/2026 | 24/03/2026 | Domain-Driven Design |
| Wed | Implement Repository Interfaces: - repositories/user_repository.py - Abstract interface- repositories/flashcard_repository.py- repositories/session_repository.py- Define repository methods (save, find, delete, etc.) | 25/03/2026 | 25/03/2026 | Repository Pattern |
| Thu | Implement DynamoDB Repository & Auth Use Cases: - infrastructure/dynamodb/user_repository_impl.py- Implement single-table design, PK/SK mapping - use_cases/auth/signup_user.py, login_user.py, refresh_token.py- Business logic validation - Unit tests | 26/03/2026 | 26/03/2026 | boto3 DynamoDB |
| Fri | Implement Lambda Handlers & API Gateway: - handlers/auth/signup.py, login.py, refresh.py- Configure REST API in SAM template - Add Cognito authorizer, CORS - Deploy and test endpoints | 27/03/2026 | 27/03/2026 | API Gateway with Cognito |
1. Authentication System:
2. Domain Layer:
3. Repository Layer:
4. Use Cases:
5. API Endpoints:
POST /auth/signup - User registrationPOST /auth/login - User loginPOST /auth/refresh - Token refreshsrc/
├── domain/
│ ├── entities/
│ │ ├── user.py
│ │ ├── flashcard.py
│ │ ├── session.py
│ │ └── scenario.py
│ ├── value_objects/
│ │ ├── email.py
│ │ └── user_id.py
│ └── exceptions.py
├── use_cases/
│ └── auth/
│ ├── signup_user.py
│ ├── login_user.py
│ └── refresh_token.py
├── repositories/
│ ├── user_repository.py (interface)
│ └── ...
├── infrastructure/
│ ├── dynamodb/
│ │ ├── user_repository_impl.py
│ │ └── connection.py
│ └── cognito/
│ └── auth_service.py
└── handlers/
└── auth/
├── signup.py
├── login.py
└── refresh.py
Unit Tests:
Integration Tests:
Challenge 1: Cognito token validation in Lambda
Challenge 2: DynamoDB conditional writes for duplicate prevention
Challenge 3: Lambda cold start slowing down first request
Challenge 4: Type hints with Python dynamic typing
Challenge 5: Encountered some errors during first deployment