5a03ad4d6b
Pods are persisted in MongoDB and CRUD'd via /api/pods (list/create/get/ update/delete + add/remove member). Shared Pod reshaped to a persisted entity (members: string[], description, timestamps) + PodInput. Backend seeds Demo/ Frontend/Backend Pods on first run (Squad -> Pod rename). Frontend replaces hardcoded teams with live data: PodCard (member chips add/remove, inline edit, delete, join) + CreatePodForm; App fetches+mutates via API. Removes teams.ts/ TeamCard; gitignores test artifacts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
985 B
TypeScript
35 lines
985 B
TypeScript
/**
|
|
* A pod is one room of engineers working together (one LiveKit room per pod).
|
|
* Persisted in MongoDB; CRUD'd via /api/pods.
|
|
*/
|
|
export interface Pod {
|
|
/** URL-safe slug, e.g. "frontend-pod". Stable id used everywhere. */
|
|
id: string;
|
|
name: string;
|
|
/** GitHub repo the pod is working in, as "owner/name". */
|
|
repo: string;
|
|
description?: string;
|
|
/** Engineer display names PodMan uses when it speaks. */
|
|
members: string[];
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
}
|
|
|
|
/** Fields accepted when creating or updating a pod. */
|
|
export interface PodInput {
|
|
name?: string;
|
|
repo?: string;
|
|
description?: string;
|
|
members?: string[];
|
|
}
|
|
|
|
export interface Engineer {
|
|
id: string;
|
|
/** Display name PodMan uses when it speaks ("Karti and Yahya are both..."). */
|
|
name: string;
|
|
/** GitHub login, used to map vision context to GitHub state. */
|
|
githubLogin?: string;
|
|
/** LiveKit participant identity for this engineer in the pod room. */
|
|
participantId?: string;
|
|
}
|