Skip to content

feat(profile): Design user profile schema (ADR) #310

@arunderwood

Description

@arunderwood

Summary

Write Architecture Decision Record documenting the user profile data model and hybrid storage strategy.

Parent Epic

Part of #309 (User Profiles & Personalization)

Dependencies

Deliverables

  • ADR document in docs/adr/004-user-profiles-architecture.md covering:
    • Profile fields: callsign, QTH grid square (Maidenhead), preferred bands, preferred modes
    • Privacy model (what's public vs private)
    • Hybrid storage strategy: LocalStorage for anonymous, DB sync for logged-in
    • API design for profile CRUD operations
    • Sync strategy (LocalStorage ↔ Database)
  • Database schema design for user_profiles table
  • LocalStorage schema design (JSON structure)

Profile Fields

Field Type Description Example
callsign string (optional) Amateur radio callsign "W1AW"
gridSquare string (optional) Maidenhead locator (2-8 chars) "FN31pr"
preferredBands string[] Preferred frequency bands ["20m", "40m", "2m"]
preferredModes string[] Preferred operating modes ["SSB", "FT8", "CW"]

Storage Strategy

┌─────────────────────────────────────────────────────────┐
│                    User Preferences                      │
├─────────────────────────────────────────────────────────┤
│  Anonymous User                 Logged-in User          │
│  ┌─────────────┐               ┌─────────────┐          │
│  │ LocalStorage│               │ LocalStorage│          │
│  │ (primary)   │               │ (cache)     │          │
│  └─────────────┘               └──────┬──────┘          │
│                                       │ sync            │
│                                ┌──────▼──────┐          │
│                                │  PostgreSQL │          │
│                                │  (primary)  │          │
│                                └─────────────┘          │
└─────────────────────────────────────────────────────────┘

Acceptance Criteria

  • ADR document exists and covers all key decisions
  • Database schema documented
  • LocalStorage JSON structure documented
  • Sync strategy clearly defined

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions