export type Screenshot = { src: string; alt: string; }; export type Project = { /** Route segment — the page lives at /projects/ */ slug: string; title: string; year: string; stack: string[]; /** Short summary shown on cards */ description: string; /** Live demo URL */ liveUrl: string; /** Longer write-up for the detail page (one entry per paragraph) */ overview: string[]; screenshots: Screenshot[]; /** What I learned building it */ learned: string[]; /** What I'd do differently next time */ improvements: string[]; }; export const projects: Project[] = [ { slug: "orbit", title: "Orbit", year: "2026", stack: ["Next.js", "TypeScript", "PostgreSQL"], description: "A self-hosted project and ticket management workspace with spaces, pages, and notes.", liveUrl: "https://demo.angelmankel.com/orbit", overview: [ "TODO — what Orbit does and why you built it.", "TODO — the core problem it solves and who it's for.", ], screenshots: [ { src: "https://picsum.photos/seed/orbit1/1200/750", alt: "Orbit board view" }, { src: "https://picsum.photos/seed/orbit2/1200/750", alt: "Orbit ticket detail" }, ], learned: ["TODO — something you learned building this."], improvements: ["TODO — what you'd do differently next time."], }, { slug: "imagelab", title: "ImageLab", year: "2026", stack: ["Next.js", "TypeScript", "WebAssembly"], description: "A browser-based image processing playground for transforms, filters, and batch edits.", liveUrl: "https://demo.angelmankel.com/imagelab", overview: [ "TODO — what ImageLab does and why you built it.", "TODO — the core problem it solves and who it's for.", ], screenshots: [ { src: "https://picsum.photos/seed/imagelab1/1200/750", alt: "ImageLab editor" }, { src: "https://picsum.photos/seed/imagelab2/1200/750", alt: "ImageLab batch view" }, ], learned: ["TODO — something you learned building this."], improvements: ["TODO — what you'd do differently next time."], }, { slug: "league", title: "League of Legends Companion", year: "2026", stack: ["React", "TypeScript", "Riot API"], description: "An app I built for a friend who challenged themselves of reaching a higher rank. Surfaces specific matchup insights and personalized tips based on their match history.", liveUrl: "https://demo.angelmankel.com/league", overview: [ "TODO — what League of Legends Companion does and why you built it.", "TODO — the core problem it solves and who it's for.", ], screenshots: [ { src: "https://picsum.photos/seed/league1/1200/750", alt: "League of Legends Companion overview" }, { src: "https://picsum.photos/seed/league2/1200/750", alt: "League of Legends Companion match detail" }, ], learned: ["TODO — something you learned building this."], improvements: ["TODO — what you'd do differently next time."], }, { slug: "study", title: "Study Time", year: "2026", stack: ["Next.js", "TypeScript", "Tailwind CSS"], description: "A study app I built for those late night study sessions - essentially a free Quizlet", liveUrl: "https://demo.angelmankel.com/study", overview: [ "TODO — what Study Time does and why you built it.", "TODO — the core problem it solves and who it's for.", ], screenshots: [ { src: "https://picsum.photos/seed/study1/1200/750", alt: "Study Time dashboard" }, { src: "https://picsum.photos/seed/study2/1200/750", alt: "Study Time session view" }, ], learned: ["TODO — something you learned building this."], improvements: ["TODO — what you'd do differently next time."], }, { slug: "d2r", title: "Diablo II: Resurrected Tracker", year: "2026", stack: ["React", "TypeScript", "Node.js"], description: "A loot and event tracker for the game Diablo II: Resurrected.", liveUrl: "https://demo.angelmankel.com/d2r", overview: [ "TODO — what Diablo II: Resurrected Tracker does and why you built it.", "TODO — the core problem it solves and who it's for.", ], screenshots: [ { src: "https://picsum.photos/seed/d2r1/1200/750", alt: "D2R Tracker grail view" }, { src: "https://picsum.photos/seed/d2r2/1200/750", alt: "D2R Tracker item log" }, ], learned: ["TODO — something you learned building this."], improvements: ["TODO — what you'd do differently next time."], }, ];