- Migration 030: add email, assigned_plan, trial_duration_days, email_sent_at
to invite_codes with CHECK constraints
- Resend email integration (graceful degradation when API key not set)
- Invite codes now support plan assignment (free/pro/team) and trial duration (1-90 days)
- Registration applies invite code plan/trial to new subscription
- Auto-downgrade expired trials on authenticated access
- Enriched GET /admin/users/{id} with account, subscription, sessions, audit logs
- New endpoints: PUT /admin/users/{id}/subscription/plan and extend-trial
- Frontend: enhanced invite codes page with email, plan, trial fields
- Frontend: new user detail page at /admin/users/:userId
- Fixed API path drift: /invite-codes -> /invites
- 11 new backend tests, 416 total passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
473 B
Plaintext
33 lines
473 B
Plaintext
# FastAPI and server
|
|
fastapi==0.128.5
|
|
uvicorn[standard]==0.40.0
|
|
|
|
# Database
|
|
sqlalchemy==2.0.46
|
|
asyncpg==0.31.0
|
|
psycopg2-binary==2.9.9
|
|
alembic==1.18.3
|
|
|
|
# Authentication
|
|
python-jose[cryptography]==3.5.0
|
|
passlib[bcrypt]==1.7.4
|
|
bcrypt==4.1.2
|
|
python-multipart==0.0.22
|
|
|
|
# Validation and settings
|
|
pydantic==2.12.5
|
|
pydantic-settings==2.12.0
|
|
email-validator==2.1.0
|
|
|
|
# Rate Limiting
|
|
slowapi==0.1.9
|
|
|
|
# Payments
|
|
stripe==14.3.0
|
|
|
|
# Email
|
|
resend==2.21.0
|
|
|
|
# Utilities
|
|
python-dotenv==1.0.1
|