Spaces:
Running
Running
| // 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"], | |
| }, | |
| ]; | |
| } | |