- Add Python/FastAPI backend with Celery workers - Add video generation with FFmpeg (spinning record animation) - Add API endpoints: submissions, status polling, webhook, results - Add database schema and Alembic migrations - Update frontend pages with API integration - Add project documentation and spec Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Cookie Usage Summary for Legal Review
What We Use
This application uses localStorage (not HTTP cookies) for user tracking.
| Property | Details |
|---|---|
| Storage Mechanism | Browser localStorage |
| Storage Key | submission_data |
| Identifier Name | cookie_id (misnomer - not a browser cookie) |
Data Structure Stored
{
"cookie_id": "cookie_abc123xyz",
"entries": [
{ "session_id": "clxyz123...", "timestamp": "2026-02-14T10:30:00Z" }
]
}
Source Code Location
- Frontend:
assets/js/home.js-SessionManagermodule (lines 6-77) - Backend:
cookie_idgenerated server-side using Cuid2 algorithm (per spec in/documents/spec.md)
Generation Flow
- User's first submission → backend generates
cookie_idusing Cuid2 - Backend returns
cookie_idin API response - Frontend stores in localStorage via
SessionManager.updateSession() - Subsequent requests include this
cookie_idin the JSON payload
Purpose
Rate limiting only - prevents users from generating more than 10 songs per identifier.
Legal Considerations
| Aspect | Status |
|---|---|
| HTTP Cookie | No - uses localStorage |
| Third-party tracking | No - first-party only |
| Cross-site tracking | No - same-origin only |
| Personal data in identifier | No - random Cuid2 string |
| Cross-device tracking | No - each browser/device gets unique ID |
| User can clear | Yes - clearing browser storage resets it |
| Persistence | Until user clears localStorage or uses different browser |
| Data sent to third parties | No - only to Pets at Home backend |
Note
The identifier is named "cookie_id" in the codebase but is not an HTTP cookie (no Set-Cookie header, not sent automatically with requests). It's a localStorage value sent explicitly in form submission JSON payloads.