Files
portfolio/constants/projects.ts
T

123 lines
4.5 KiB
TypeScript

export type Screenshot = {
src: string;
alt: string;
};
export type Project = {
/** Route segment — the page lives at /projects/<slug> */
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."],
},
];