Files
photofetch/backend/src/fixtures.ts
Julien Calixte 528251f176 chore: initial scaffold
Vite + Vue 3 + DaisyUI SPA (project picker + Slack avatar member grid) with a
TypeScript/Node (Hono) backend proxying Napta + Slack, SQLite avatar cache via
node:sqlite, and docker-compose for Coolify deploy.
2026-06-26 15:26:20 +01:00

48 lines
1.4 KiB
TypeScript

import type { Member, Project } from "./types.ts"
// Demo data served when live Napta/Slack credentials are not configured. Lets
// the UI render a realistic team grid out of the box. imageUrl is null so the
// frontend shows initials avatars (the same fallback used for real members who
// have no Slack match).
export const fixtureProjects: Project[] = [
{ id: "demo-apollo", name: "Apollo Platform", clientName: "Acme Corp" },
{ id: "demo-zephyr", name: "Zephyr Mobile App", clientName: "Globex" },
]
function member(
id: string,
firstName: string,
lastName: string,
role: string,
): Member {
return {
id,
firstName,
lastName,
role,
email: `${firstName}.${lastName}@example.com`.toLowerCase(),
imageUrl: null,
slackMatched: false,
}
}
const membersByProject: Record<string, Member[]> = {
"demo-apollo": [
member("1", "Ada", "Lovelace", "Tech Lead"),
member("2", "Alan", "Turing", "Backend Engineer"),
member("3", "Grace", "Hopper", "Engineering Manager"),
member("4", "Katherine", "Johnson", "Data Scientist"),
member("5", "Dennis", "Ritchie", "Platform Engineer"),
],
"demo-zephyr": [
member("6", "Margaret", "Hamilton", "Product Owner"),
member("7", "Linus", "Torvalds", "Mobile Lead"),
member("8", "Barbara", "Liskov", "iOS Engineer"),
],
}
export function fixtureMembers(projectId: string): Member[] {
return membersByProject[projectId] ?? []
}