---
name: "Amazon Transcreation"
client: "TBD"
status: active
tech: []
local_path: /Users/ai_leed/Documents/Projects/Oliver/amazon-transcreation
deploy:
url:
tags:
  - project
created: 2026-04-15
---

## Overview
> New project — fill in during first session.

## Tech Stack
- **Frontend:**
- **Backend:**
- **Infrastructure:**

## Deployment
- **Local path:** `/Users/ai_leed/Documents/Projects/Oliver/amazon-transcreation`

## Sessions
### 2026-04-16 – Fix 500 error when updating users
**Asked:** Fix 500 error when updating users and resolve accessibility warnings in the user form dialog.
**Done:** Added database refresh after flush to resolve server-generated field issues, wrapped form fields in form element, and added aria-describedby to DialogContent.

### 2026-04-16 – Fix DialogContent missing Description warning and
**Asked:** Fix DialogContent missing Description warning and password field not in form error.
**Done:** Added DialogDescription to DialogContent and wrapped password field in form element.

### 2026-04-15 – Implement user management with DB registration
**Asked:** Implement user management with DB registration and role assignment (viewer default, upgradeable to admin/manager).
**Done:** Added user registration logic with role-based access control, deployed to production, and provided migration/seeding commands.

### 2026-04-15 – Implement user registration with DB persistence
**Asked:** Implement user registration with DB persistence and role management (default viewer, upgradeable to admin/manager).
**Done:** Added viewer role to UserRole enum, updated SSO auto-provisioning, created migration, and deployed with admin seeding script.

### 2026-04-15 – Implement user registration in DB with
**Asked:** Implement user registration in DB with default viewer role and ability to upgrade to admin/manager via backend.
**Done:** Added viewer role to UserRole enum, created migration, updated SSO auto-provisioning to assign viewer role by default, and verified all changes in git.

### 2026-04-15 – Implement user registration with DB persistence
**Asked:** Implement user registration with DB persistence and role management (default viewer, upgradeable to admin/manager).
**Done:** Verified user registration logic integrates with existing role enums and confirmed all role references work correctly across jobs page and migration files.

### 2026-04-15 – Set up SSO (SPA) token exchange
**Asked:** Set up SSO (SPA) token exchange in the browser with Azure AD / MSAL configuration.
**Done:** Added Azure AD environment variables to Docker configuration, updated deploy script, and pushed changes to Git.

### 2026-04-15 – Set up SSO (SPA) token exchange
**Asked:** Set up SSO (SPA) token exchange in the browser with Azure AD / MSAL configuration.
**Done:** Added Azure AD environment variables to Dockerfile and docker-compose.prod.yml, configured Next.js build args for MSAL.

### 2026-04-15 – Set up SSO (SPA) token exchange
**Asked:** Set up SSO (SPA) token exchange in the browser with Azure AD/MSAL configuration.
**Done:** Configured Azure AD credentials, updated deployment script, and added SSO setup to compose file and Dockerfile.

### 2026-04-15 – Set up SSO token exchange in
**Asked:** Set up SSO token exchange in the browser using Azure AD and MSAL.
**Done:** Configured MSAL v5 with Azure AD credentials and removed deprecated `storeAuthStateInCookie` parameter to resolve type errors.


## Change Log
| Date | Requested | Changed | Files |
|------|-----------|---------|-------|
| 2026-04-16 | Fix user update errors and form warnings | Added refresh() after flush, wrapped fields in form element, added aria-describedby | backend/app/api/v1/users.py, frontend/src/app/admin/users/page.tsx |
| 2026-04-16 | DialogContent and password field accessibility | Added DialogDescription, wrapped input in form element | DialogContent.tsx, PasswordField.tsx |
| 2026-04-15 | User registration and role management | User model with role enum, migration for viewer role, admin seeding script | User.py, alembic migrations, create_default_admins.py |
| 2026-04-15 | User registration and roles | Added viewer role enum, SSO auto-provision logic, migration for role enum, admin seeding script | user.py, service.py, user.py schema, d3e4f5a6b7c8_add_viewer_role.py |
| 2026-04-15 | User registration with roles | Added viewer role enum value, created migration for viewer role, updated SSO service to default new users to viewer role | user.py, d3e4f5a6b7c8_add_viewer_role.py, service.py, user.py |
| 2026-04-15 | User registration and roles | Database persistence, default viewer role, admin/manager upgrade capability, role enum integration | jobs/[jobId]/page.tsx, migration file, seed script |
| 2026-04-15 | SSO/Azure AD setup | Added NEXT_PUBLIC_AZURE_AD_TENANT_ID, NEXT_PUBLIC_AZURE_AD_CLIENT_ID, SSO_ENABLED env vars to Docker build args, updated deploy script | frontend/Dockerfile, docker-compose.prod.yml, deploy.sh |
| 2026-04-15 | SSO setup with Azure AD | Added ARG and ENV for NEXT_PUBLIC_AZURE_AD_TENANT_ID, NEXT_PUBLIC_AZURE_AD_CLIENT_ID, SSO_ENABLED; updated build args in compose | frontend/Dockerfile, docker-compose.prod.yml |
| 2026-04-15 | SSO Azure AD setup | Added AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_REDIRECT_URI, updated deploy script, added setup summary | docker-compose.yml, Dockerfile, deploy.sh |
| 2026-04-15 | SSO/MSAL setup | Azure tenant/client ID configuration, removed storeAuthStateInCookie, token exchange flow | MSAL config file, authentication module |

## Related
