matrix-builder / web /src /lib /matrix-demo-data.ts
ruslanmv
Deploy: metrics + docs (Batch 12)
22b729d
Raw
History Blame Contribute Delete
1.69 kB
// OFFLINE FALLBACK ONLY. The build flow calls the engine (/blueprints/candidates) for real
// candidates; this deterministic generator is used solely when the API is unreachable, so the
// demo still renders without a backend. Kept in shape-parity with the engine's candidates.
import type { BlueprintCandidate } from "@/types/blueprint";
import { IDEA_EXAMPLES } from "./constants";
import { slugify } from "./ids";
export { IDEA_EXAMPLES };
export function createBlueprintCandidates(idea: string): BlueprintCandidate[] {
const slug = slugify(idea);
return [
{
id: "minimal",
tier: "Minimal",
name: `${slug}-lite`,
summary: "The smallest controlled scaffold — validate the idea fast.",
stack: ["Python", "FastAPI"],
files: 14,
difficulty: "Easy",
time: "a weekend",
standards: ["PEP 8", "12-Factor", "Semantic API"],
},
{
id: "standard",
tier: "Standard",
recommended: true,
name: slug,
summary: "Balanced architecture with tests, docs, CI, and a safe build contract.",
stack: ["Python", "FastAPI", "React", "Docker"],
files: 31,
difficulty: "Medium",
time: "~1 week",
standards: ["PEP 8", "12-Factor", "OpenAPI", "OWASP ASVS", "CI/CD"],
},
{
id: "production",
tier: "Production",
name: `${slug}-pro`,
summary: "Hardened, observable, and scalable for real users.",
stack: ["Python", "FastAPI", "React", "Docker", "K8s", "Postgres"],
files: 58,
difficulty: "Hard",
time: "~3 weeks",
standards: ["PEP 8", "12-Factor", "OpenAPI", "OWASP ASVS", "CI/CD", "OpenTelemetry", "SLSA"],
},
];
}