Skip to content

Frontend MVP #21

Description

@ezrakoreen

Summary

Set up a basic frontend app for authenticated users with two pages: one for recent conversations and one for browsing people in the memory database, backed by new or expanded backend API integrations.

Context

The backend already contains memory-domain models and services for people, episodes, summaries, facts, and relationships, but the repo does not yet have a real app frontend or frontend-ready API routes for these views. This work is needed to create the first usable post-login UI for exploring stored memory data and to define the backend services the frontend must integrate with. Authentication and account creation are handled in a separate ticket, because those services need to be integrated with audio embedding for onboarding; this ticket should assume the user already has an account and an authenticated session.

Tasks

  • Scaffold a minimal frontend app in frontend/ with routing and shared navigation for Recent Conversations and People
  • Build a Recent Conversations page that lists recent episodes with timestamp, participant name, and conversation summary
  • Build a People page that lists people in the memory database with display name and lightweight metadata such as last seen time or top facts
  • Add loading, empty, and error states for both pages
  • Add a frontend API client layer for backend requests
  • Integrate the app with the existing authenticated user/session flow created in the separate account-creation ticket
  • Expose backend endpoints for conversation and people list views, since the current FastAPI app does not yet provide these routes
  • Implement a backend read service for recent conversations using the episode and person tables
  • Implement a backend read service for people listing using MemoryStore.list_people() and, if needed, MemoryStore.get_profile_context(person_id) for more data
  • Ensure all requests are scoped to the authenticated owner user, since memory data is keyed by owner_user_id
  • Configure CORS and local development wiring so the frontend can call the FastAPI backend
  • Add basic frontend and backend tests covering the new pages and API responses

Acceptance Criteria

  • Feature works as described
  • No console errors
  • Tests pass

Notes

  • Relevant backend services already exist:
    • app.crud.memory_store.MemoryStore for people and profile data
    • app.services.conversation_ingestion.ingest_conversation() for creating conversation data that should later appear in the UI
    • app.crud.person_resolver.PersonResolver is not required for the initial list pages, but may be useful later for search/disambiguation
  • Suggested initial endpoints:
    • GET /conversations/recent
    • GET /people
    • Optional later: GET /people/{person_id} or GET /people/{person_id}/profile
  • The backend likely needs a new read/query path for recent episodes, because the current memory store focuses mainly on writes plus person/profile reads
  • V1 can remain read-only; editing or creating records from the frontend is out of scope
  • This ticket should not implement signup or login; it should consume the authenticated user context produced by the separate account creation ticket

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions