diff --git a/constants/projects.ts b/constants/projects.ts index 75fc022..3d36ece 100644 --- a/constants/projects.ts +++ b/constants/projects.ts @@ -1,44 +1,122 @@ -export const projects = [ +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[] = [ { - title: "Project 1", - year: "2023", - stack: ["React", "Node.js"], - description: "A web application for managing tasks.", - outcome: "Increased productivity by 20%." + 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."], }, { - title: "Project 2", - year: "2023", - stack: ["React", "Node.js"], - description: "A web application for managing tasks.", - outcome: "Increased productivity by 20%." + 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."], }, { - title: "Project 3", - year: "2023", - stack: ["React", "Node.js"], - description: "A web application for managing tasks.", - outcome: "Increased productivity by 20%." + 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."], }, { - title: "Project 4", - year: "2023", - stack: ["React", "Node.js"], - description: "A web application for managing tasks.", - outcome: "Increased productivity by 20%." + 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."], }, + { - title: "Project 5", - year: "2023", - stack: ["React", "Node.js"], - description: "A web application for managing tasks.", - outcome: "Increased productivity by 20%." + 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."], }, - { - title: "Project 6", - year: "2023", - stack: ["React", "Node.js"], - description: "A web application for managing tasks.", - outcome: "Increased productivity by 20%." - } -] \ No newline at end of file +];